1. Packages
  2. Packages
  3. AWS
  4. API Docs
  5. ecr
  6. LifecyclePolicy
Viewing docs for AWS v7.28.0
published on Thursday, Apr 30, 2026 by Pulumi
aws logo
Viewing docs for AWS v7.28.0
published on Thursday, Apr 30, 2026 by Pulumi

    Manages an ECR repository lifecycle policy.

    NOTE: Only one aws.ecr.LifecyclePolicy resource can be used with the same ECR repository. To apply multiple rules, they must be combined in the policy JSON.

    NOTE: The AWS ECR API seems to reorder rules based on rulePriority. If you define multiple rules that are not sorted in ascending rulePriority order in the this provider code, the resource will be flagged for recreation every deployment.

    Example Usage

    Policy on Untagged Images

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.ecr.Repository("example", {name: "example-repo"});
    const exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy("example", {
        repository: example.name,
        policy: `{
      \\"rules\\": [
        {
          \\"rulePriority\\": 1,
          \\"description\\": \\"Expire images older than 14 days\\",
          \\"selection\\": {
            \\"tagStatus\\": \\"untagged\\",
            \\"countType\\": \\"sinceImagePushed\\",
            \\"countUnit\\": \\"days\\",
            \\"countNumber\\": 14
          },
          \\"action\\": {
            \\"type\\": \\"expire\\"
          }
        }
      ]
    }
    `,
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.ecr.Repository("example", name="example-repo")
    example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
        repository=example.name,
        policy="""{
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Expire images older than 14 days\",
          \"selection\": {
            \"tagStatus\": \"untagged\",
            \"countType\": \"sinceImagePushed\",
            \"countUnit\": \"days\",
            \"countNumber\": 14
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
    """)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := ecr.NewRepository(ctx, "example", &ecr.RepositoryArgs{
    			Name: pulumi.String("example-repo"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = ecr.NewLifecyclePolicy(ctx, "example", &ecr.LifecyclePolicyArgs{
    			Repository: example.Name,
    			Policy: pulumi.Any(`{
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Expire images older than 14 days\",
          \"selection\": {
            \"tagStatus\": \"untagged\",
            \"countType\": \"sinceImagePushed\",
            \"countUnit\": \"days\",
            \"countNumber\": 14
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.Ecr.Repository("example", new()
        {
            Name = "example-repo",
        });
    
        var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy("example", new()
        {
            Repository = example.Name,
            Policy = @"{
      \""rules\"": [
        {
          \""rulePriority\"": 1,
          \""description\"": \""Expire images older than 14 days\"",
          \""selection\"": {
            \""tagStatus\"": \""untagged\"",
            \""countType\"": \""sinceImagePushed\"",
            \""countUnit\"": \""days\"",
            \""countNumber\"": 14
          },
          \""action\"": {
            \""type\"": \""expire\""
          }
        }
      ]
    }
    ",
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.ecr.Repository;
    import com.pulumi.aws.ecr.RepositoryArgs;
    import com.pulumi.aws.ecr.LifecyclePolicy;
    import com.pulumi.aws.ecr.LifecyclePolicyArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Repository("example", RepositoryArgs.builder()
                .name("example-repo")
                .build());
    
            var exampleLifecyclePolicy = new LifecyclePolicy("exampleLifecyclePolicy", LifecyclePolicyArgs.builder()
                .repository(example.name())
                .policy("""
    {
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Expire images older than 14 days\",
          \"selection\": {
            \"tagStatus\": \"untagged\",
            \"countType\": \"sinceImagePushed\",
            \"countUnit\": \"days\",
            \"countNumber\": 14
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
                """)
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:ecr:Repository
        properties:
          name: example-repo
      exampleLifecyclePolicy:
        type: aws:ecr:LifecyclePolicy
        name: example
        properties:
          repository: ${example.name}
          policy: |
            {
              \"rules\": [
                {
                  \"rulePriority\": 1,
                  \"description\": \"Expire images older than 14 days\",
                  \"selection\": {
                    \"tagStatus\": \"untagged\",
                    \"countType\": \"sinceImagePushed\",
                    \"countUnit\": \"days\",
                    \"countNumber\": 14
                  },
                  \"action\": {
                    \"type\": \"expire\"
                  }
                }
              ]
            }
    

    Policy on Tagged Images

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.ecr.Repository("example", {name: "example-repo"});
    const exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy("example", {
        repository: example.name,
        policy: `{
      \\"rules\\": [
        {
          \\"rulePriority\\": 1,
          \\"description\\": \\"Keep last 30 images\\",
          \\"selection\\": {
            \\"tagStatus\\": \\"tagged\\",
            \\"tagPrefixList\\": [\\"v\\"],
            \\"countType\\": \\"imageCountMoreThan\\",
            \\"countNumber\\": 30
          },
          \\"action\\": {
            \\"type\\": \\"expire\\"
          }
        }
      ]
    }
    `,
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.ecr.Repository("example", name="example-repo")
    example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
        repository=example.name,
        policy="""{
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Keep last 30 images\",
          \"selection\": {
            \"tagStatus\": \"tagged\",
            \"tagPrefixList\": [\"v\"],
            \"countType\": \"imageCountMoreThan\",
            \"countNumber\": 30
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
    """)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := ecr.NewRepository(ctx, "example", &ecr.RepositoryArgs{
    			Name: pulumi.String("example-repo"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = ecr.NewLifecyclePolicy(ctx, "example", &ecr.LifecyclePolicyArgs{
    			Repository: example.Name,
    			Policy: pulumi.Any(`{
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Keep last 30 images\",
          \"selection\": {
            \"tagStatus\": \"tagged\",
            \"tagPrefixList\": [\"v\"],
            \"countType\": \"imageCountMoreThan\",
            \"countNumber\": 30
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.Ecr.Repository("example", new()
        {
            Name = "example-repo",
        });
    
        var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy("example", new()
        {
            Repository = example.Name,
            Policy = @"{
      \""rules\"": [
        {
          \""rulePriority\"": 1,
          \""description\"": \""Keep last 30 images\"",
          \""selection\"": {
            \""tagStatus\"": \""tagged\"",
            \""tagPrefixList\"": [\""v\""],
            \""countType\"": \""imageCountMoreThan\"",
            \""countNumber\"": 30
          },
          \""action\"": {
            \""type\"": \""expire\""
          }
        }
      ]
    }
    ",
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.ecr.Repository;
    import com.pulumi.aws.ecr.RepositoryArgs;
    import com.pulumi.aws.ecr.LifecyclePolicy;
    import com.pulumi.aws.ecr.LifecyclePolicyArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Repository("example", RepositoryArgs.builder()
                .name("example-repo")
                .build());
    
            var exampleLifecyclePolicy = new LifecyclePolicy("exampleLifecyclePolicy", LifecyclePolicyArgs.builder()
                .repository(example.name())
                .policy("""
    {
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Keep last 30 images\",
          \"selection\": {
            \"tagStatus\": \"tagged\",
            \"tagPrefixList\": [\"v\"],
            \"countType\": \"imageCountMoreThan\",
            \"countNumber\": 30
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
                """)
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:ecr:Repository
        properties:
          name: example-repo
      exampleLifecyclePolicy:
        type: aws:ecr:LifecyclePolicy
        name: example
        properties:
          repository: ${example.name}
          policy: |
            {
              \"rules\": [
                {
                  \"rulePriority\": 1,
                  \"description\": \"Keep last 30 images\",
                  \"selection\": {
                    \"tagStatus\": \"tagged\",
                    \"tagPrefixList\": [\"v\"],
                    \"countType\": \"imageCountMoreThan\",
                    \"countNumber\": 30
                  },
                  \"action\": {
                    \"type\": \"expire\"
                  }
                }
              ]
            }
    

    Policy to Archive and Delete

    import * as pulumi from "@pulumi/pulumi";
    import * as aws from "@pulumi/aws";
    
    const example = new aws.ecr.Repository("example", {name: "example-repo"});
    const exampleLifecyclePolicy = new aws.ecr.LifecyclePolicy("example", {
        repository: example.name,
        policy: `{
      \\"rules\\": [
        {
          \\"rulePriority\\": 1,
          \\"description\\": \\"Archive images not pulled in 90 days\\",
          \\"selection\\": {
            \\"tagStatus\\": \\"any\\",
            \\"countType\\": \\"sinceImagePulled\\",
            \\"countUnit\\": \\"days\\",
            \\"countNumber\\": 90
          },
          \\"action\\": {
            \\"type\\": \\"transition\\",
            \\"targetStorageClass\\": \\"archive\\"
          }
        },
        {
          \\"rulePriority\\": 2,
          \\"description\\": \\"Delete images archived for more than 365 days\\",
          \\"selection\\": {
            \\"tagStatus\\": \\"any\\",
            \\"storageClass\\": \\"archive\\",
            \\"countType\\": \\"sinceImageTransitioned\\",
            \\"countUnit\\": \\"days\\",
            \\"countNumber\\": 365
          },
          \\"action\\": {
            \\"type\\": \\"expire\\"
          }
        }
      ]
    }
    `,
    });
    
    import pulumi
    import pulumi_aws as aws
    
    example = aws.ecr.Repository("example", name="example-repo")
    example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
        repository=example.name,
        policy="""{
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Archive images not pulled in 90 days\",
          \"selection\": {
            \"tagStatus\": \"any\",
            \"countType\": \"sinceImagePulled\",
            \"countUnit\": \"days\",
            \"countNumber\": 90
          },
          \"action\": {
            \"type\": \"transition\",
            \"targetStorageClass\": \"archive\"
          }
        },
        {
          \"rulePriority\": 2,
          \"description\": \"Delete images archived for more than 365 days\",
          \"selection\": {
            \"tagStatus\": \"any\",
            \"storageClass\": \"archive\",
            \"countType\": \"sinceImageTransitioned\",
            \"countUnit\": \"days\",
            \"countNumber\": 365
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
    """)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/ecr"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		example, err := ecr.NewRepository(ctx, "example", &ecr.RepositoryArgs{
    			Name: pulumi.String("example-repo"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = ecr.NewLifecyclePolicy(ctx, "example", &ecr.LifecyclePolicyArgs{
    			Repository: example.Name,
    			Policy: pulumi.Any(`{
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Archive images not pulled in 90 days\",
          \"selection\": {
            \"tagStatus\": \"any\",
            \"countType\": \"sinceImagePulled\",
            \"countUnit\": \"days\",
            \"countNumber\": 90
          },
          \"action\": {
            \"type\": \"transition\",
            \"targetStorageClass\": \"archive\"
          }
        },
        {
          \"rulePriority\": 2,
          \"description\": \"Delete images archived for more than 365 days\",
          \"selection\": {
            \"tagStatus\": \"any\",
            \"storageClass\": \"archive\",
            \"countType\": \"sinceImageTransitioned\",
            \"countUnit\": \"days\",
            \"countNumber\": 365
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
    `),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Aws.Ecr.Repository("example", new()
        {
            Name = "example-repo",
        });
    
        var exampleLifecyclePolicy = new Aws.Ecr.LifecyclePolicy("example", new()
        {
            Repository = example.Name,
            Policy = @"{
      \""rules\"": [
        {
          \""rulePriority\"": 1,
          \""description\"": \""Archive images not pulled in 90 days\"",
          \""selection\"": {
            \""tagStatus\"": \""any\"",
            \""countType\"": \""sinceImagePulled\"",
            \""countUnit\"": \""days\"",
            \""countNumber\"": 90
          },
          \""action\"": {
            \""type\"": \""transition\"",
            \""targetStorageClass\"": \""archive\""
          }
        },
        {
          \""rulePriority\"": 2,
          \""description\"": \""Delete images archived for more than 365 days\"",
          \""selection\"": {
            \""tagStatus\"": \""any\"",
            \""storageClass\"": \""archive\"",
            \""countType\"": \""sinceImageTransitioned\"",
            \""countUnit\"": \""days\"",
            \""countNumber\"": 365
          },
          \""action\"": {
            \""type\"": \""expire\""
          }
        }
      ]
    }
    ",
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.ecr.Repository;
    import com.pulumi.aws.ecr.RepositoryArgs;
    import com.pulumi.aws.ecr.LifecyclePolicy;
    import com.pulumi.aws.ecr.LifecyclePolicyArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var example = new Repository("example", RepositoryArgs.builder()
                .name("example-repo")
                .build());
    
            var exampleLifecyclePolicy = new LifecyclePolicy("exampleLifecyclePolicy", LifecyclePolicyArgs.builder()
                .repository(example.name())
                .policy("""
    {
      \"rules\": [
        {
          \"rulePriority\": 1,
          \"description\": \"Archive images not pulled in 90 days\",
          \"selection\": {
            \"tagStatus\": \"any\",
            \"countType\": \"sinceImagePulled\",
            \"countUnit\": \"days\",
            \"countNumber\": 90
          },
          \"action\": {
            \"type\": \"transition\",
            \"targetStorageClass\": \"archive\"
          }
        },
        {
          \"rulePriority\": 2,
          \"description\": \"Delete images archived for more than 365 days\",
          \"selection\": {
            \"tagStatus\": \"any\",
            \"storageClass\": \"archive\",
            \"countType\": \"sinceImageTransitioned\",
            \"countUnit\": \"days\",
            \"countNumber\": 365
          },
          \"action\": {
            \"type\": \"expire\"
          }
        }
      ]
    }
                """)
                .build());
    
        }
    }
    
    resources:
      example:
        type: aws:ecr:Repository
        properties:
          name: example-repo
      exampleLifecyclePolicy:
        type: aws:ecr:LifecyclePolicy
        name: example
        properties:
          repository: ${example.name}
          policy: |
            {
              \"rules\": [
                {
                  \"rulePriority\": 1,
                  \"description\": \"Archive images not pulled in 90 days\",
                  \"selection\": {
                    \"tagStatus\": \"any\",
                    \"countType\": \"sinceImagePulled\",
                    \"countUnit\": \"days\",
                    \"countNumber\": 90
                  },
                  \"action\": {
                    \"type\": \"transition\",
                    \"targetStorageClass\": \"archive\"
                  }
                },
                {
                  \"rulePriority\": 2,
                  \"description\": \"Delete images archived for more than 365 days\",
                  \"selection\": {
                    \"tagStatus\": \"any\",
                    \"storageClass\": \"archive\",
                    \"countType\": \"sinceImageTransitioned\",
                    \"countUnit\": \"days\",
                    \"countNumber\": 365
                  },
                  \"action\": {
                    \"type\": \"expire\"
                  }
                }
              ]
            }
    

    Create LifecyclePolicy Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new LifecyclePolicy(name: string, args: LifecyclePolicyArgs, opts?: CustomResourceOptions);
    @overload
    def LifecyclePolicy(resource_name: str,
                        args: LifecyclePolicyArgs,
                        opts: Optional[ResourceOptions] = None)
    
    @overload
    def LifecyclePolicy(resource_name: str,
                        opts: Optional[ResourceOptions] = None,
                        policy: Optional[Union[str, LifecyclePolicyDocumentArgs]] = None,
                        repository: Optional[str] = None,
                        region: Optional[str] = None)
    func NewLifecyclePolicy(ctx *Context, name string, args LifecyclePolicyArgs, opts ...ResourceOption) (*LifecyclePolicy, error)
    public LifecyclePolicy(string name, LifecyclePolicyArgs args, CustomResourceOptions? opts = null)
    public LifecyclePolicy(String name, LifecyclePolicyArgs args)
    public LifecyclePolicy(String name, LifecyclePolicyArgs args, CustomResourceOptions options)
    
    type: aws:ecr:LifecyclePolicy
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args LifecyclePolicyArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args LifecyclePolicyArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args LifecyclePolicyArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args LifecyclePolicyArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args LifecyclePolicyArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var awsLifecyclePolicyResource = new Aws.Ecr.LifecyclePolicy("awsLifecyclePolicyResource", new()
    {
        Policy = "string",
        Repository = "string",
        Region = "string",
    });
    
    example, err := ecr.NewLifecyclePolicy(ctx, "awsLifecyclePolicyResource", &ecr.LifecyclePolicyArgs{
    	Policy:     pulumi.Any("string"),
    	Repository: pulumi.String("string"),
    	Region:     pulumi.String("string"),
    })
    
    var awsLifecyclePolicyResource = new com.pulumi.aws.ecr.LifecyclePolicy("awsLifecyclePolicyResource", com.pulumi.aws.ecr.LifecyclePolicyArgs.builder()
        .policy("string")
        .repository("string")
        .region("string")
        .build());
    
    aws_lifecycle_policy_resource = aws.ecr.LifecyclePolicy("awsLifecyclePolicyResource",
        policy="string",
        repository="string",
        region="string")
    
    const awsLifecyclePolicyResource = new aws.ecr.LifecyclePolicy("awsLifecyclePolicyResource", {
        policy: "string",
        repository: "string",
        region: "string",
    });
    
    type: aws:ecr:LifecyclePolicy
    properties:
        policy: string
        region: string
        repository: string
    

    LifecyclePolicy Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The LifecyclePolicy resource accepts the following input properties:

    Policy string | LifecyclePolicyDocument
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    Repository string
    Name of the repository to apply the policy.
    Region string
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    Policy string | LifecyclePolicyDocumentArgs
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    Repository string
    Name of the repository to apply the policy.
    Region string
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    policy String | LifecyclePolicyDocument
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    repository String
    Name of the repository to apply the policy.
    region String
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    policy string | LifecyclePolicyDocument
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    repository string
    Name of the repository to apply the policy.
    region string
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    policy str | LifecyclePolicyDocumentArgs
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    repository str
    Name of the repository to apply the policy.
    region str
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    policy String | Property Map
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    repository String
    Name of the repository to apply the policy.
    region String
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the LifecyclePolicy resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    RegistryId string
    The registry ID where the repository was created.
    Id string
    The provider-assigned unique ID for this managed resource.
    RegistryId string
    The registry ID where the repository was created.
    id String
    The provider-assigned unique ID for this managed resource.
    registryId String
    The registry ID where the repository was created.
    id string
    The provider-assigned unique ID for this managed resource.
    registryId string
    The registry ID where the repository was created.
    id str
    The provider-assigned unique ID for this managed resource.
    registry_id str
    The registry ID where the repository was created.
    id String
    The provider-assigned unique ID for this managed resource.
    registryId String
    The registry ID where the repository was created.

    Look up Existing LifecyclePolicy Resource

    Get an existing LifecyclePolicy resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: LifecyclePolicyState, opts?: CustomResourceOptions): LifecyclePolicy
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            policy: Optional[Union[str, LifecyclePolicyDocumentArgs]] = None,
            region: Optional[str] = None,
            registry_id: Optional[str] = None,
            repository: Optional[str] = None) -> LifecyclePolicy
    func GetLifecyclePolicy(ctx *Context, name string, id IDInput, state *LifecyclePolicyState, opts ...ResourceOption) (*LifecyclePolicy, error)
    public static LifecyclePolicy Get(string name, Input<string> id, LifecyclePolicyState? state, CustomResourceOptions? opts = null)
    public static LifecyclePolicy get(String name, Output<String> id, LifecyclePolicyState state, CustomResourceOptions options)
    resources:  _:    type: aws:ecr:LifecyclePolicy    get:      id: ${id}
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    Policy string | LifecyclePolicyDocument
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    Region string
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    RegistryId string
    The registry ID where the repository was created.
    Repository string
    Name of the repository to apply the policy.
    Policy string | LifecyclePolicyDocumentArgs
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    Region string
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    RegistryId string
    The registry ID where the repository was created.
    Repository string
    Name of the repository to apply the policy.
    policy String | LifecyclePolicyDocument
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    region String
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    registryId String
    The registry ID where the repository was created.
    repository String
    Name of the repository to apply the policy.
    policy string | LifecyclePolicyDocument
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    region string
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    registryId string
    The registry ID where the repository was created.
    repository string
    Name of the repository to apply the policy.
    policy str | LifecyclePolicyDocumentArgs
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    region str
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    registry_id str
    The registry ID where the repository was created.
    repository str
    Name of the repository to apply the policy.
    policy String | Property Map
    The policy document. This is a JSON formatted string. See more details about Policy Parameters in the official AWS docs. Consider using the aws.ecr.getLifecyclePolicyDocument dataSource to generate/manage the JSON document used for the policy argument.
    region String
    Region where this resource will be managed. Defaults to the Region set in the provider configuration.
    registryId String
    The registry ID where the repository was created.
    repository String
    Name of the repository to apply the policy.

    Supporting Types

    LifecyclePolicyAction, LifecyclePolicyActionArgs

    Type string | Pulumi.Aws.Ecr.LifecyclePolicyActionType
    The type of action to take. Either 'expire' or 'transition'.
    TargetStorageClass string
    The storage class to transition the image to. Required when 'type' is 'transition'. 'archive' is the only supported value.
    Type string | LifecyclePolicyActionType
    The type of action to take. Either 'expire' or 'transition'.
    TargetStorageClass string
    The storage class to transition the image to. Required when 'type' is 'transition'. 'archive' is the only supported value.
    type String | LifecyclePolicyActionType
    The type of action to take. Either 'expire' or 'transition'.
    targetStorageClass String
    The storage class to transition the image to. Required when 'type' is 'transition'. 'archive' is the only supported value.
    type string | LifecyclePolicyActionType
    The type of action to take. Either 'expire' or 'transition'.
    targetStorageClass string
    The storage class to transition the image to. Required when 'type' is 'transition'. 'archive' is the only supported value.
    type str | LifecyclePolicyActionType
    The type of action to take. Either 'expire' or 'transition'.
    target_storage_class str
    The storage class to transition the image to. Required when 'type' is 'transition'. 'archive' is the only supported value.
    type String | "expire" | "transition"
    The type of action to take. Either 'expire' or 'transition'.
    targetStorageClass String
    The storage class to transition the image to. Required when 'type' is 'transition'. 'archive' is the only supported value.

    LifecyclePolicyActionType, LifecyclePolicyActionTypeArgs

    Expire
    expire
    Transition
    transition
    LifecyclePolicyActionTypeExpire
    expire
    LifecyclePolicyActionTypeTransition
    transition
    Expire
    expire
    Transition
    transition
    Expire
    expire
    Transition
    transition
    EXPIRE
    expire
    TRANSITION
    transition
    "expire"
    expire
    "transition"
    transition

    LifecyclePolicyCountType, LifecyclePolicyCountTypeArgs

    ImageCountMoreThan
    imageCountMoreThan
    SinceImagePushed
    sinceImagePushed
    SinceImagePulled
    sinceImagePulled
    SinceImageTransitioned
    sinceImageTransitioned
    LifecyclePolicyCountTypeImageCountMoreThan
    imageCountMoreThan
    LifecyclePolicyCountTypeSinceImagePushed
    sinceImagePushed
    LifecyclePolicyCountTypeSinceImagePulled
    sinceImagePulled
    LifecyclePolicyCountTypeSinceImageTransitioned
    sinceImageTransitioned
    ImageCountMoreThan
    imageCountMoreThan
    SinceImagePushed
    sinceImagePushed
    SinceImagePulled
    sinceImagePulled
    SinceImageTransitioned
    sinceImageTransitioned
    ImageCountMoreThan
    imageCountMoreThan
    SinceImagePushed
    sinceImagePushed
    SinceImagePulled
    sinceImagePulled
    SinceImageTransitioned
    sinceImageTransitioned
    IMAGE_COUNT_MORE_THAN
    imageCountMoreThan
    SINCE_IMAGE_PUSHED
    sinceImagePushed
    SINCE_IMAGE_PULLED
    sinceImagePulled
    SINCE_IMAGE_TRANSITIONED
    sinceImageTransitioned
    "imageCountMoreThan"
    imageCountMoreThan
    "sinceImagePushed"
    sinceImagePushed
    "sinceImagePulled"
    sinceImagePulled
    "sinceImageTransitioned"
    sinceImageTransitioned

    LifecyclePolicyDocument, LifecyclePolicyDocumentArgs

    Represents an ECR lifecycle policy document.
    Rules List<LifecyclePolicyRule>
    The rules that comprise the lifecycle policy.
    Rules []LifecyclePolicyRule
    The rules that comprise the lifecycle policy.
    rules List<LifecyclePolicyRule>
    The rules that comprise the lifecycle policy.
    rules LifecyclePolicyRule[]
    The rules that comprise the lifecycle policy.
    rules Sequence[LifecyclePolicyRule]
    The rules that comprise the lifecycle policy.
    rules List<Property Map>
    The rules that comprise the lifecycle policy.

    LifecyclePolicyRule, LifecyclePolicyRuleArgs

    Represents a rule in an ECR lifecycle policy.
    Action LifecyclePolicyAction
    The action to take when the rule is triggered.
    RulePriority int
    The priority of the rule, must be unique within the policy.
    Selection LifecyclePolicySelection
    The selection criteria for the rule.
    Description string
    A description of the rule.
    Action LifecyclePolicyAction
    The action to take when the rule is triggered.
    RulePriority int
    The priority of the rule, must be unique within the policy.
    Selection LifecyclePolicySelection
    The selection criteria for the rule.
    Description string
    A description of the rule.
    action LifecyclePolicyAction
    The action to take when the rule is triggered.
    rulePriority Integer
    The priority of the rule, must be unique within the policy.
    selection LifecyclePolicySelection
    The selection criteria for the rule.
    description String
    A description of the rule.
    action LifecyclePolicyAction
    The action to take when the rule is triggered.
    rulePriority number
    The priority of the rule, must be unique within the policy.
    selection LifecyclePolicySelection
    The selection criteria for the rule.
    description string
    A description of the rule.
    action LifecyclePolicyAction
    The action to take when the rule is triggered.
    rule_priority int
    The priority of the rule, must be unique within the policy.
    selection LifecyclePolicySelection
    The selection criteria for the rule.
    description str
    A description of the rule.
    action Property Map
    The action to take when the rule is triggered.
    rulePriority Number
    The priority of the rule, must be unique within the policy.
    selection Property Map
    The selection criteria for the rule.
    description String
    A description of the rule.

    LifecyclePolicySelection, LifecyclePolicySelectionArgs

    Represents selection criteria for an ECR lifecycle policy rule.
    CountNumber int
    The count number to use with the count type.
    CountType string | Pulumi.Aws.Ecr.LifecyclePolicyCountType
    The type of count to perform. Either 'imageCountMoreThan', 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'.
    TagStatus string | Pulumi.Aws.Ecr.LifecyclePolicyTagStatus
    The tag status of the image. Either 'tagged', 'untagged', or 'any'.
    CountUnit string
    The unit of time for count types based on image age. Required when 'countType' is 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'. The only supported value is 'days'.
    StorageClass string
    The image storage class to select. Required when 'countType' is 'sinceImageTransitioned' (must be 'archive'). For 'imageCountMoreThan', 'sinceImagePushed', and 'sinceImagePulled', the only supported value is 'standard'. If omitted, ECR uses 'standard'.
    TagPrefixList List<string>
    A list of image tag prefixes on which to take action.
    CountNumber int
    The count number to use with the count type.
    CountType string | LifecyclePolicyCountType
    The type of count to perform. Either 'imageCountMoreThan', 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'.
    TagStatus string | LifecyclePolicyTagStatus
    The tag status of the image. Either 'tagged', 'untagged', or 'any'.
    CountUnit string
    The unit of time for count types based on image age. Required when 'countType' is 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'. The only supported value is 'days'.
    StorageClass string
    The image storage class to select. Required when 'countType' is 'sinceImageTransitioned' (must be 'archive'). For 'imageCountMoreThan', 'sinceImagePushed', and 'sinceImagePulled', the only supported value is 'standard'. If omitted, ECR uses 'standard'.
    TagPrefixList []string
    A list of image tag prefixes on which to take action.
    countNumber Integer
    The count number to use with the count type.
    countType String | LifecyclePolicyCountType
    The type of count to perform. Either 'imageCountMoreThan', 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'.
    tagStatus String | LifecyclePolicyTagStatus
    The tag status of the image. Either 'tagged', 'untagged', or 'any'.
    countUnit String
    The unit of time for count types based on image age. Required when 'countType' is 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'. The only supported value is 'days'.
    storageClass String
    The image storage class to select. Required when 'countType' is 'sinceImageTransitioned' (must be 'archive'). For 'imageCountMoreThan', 'sinceImagePushed', and 'sinceImagePulled', the only supported value is 'standard'. If omitted, ECR uses 'standard'.
    tagPrefixList List<String>
    A list of image tag prefixes on which to take action.
    countNumber number
    The count number to use with the count type.
    countType string | LifecyclePolicyCountType
    The type of count to perform. Either 'imageCountMoreThan', 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'.
    tagStatus string | LifecyclePolicyTagStatus
    The tag status of the image. Either 'tagged', 'untagged', or 'any'.
    countUnit string
    The unit of time for count types based on image age. Required when 'countType' is 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'. The only supported value is 'days'.
    storageClass string
    The image storage class to select. Required when 'countType' is 'sinceImageTransitioned' (must be 'archive'). For 'imageCountMoreThan', 'sinceImagePushed', and 'sinceImagePulled', the only supported value is 'standard'. If omitted, ECR uses 'standard'.
    tagPrefixList string[]
    A list of image tag prefixes on which to take action.
    count_number int
    The count number to use with the count type.
    count_type str | LifecyclePolicyCountType
    The type of count to perform. Either 'imageCountMoreThan', 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'.
    tag_status str | LifecyclePolicyTagStatus
    The tag status of the image. Either 'tagged', 'untagged', or 'any'.
    count_unit str
    The unit of time for count types based on image age. Required when 'countType' is 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'. The only supported value is 'days'.
    storage_class str
    The image storage class to select. Required when 'countType' is 'sinceImageTransitioned' (must be 'archive'). For 'imageCountMoreThan', 'sinceImagePushed', and 'sinceImagePulled', the only supported value is 'standard'. If omitted, ECR uses 'standard'.
    tag_prefix_list Sequence[str]
    A list of image tag prefixes on which to take action.
    countNumber Number
    The count number to use with the count type.
    countType String | "imageCountMoreThan" | "sinceImagePushed" | "sinceImagePulled" | "sinceImageTransitioned"
    The type of count to perform. Either 'imageCountMoreThan', 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'.
    tagStatus String | "tagged" | "untagged" | "any"
    The tag status of the image. Either 'tagged', 'untagged', or 'any'.
    countUnit String
    The unit of time for count types based on image age. Required when 'countType' is 'sinceImagePushed', 'sinceImagePulled', or 'sinceImageTransitioned'. The only supported value is 'days'.
    storageClass String
    The image storage class to select. Required when 'countType' is 'sinceImageTransitioned' (must be 'archive'). For 'imageCountMoreThan', 'sinceImagePushed', and 'sinceImagePulled', the only supported value is 'standard'. If omitted, ECR uses 'standard'.
    tagPrefixList List<String>
    A list of image tag prefixes on which to take action.

    LifecyclePolicyTagStatus, LifecyclePolicyTagStatusArgs

    Tagged
    tagged
    Untagged
    untagged
    Any
    any
    LifecyclePolicyTagStatusTagged
    tagged
    LifecyclePolicyTagStatusUntagged
    untagged
    LifecyclePolicyTagStatusAny
    any
    Tagged
    tagged
    Untagged
    untagged
    Any
    any
    Tagged
    tagged
    Untagged
    untagged
    Any
    any
    TAGGED
    tagged
    UNTAGGED
    untagged
    ANY
    any
    "tagged"
    tagged
    "untagged"
    untagged
    "any"
    any

    Import

    Identity Schema

    Required

    • repository - (String) Name of the ECR repository.

    Optional

    • accountId (String) AWS Account where this resource is managed.
    • region (String) Region where this resource is managed.

    Using pulumi import, import ECR Lifecycle Policy using the name of the repository. For example:

    $ pulumi import aws:ecr/lifecyclePolicy:LifecyclePolicy example tf-example
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    AWS Classic pulumi/pulumi-aws
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the aws Terraform Provider.
    aws logo
    Viewing docs for AWS v7.28.0
    published on Thursday, Apr 30, 2026 by Pulumi
      Try Pulumi Cloud free. Your team will thank you.