EksContainerDefinition
A container that can be run with EKS orchestration on EC2 resources.
Example
const jobDefn = new batch.EksJobDefinition(this, 'eksf2', {
container: new batch.EksContainerDefinition(this, 'container', {
image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
volumes: [batch.EksVolume.emptyDir({
name: 'myEmptyDirVolume',
mountPath: '/mount/path',
medium: batch.EmptyDirMediumType.MEMORY,
readonly: true,
sizeLimit: cdk.Size.mebibytes(2048),
})],
}),
});
job_defn = batch.EksJobDefinition(self, "eksf2",
container=batch.EksContainerDefinition(self, "container",
image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample"),
volumes=[batch.EksVolume.empty_dir(
name="myEmptyDirVolume",
mount_path="/mount/path",
medium=batch.EmptyDirMediumType.MEMORY,
readonly=True,
size_limit=cdk.Size.mebibytes(2048)
)]
)
)
EksJobDefinition jobDefn = EksJobDefinition.Builder.create(this, "eksf2")
.container(EksContainerDefinition.Builder.create(this, "container")
.image(ContainerImage.fromRegistry("amazon/amazon-ecs-sample"))
.volumes(List.of(EksVolume.emptyDir(EmptyDirVolumeOptions.builder()
.name("myEmptyDirVolume")
.mountPath("/mount/path")
.medium(EmptyDirMediumType.MEMORY)
.readonly(true)
.sizeLimit(Size.mebibytes(2048))
.build())))
.build())
.build();
// Install: dotnet add package Amazon.CDK.Lib
var jobDefn = new EksJobDefinition(this, "eksf2", new EksJobDefinitionProps {
Container = new EksContainerDefinition(this, "container", new EksContainerDefinitionProps {
Image = ContainerImage.FromRegistry("amazon/amazon-ecs-sample"),
Volumes = new [] { EksVolume.EmptyDir(new EmptyDirVolumeOptions {
Name = "myEmptyDirVolume",
MountPath = "/mount/path",
Medium = EmptyDirMediumType.MEMORY,
Readonly = true,
SizeLimit = Size.Mebibytes(2048)
}) }
})
});
// Install: go get github.com/aws/aws-cdk-go/awscdk/v2
jobDefn := batch.NewEksJobDefinition(this, jsii.String("eksf2"), &EksJobDefinitionProps{
Container: batch.NewEksContainerDefinition(this, jsii.String("container"), &EksContainerDefinitionProps{
Image: ecs.ContainerImage_FromRegistry(jsii.String("amazon/amazon-ecs-sample")),
Volumes: []EksVolume{
batch.EksVolume_EmptyDir(&EmptyDirVolumeOptions{
Name: jsii.String("myEmptyDirVolume"),
MountPath: jsii.String("/mount/path"),
Medium: batch.EmptyDirMediumType_MEMORY,
Readonly: jsii.Boolean(true),
SizeLimit: cdk.Size_Mebibytes(jsii.Number(2048)),
}),
},
}),
})
Initializer
new EksContainerDefinition(scope: Construct, id: string, props: EksContainerDefinitionProps)
EksContainerDefinition(scope: Construct, id: str, props: EksContainerDefinitionProps)
new EksContainerDefinition(Construct scope, String id, EksContainerDefinitionProps props)
new EksContainerDefinition(Construct scope, string id, EksContainerDefinitionProps props)
NewEksContainerDefinition(Scope Construct, Id *string, Props EksContainerDefinitionProps)
Construct Props
notes
If this isn't specified, the CMD of the container image is used. This corresponds to the args member in the Entrypoint portion of the Pod in Kubernetes. Environment variable references are expanded using the container's environment. If the referenced environment variable doesn't exist, the reference in the command isn't changed. For example, if the reference is to "
commandstring[]commandtyping.List[str]commandList<String>Commandstring[]Command*[]*string= no command#notes
This isn't run within a shell. If this isn't specified, the ENTRYPOINT of the container image is used. Environment variable references are expanded using the container's environment. If the referenced environment variable doesn't exist, the reference in the command isn't changed. For example, if the reference is to "$(NAME1)" and the NAME1 environment variable doesn't exist, the command string will remain "$(NAME1)." $$ is replaced with $ and the resulting string isn't expanded. For example, $$(VAR_NAME) will be passed as $(VAR_NAME) whether or not the VAR_NAME environment variable exists.
The entrypoint can't be updated.
If your container attempts to exceed this limit, it will be terminated.
At least one of cpuReservation and cpuLimit is required. If both are specified, then cpuLimit must be at least as large as cpuReservation.
cpuReservationnumbercpu_reservationint | floatcpuReservationNumberCpuReservationdoubleCpuReservation*float64= No CPUs reserved#The container will given at least this many CPUs, but may consume more.
At least one of cpuReservation and cpuLimit is required. If both are specified, then cpuLimit must be at least as large as cpuReservation.
env{ [key: string]: string }envtyping.Mapping[str, str]envMap<String, String>EnvIDictionary<string, string>Env*map[string]*string= no environment variables#Note: Environment variables cannot start with "AWS_BATCH". This naming convention is reserved for variables that AWS Batch sets.
If your container attempts to exceed this limit, it will be terminated.
If both gpuReservation and gpuLimit are specified, then gpuLimit must be equal to gpuReservation.
gpuReservationnumbergpu_reservationint | floatgpuReservationNumberGpuReservationdoubleGpuReservation*float64= No GPUs reserved#The container will given at least this many CPUs, but may consume more.
If both gpuReservation and gpuLimit are specified, then gpuLimit must be equal to gpuReservation.
imageContainerImageimageContainerImageimageContainerImageImageContainerImageImageContainerImagerequired#imagePullPolicyImagePullPolicyimage_pull_policyImagePullPolicyimagePullPolicyImagePullPolicyImagePullPolicyImagePullPolicyImagePullPolicyImagePullPolicy= `ALWAYS` if the `:latest` tag is…#default
Default: ALWAYS if the :latest tag is specified, IF_NOT_PRESENT otherwise
notes
If your container attempts to exceed the allocated memory, it will be terminated.
Must be larger that 4 MiB
At least one of memoryLimit and memoryReservation is required
Note: To maximize your resource utilization, provide your jobs with as much memory as possible for the specific instance type that you are using.
memoryReservationSizememory_reservationSizememoryReservationSizeMemoryReservationSizeMemoryReservationSize= No memory reserved#notes
Your container will be given at least this much memory, but may consume more.
Must be larger that 4 MiB
When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the memory parameter (if applicable), or all of the available memory on the container instance, whichever comes first.
At least one of memoryLimit and memoryReservation is required. If both are specified, then memoryLimit must be equal to memoryReservation
Note: To maximize your resource utilization, provide your jobs with as much memory as possible for the specific instance type that you are using.
The level of permissions are similar to the root user permissions.
This parameter maps to privileged policy in the Privileged pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
readonlyRootFilesystembooleanreadonly_root_filesystemboolreadonlyRootFilesystemBooleanReadonlyRootFilesystemboolReadonlyRootFilesystem*bool= false#This parameter maps to ReadOnlyRootFilesystem policy in the Volumes and file systems pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
notes
If this parameter isn't specified, the default is the group that's specified in the image metadata. This parameter maps to RunAsGroup and MustRunAs policy in the Users and groups pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
runAsRootbooleanrun_as_rootboolrunAsRootBooleanRunAsRootboolRunAsRoot*bool= the container is *not* required …#Otherwise, no such rule is enforced. This parameter maps to RunAsUser and MustRunAsNonRoot policy in the Users and groups pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
default
Default: the container is not required to run as a non-root user
runAsUsernumberrun_as_userint | floatrunAsUserNumberRunAsUserdoubleRunAsUser*float64= the user that is specified in th…#This parameter maps to RunAsUser and MustRunAs policy in the Users and groups pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
default
Default: the user that is specified in the image metadata.
Properties
notes
If this isn't specified, the CMD of the container image is used. This corresponds to the args member in the Entrypoint portion of the Pod in Kubernetes. Environment variable references are expanded using the container's environment. If the referenced environment variable doesn't exist, the reference in the command isn't changed. For example, if the reference is to "
notes
This isn't run within a shell. If this isn't specified, the ENTRYPOINT of the container image is used. Environment variable references are expanded using the container's environment. If the referenced environment variable doesn't exist, the reference in the command isn't changed. For example, if the reference is to "$(NAME1)" and the NAME1 environment variable doesn't exist, the command string will remain "$(NAME1)." $$ is replaced with $ and the resulting string isn't expanded. For example, $$(VAR_NAME) will be passed as $(VAR_NAME) whether or not the VAR_NAME environment variable exists.
The entrypoint can't be updated.
If your container attempts to exceed this limit, it will be terminated.
At least one of cpuReservation and cpuLimit is required. If both are specified, then cpuLimit must be at least as large as cpuReservation.
cpuReservationnumbercpu_reservationint | floatcpuReservationNumberCpuReservationdoubleCpuReservation*float64#The container will given at least this many CPUs, but may consume more.
At least one of cpuReservation and cpuLimit is required. If both are specified, then cpuLimit must be at least as large as cpuReservation.
env{ [key: string]: string }envtyping.Mapping[str, str]envMap<String, String>EnvIDictionary<string, string>Env*map[string]*string#Note: Environment variables cannot start with "AWS_BATCH". This naming convention is reserved for variables that AWS Batch sets.
If your container attempts to exceed this limit, it will be terminated.
If both gpuReservation and gpuLimit are specified, then gpuLimit must be equal to gpuReservation.
gpuReservationnumbergpu_reservationint | floatgpuReservationNumberGpuReservationdoubleGpuReservation*float64#The container will given at least this many CPUs, but may consume more.
If both gpuReservation and gpuLimit are specified, then gpuLimit must be equal to gpuReservation.
imageContainerImageimageContainerImageimageContainerImageImageContainerImageImageContainerImagerequired#imagePullPolicyImagePullPolicyimage_pull_policyImagePullPolicyimagePullPolicyImagePullPolicyImagePullPolicyImagePullPolicyImagePullPolicyImagePullPolicy#notes
If your container attempts to exceed the allocated memory, it will be terminated.
Must be larger that 4 MiB
At least one of memoryLimit and memoryReservation is required
Note: To maximize your resource utilization, provide your jobs with as much memory as possible for the specific instance type that you are using.
memoryReservationSizememory_reservationSizememoryReservationSizeMemoryReservationSizeMemoryReservationSize#notes
Your container will be given at least this much memory, but may consume more.
Must be larger that 4 MiB
When system memory is under heavy contention, Docker attempts to keep the container memory to this soft limit. However, your container can consume more memory when it needs to, up to either the hard limit specified with the memory parameter (if applicable), or all of the available memory on the container instance, whichever comes first.
At least one of memoryLimit and memoryReservation is required. If both are specified, then memoryLimit must be equal to memoryReservation
Note: To maximize your resource utilization, provide your jobs with as much memory as possible for the specific instance type that you are using.
The level of permissions are similar to the root user permissions.
This parameter maps to privileged policy in the Privileged pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
PROPERTY_INJECTION_IDstringproperty_injection_idstrPROPERTY_INJECTION_IDStringPROPERTY_INJECTION_IDstringPROPERTY_INJECTION_ID*stringrequiredstatic#readonlyRootFilesystembooleanreadonly_root_filesystemboolreadonlyRootFilesystemBooleanReadonlyRootFilesystemboolReadonlyRootFilesystem*bool#This parameter maps to ReadOnlyRootFilesystem policy in the Volumes and file systems pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
notes
If this parameter isn't specified, the default is the group that's specified in the image metadata. This parameter maps to RunAsGroup and MustRunAs policy in the Users and groups pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
Otherwise, no such rule is enforced. This parameter maps to RunAsUser and MustRunAsNonRoot policy in the Users and groups pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
This parameter maps to RunAsUser and MustRunAs policy in the Users and groups pod security policies in the Kubernetes documentation.
Note: this is only compatible with Kubernetes < v1.25
Methods
addVolume(volume: EksVolume): voiddef add_volume(self, volume: EksVolume) -> Nonepublic void addVolume(EksVolume volume)public void AddVolume(EksVolume volume)func AddVolume(Volume EksVolume)#Automatically added to the Pod.
isConstruct(x: any): boolean@staticmethod def is_construct(x: Any) -> boolpublic static Boolean isConstruct(Object x)public static bool IsConstruct(object x)func IsConstruct(X interface{}) *boolstatic#notes · 1 parameter · returns
Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.
Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.
Parameters
xxxxX— Any object.
Returns: true if x is an object created from a class which extends Construct.
toString(): stringdef to_string(self, ) -> strpublic String toString()public string ToString()func ToString() *string#with(...mixins: IMixin[]): IConstructdef with(self, mixins: IMixin) -> IConstructpublic IConstruct with(IMixin mixins)public IConstruct With(IMixin mixins)func With(Mixins IMixin) IConstruct#Mixins are applied in order. The list of constructs is captured at the start of the call, so constructs added by a mixin will not be visited. Use multiple with() calls if subsequent mixins should apply to added constructs.
1 parameter · returns
Parameters
mixinsmixinsmixinsmixinsMixins— The mixins to apply.
Returns: This construct for chaining