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
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.