Skip to content

ContainerRecipe ​

The ContainerRecipe resource lets you manage AWS ImageBuilder ContainerRecipes for building and customizing container images.

Minimal Example ​

Create a basic container recipe with required properties and a common optional property.

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

const basicContainerRecipe = await AWS.ImageBuilder.ContainerRecipe("myContainerRecipe", {
  parentImage: "my-docker-repo/my-base-image:latest",
  containerType: "DOCKER",
  name: "MyContainerRecipe",
  version: "1.0.0",
  components: [
    {
      type: "BUILD",
      uri: "my-docker-repo/my-component:latest"
    }
  ],
  targetRepository: {
    service: "ECR",
    repository: "my-docker-repo",
    imageTag: "latest"
  }
});

Advanced Configuration ​

Configure a container recipe with additional options such as KMS key for encryption and instance configuration.

ts
const advancedContainerRecipe = await AWS.ImageBuilder.ContainerRecipe("advancedContainerRecipe", {
  parentImage: "my-docker-repo/my-base-image:latest",
  containerType: "DOCKER",
  name: "AdvancedContainerRecipe",
  version: "1.0.1",
  components: [
    {
      type: "BUILD",
      uri: "my-docker-repo/my-component:latest"
    }
  ],
  targetRepository: {
    service: "ECR",
    repository: "my-docker-repo",
    imageTag: "latest"
  },
  kmsKeyId: "arn:aws:kms:us-west-2:123456789012:key/abcd1234-a123-456a-a12b-a123b4cd56ef",
  instanceConfiguration: {
    instanceType: "t2.micro",
    ami: "ami-0abc12345def67890"
  }
});

Using Dockerfile Template ​

Create a container recipe using a Dockerfile template for more complex image builds.

ts
const dockerfileTemplateContainerRecipe = await AWS.ImageBuilder.ContainerRecipe("dockerfileTemplateContainerRecipe", {
  parentImage: "my-docker-repo/my-base-image:latest",
  containerType: "DOCKER",
  name: "DockerfileTemplateContainerRecipe",
  version: "1.0.2",
  components: [
    {
      type: "BUILD",
      uri: "my-docker-repo/my-component:latest"
    }
  ],
  targetRepository: {
    service: "ECR",
    repository: "my-docker-repo",
    imageTag: "latest"
  },
  dockerfileTemplateData: `
    FROM node:14
    COPY . /app
    WORKDIR /app
    RUN npm install
    CMD ["npm", "start"]
  `
});