Skip to content

Repository ​

The Repository resource lets you manage AWS ECR Repositories for storing and managing Docker container images.

Minimal Example ​

Create a basic ECR repository with default settings:

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

const ecrRepository = await AWS.ECR.Repository("myEcrRepository", {
  repositoryName: "my-docker-repo",
  imageTagMutability: "MUTABLE",
  tags: [
    { key: "Environment", value: "Development" }
  ]
});

Advanced Configuration ​

Configure an ECR repository with image scanning and encryption settings:

ts
const secureEcrRepository = await AWS.ECR.Repository("secureEcrRepository", {
  repositoryName: "secure-docker-repo",
  imageTagMutability: "IMMUTABLE",
  imageScanningConfiguration: {
    scanOnPush: true
  },
  encryptionConfiguration: {
    encryptionType: "AES256"
  },
  lifecyclePolicy: {
    rules: [
      {
        rulePriority: 1,
        selectionTag: { key: "Environment", value: "Staging" },
        action: { type: "expire" },
        expirationInDays: 30
      }
    ]
  },
  tags: [
    { key: "Environment", value: "Staging" }
  ]
});

Repository Policy ​

Set a repository policy to control access permissions:

ts
const policyEcrRepository = await AWS.ECR.Repository("policyEcrRepository", {
  repositoryName: "policy-docker-repo",
  repositoryPolicyText: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Principal: { AWS: "arn:aws:iam::123456789012:role/myECRRole" },
        Action: "ecr:BatchCheckLayerAvailability"
      }
    ]
  }
});

Empty on Delete ​

Create a repository that empties its contents upon deletion:

ts
const emptyOnDeleteEcrRepository = await AWS.ECR.Repository("emptyOnDeleteEcrRepository", {
  repositoryName: "empty-repo",
  emptyOnDelete: true,
  tags: [
    { key: "Environment", value: "Production" }
  ]
});