Skip to content
v2.276.0

Experimental

@aws-cdk/aws-imagebuilder-alpha is an experimental (alpha) package: its API may change in any release, without a major version bump.

ContainerInstanceImage Class ​

Represents a container instance image that is used to launch the instance used for building the container for an EC2 Image Builder container build.

Example ​

ts
const containerRecipe = new imagebuilder.ContainerRecipe(this, 'InstanceConfigContainerRecipe', {
  baseImage: imagebuilder.BaseContainerImage.fromDockerHub('amazonlinux', 'latest'),
  targetRepository: imagebuilder.Repository.fromEcr(
    ecr.Repository.fromRepositoryName(this, 'Repository', 'my-container-repo')
  ),
  // Custom ECS-optimized AMI for building
  instanceImage: imagebuilder.ContainerInstanceImage.fromSsmParameterName(
    '/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id'
  ),
  // Additional storage for build process
  instanceBlockDevices: [
    {
      deviceName: '/dev/xvda',
      volume: ec2.BlockDeviceVolume.ebs(50, {
        encrypted: true,
        volumeType: ec2.EbsDeviceVolumeType.GENERAL_PURPOSE_SSD_GP3
      })
    }
  ]
});
python
container_recipe = imagebuilder.ContainerRecipe(self, "InstanceConfigContainerRecipe",
    base_image=imagebuilder.BaseContainerImage.from_docker_hub("amazonlinux", "latest"),
    target_repository=imagebuilder.Repository.from_ecr(
        ecr.Repository.from_repository_name(self, "Repository", "my-container-repo")),
    # Custom ECS-optimized AMI for building
    instance_image=imagebuilder.ContainerInstanceImage.from_ssm_parameter_name("/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id"),
    # Additional storage for build process
    instance_block_devices=[ec2.BlockDevice(
        device_name="/dev/xvda",
        volume=ec2.BlockDeviceVolume.ebs(50,
            encrypted=True,
            volume_type=ec2.EbsDeviceVolumeType.GENERAL_PURPOSE_SSD_GP3
        )
    )
    ]
)
java
ContainerRecipe containerRecipe = ContainerRecipe.Builder.create(this, "InstanceConfigContainerRecipe")
        .baseImage(BaseContainerImage.fromDockerHub("amazonlinux", "latest"))
        .targetRepository(Repository.fromEcr(Repository.fromRepositoryName(this, "Repository", "my-container-repo")))
        // Custom ECS-optimized AMI for building
        .instanceImage(ContainerInstanceImage.fromSsmParameterName("/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id"))
        // Additional storage for build process
        .instanceBlockDevices(List.of(BlockDevice.builder()
                .deviceName("/dev/xvda")
                .volume(BlockDeviceVolume.ebs(50, EbsDeviceOptions.builder()
                        .encrypted(true)
                        .volumeType(EbsDeviceVolumeType.GENERAL_PURPOSE_SSD_GP3)
                        .build()))
                .build()))
        .build();
