Skip to content

RepositoryCreationTemplate ​

The RepositoryCreationTemplate resource allows you to define a template for creating Amazon Elastic Container Registry (ECR) repositories. For more detailed information, refer to the AWS ECR RepositoryCreationTemplates documentation.

Minimal Example ​

Create a basic repository creation template with essential properties.

ts
import AWS from "alchemy/aws/control";

const basicTemplate = await AWS.ECR.RepositoryCreationTemplate("basicTemplate", {
  AppliedFor: ["teamA", "teamB"],
  Prefix: "my-app",
  Description: "Template for my application repositories",
  ImageTagMutability: "MUTABLE"
});

Advanced Configuration ​

Configure a repository creation template with enhanced security settings and lifecycle policies.

ts
const advancedTemplate = await AWS.ECR.RepositoryCreationTemplate("advancedTemplate", {
  AppliedFor: ["teamC"],
  Prefix: "secure-app",
  Description: "Template for secure application repositories",
  ImageTagMutability: "IMMUTABLE",
  LifecyclePolicy: JSON.stringify({
    rules: [
      {
        rulePriority: 1,
        selectionCriteria: {
          tagStatus: "ANY"
        },
        action: {
          type: "EXPIRY",
          expiry: { days: 30 }
        }
      }
    ]
  }),
  ResourceTags: [
    { Key: "Environment", Value: "Production" },
    { Key: "Owner", Value: "TeamC" }
  ]
});

Custom Role and Encryption Configuration ​

Define a repository creation template that specifies a custom IAM role and encryption configuration.

ts
const secureTemplate = await AWS.ECR.RepositoryCreationTemplate("secureTemplate", {
  AppliedFor: ["teamD"],
  Prefix: "encrypted-app",
  Description: "Template for encrypted application repositories",
  CustomRoleArn: "arn:aws:iam::123456789012:role/MyECRRole",
  EncryptionConfiguration: {
    EncryptionType: "AES256"
  }
});

Policy and Additional Tags ​

Create a template that includes a repository policy and additional resource tags.

ts
const policyTemplate = await AWS.ECR.RepositoryCreationTemplate("policyTemplate", {
  AppliedFor: ["teamE"],
  Prefix: "policy-app",
  Description: "Template for repositories with policies",
  RepositoryPolicy: JSON.stringify({
    Version: "2012-10-17",
    Statement: [
      {
        Sid: "AllowPull",
        Effect: "Allow",
        Principal: {
          AWS: "arn:aws:iam::123456789012:role/MyPullRole"
        },
        Action: "ecr:BatchGetImage"
      }
    ]
  }),
  ResourceTags: [
    { Key: "Project", Value: "PolicyProject" },
    { Key: "Department", Value: "Engineering" }
  ]
});