csharp
// Install: dotnet add package Amazon.CDK.AWS.ImageBuilder.Alpha
var containerRecipe = new ContainerRecipe(this, "InstanceConfigContainerRecipe", new ContainerRecipeProps {
    BaseImage = BaseContainerImage.FromDockerHub("amazonlinux", "latest"),
    TargetRepository = Repository.FromEcr(Repository.FromRepositoryName(this, "Repository", "my-container-repo")),
    // Custom ECS-optimized AMI for building
    InstanceImage = ContainerInstanceImage.FromSsmParameterName("/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id"),
    // Additional storage for build process
    InstanceBlockDevices = new [] { new BlockDevice {
        DeviceName = "/dev/xvda",
        Volume = BlockDeviceVolume.Ebs(50, new EbsDeviceOptions {
            Encrypted = true,
            VolumeType = EbsDeviceVolumeType.GENERAL_PURPOSE_SSD_GP3
        })
    } }
});
go
// Install: go get github.com/aws/aws-cdk-go/awsimagebuilderalpha/v2
containerRecipe := imagebuilder.NewContainerRecipe(this, jsii.String("InstanceConfigContainerRecipe"), &ContainerRecipeProps{
	BaseImage: imagebuilder.BaseContainerImage_*FromDockerHub(jsii.String("amazonlinux"), jsii.String("latest")),
	TargetRepository: imagebuilder.Repository_*FromEcr(ecr.Repository_*FromRepositoryName(this, jsii.String("Repository"), jsii.String("my-container-repo"))),
	// Custom ECS-optimized AMI for building
	InstanceImage: imagebuilder.ContainerInstanceImage_FromSsmParameterName(jsii.String("/aws/service/ecs/optimized-ami/amazon-linux-2023/recommended/image_id")),
	// Additional storage for build process
	InstanceBlockDevices: []BlockDevice{
		&BlockDevice{
			DeviceName: jsii.String("/dev/xvda"),
			Volume: ec2.BlockDeviceVolume_Ebs(jsii.Number(50), &EbsDeviceOptions{
				Encrypted: jsii.Boolean(true),
				VolumeType: ec2.EbsDeviceVolumeType_GENERAL_PURPOSE_SSD_GP3,
			}),
		},
	},
})

Properties ​

imagestringimagestrimageStringImagestringImage*string#
The rendered container instance image to use.

Methods ​

fromAmiId(amiId: string): ContainerInstanceImage // chainable@staticmethod def from_ami_id(ami_id: str) -> ContainerInstanceImagepublic static ContainerInstanceImage fromAmiId(String amiId)public static ContainerInstanceImage FromAmiId(string amiId)func FromAmiId(AmiId *string) ContainerInstanceImagestatic#
The AMI ID to use to launch the instance for building the container image.
1 parameter

Parameters

  • amiIdami_idamiIdamiIdAmiId — The AMI ID to use as the container instance image.
fromSsmParameter(parameter: IStringParameter): ContainerInstanceImage // chainable@staticmethod def from_ssm_parameter(parameter: IStringParameter) -> ContainerInstanceImagepublic static ContainerInstanceImage fromSsmParameter(IStringParameter parameter)public static ContainerInstanceImage FromSsmParameter(IStringParameter parameter)func FromSsmParameter(Parameter IStringParameter) ContainerInstanceImagestatic#
The SSM parameter to use to launch the instance for building the container image.
1 parameter

Parameters

  • parameterparameterparameterparameterParameter — The SSM parameter to use as the container instance image.
fromSsmParameterName(parameterName: string): ContainerInstanceImage // chainable@staticmethod def from_ssm_parameter_name(parameter_name: str) -> ContainerInstanceImagepublic static ContainerInstanceImage fromSsmParameterName(String parameterName)public static ContainerInstanceImage FromSsmParameterName(string parameterName)func FromSsmParameterName(ParameterName *string) ContainerInstanceImagestatic#
The ARN of the SSM parameter used to launch the instance for building the container image.
1 parameter

Parameters

  • parameterNameparameter_nameparameterNameparameterNameParameterName — The name of the SSM parameter used as the container instance image.
fromString(containerInstanceImageString: string): ContainerInstanceImage // chainable@staticmethod def from_string(container_instance_image_string: str) -> ContainerInstanceImagepublic static ContainerInstanceImage fromString(String containerInstanceImageString)public static ContainerInstanceImage FromString(string containerInstanceImageString)func FromString(ContainerInstanceImageString *string) ContainerInstanceImagestatic#
The string value of the container instance image to use in a container recipe.

This can either be:

  • an SSM parameter reference, prefixed with ssm: and followed by the parameter name or ARN
  • an AMI ID
1 parameter

Parameters

  • containerInstanceImageStringcontainer_instance_image_stringcontainerInstanceImageStringcontainerInstanceImageStringContainerInstanceImageString — The container instance image as a direct string value.