class ContainerDefinition (construct)
Language | Type name |
---|---|
.NET | Amazon.CDK.AWS.ECS.ContainerDefinition |
Go | github.com/aws/aws-cdk-go/awscdk/v2/awsecs#ContainerDefinition |
Java | software.amazon.awscdk.services.ecs.ContainerDefinition |
Python | aws_cdk.aws_ecs.ContainerDefinition |
TypeScript (source) | aws-cdk-lib » aws_ecs » ContainerDefinition |
Implements
IConstruct
, IDependable
A container definition is used in a task definition to describe the containers that are launched as part of a task.
Example
declare const taskDefinition: ecs.TaskDefinition;
declare const cluster: ecs.Cluster;
// Add a container to the task definition
const specificContainer = taskDefinition.addContainer('Container', {
image: ecs.ContainerImage.fromRegistry('/aws/aws-example-app'),
memoryLimitMiB: 2048,
});
// Add a port mapping
specificContainer.addPortMappings({
containerPort: 7600,
protocol: ecs.Protocol.TCP,
});
new ecs.Ec2Service(this, 'Service', {
cluster,
taskDefinition,
cloudMapOptions: {
// Create SRV records - useful for bridge networking
dnsRecordType: cloudmap.DnsRecordType.SRV,
// Targets port TCP port 7600 `specificContainer`
container: specificContainer,
containerPort: 7600,
},
});
Initializer
new ContainerDefinition(scope: Construct, id: string, props: ContainerDefinitionProps)
Parameters
- scope
Construct
- id
string
- props
Container
Definition Props
Constructs a new instance of the ContainerDefinition class.
Construct Props
Name | Type | Description |
---|---|---|
image | Container | The image used to start a container. |
task | Task | The name of the task definition that includes this container definition. |
command? | string[] | The command that is passed to the container. |
container | string | The name of the container. |
cpu? | number | The minimum number of CPU units to reserve for the container. |
credential | Credential [] | A list of ARNs in SSM or Amazon S3 to a credential spec (CredSpec ) file that configures the container for Active Directory authentication. |
disable | boolean | Specifies whether networking is disabled within the container. |
dns | string[] | A list of DNS search domains that are presented to the container. |
dns | string[] | A list of DNS servers that are presented to the container. |
docker | { [string]: string } | A key/value map of labels to add to the container. |
docker | string[] | A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems. |
enable | boolean | Enable a restart policy for a container. |
entry | string[] | The ENTRYPOINT value to pass to the container. |
environment? | { [string]: string } | The environment variables to pass to the container. |
environment | Environment [] | The environment files to pass to the container. |
essential? | boolean | Specifies whether the container is marked essential. |
extra | { [string]: string } | A list of hostnames and IP address mappings to append to the /etc/hosts file on the container. |
gpu | number | The number of GPUs assigned to the container. |
health | Health | The health check command and associated configuration parameters for the container. |
hostname? | string | The hostname to use for your container. |
inference | string[] | The inference accelerators referenced by the container. |
interactive? | boolean | When this parameter is true, you can deploy containerized applications that require stdin or a tty to be allocated. |
linux | Linux | Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. |
logging? | Log | The log configuration specification for the container. |
memory | number | The amount (in MiB) of memory to present to the container. |
memory | number | The soft limit (in MiB) of memory to reserve for the container. |
port | Port [] | The port mappings to add to the container definition. |
privileged? | boolean | Specifies whether the container is marked as privileged. |
pseudo | boolean | When this parameter is true, a TTY is allocated. |
readonly | boolean | When this parameter is true, the container is given read-only access to its root file system. |
restart | Duration | A period of time that the container must run for before a restart can be attempted. |
restart | number[] | A list of exit codes that Amazon ECS will ignore and not attempt a restart on. |
secrets? | { [string]: Secret } | The secret environment variables to pass to the container. |
start | Duration | Time duration (in seconds) to wait before giving up on resolving dependencies for a container. |
stop | Duration | Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own. |
system | System [] | A list of namespaced kernel parameters to set in the container. |
ulimits? | Ulimit [] | An array of ulimits to set in the container. |
user? | string | The user to use inside the container. |
working | string | The working directory in which to run commands inside the container. |
image
Type:
Container
The image used to start a container.
This string is passed directly to the Docker daemon. Images in the Docker Hub registry are available by default. Other repositories are specified with either repository-url/image:tag or repository-url/image@digest. TODO: Update these to specify using classes of IContainerImage
taskDefinition
Type:
Task
The name of the task definition that includes this container definition.
[disable-awslint:ref-via-interface]
command?
Type:
string[]
(optional, default: CMD value built into container image.)
The command that is passed to the container.
If you provide a shell command as a single string, you have to quote command-line arguments.
containerName?
Type:
string
(optional, default: id of node associated with ContainerDefinition.)
The name of the container.
cpu?
Type:
number
(optional, default: No minimum CPU units reserved.)
The minimum number of CPU units to reserve for the container.
credentialSpecs?
Type:
Credential
[]
(optional, default: No credential specs.)
A list of ARNs in SSM or Amazon S3 to a credential spec (CredSpec
) file that configures the container for Active Directory authentication.
We recommend that you use this parameter instead of the dockerSecurityOptions
.
Currently, only one credential spec is allowed per container definition.
disableNetworking?
Type:
boolean
(optional, default: false)
Specifies whether networking is disabled within the container.
When this parameter is true, networking is disabled within the container.
dnsSearchDomains?
Type:
string[]
(optional, default: No search domains.)
A list of DNS search domains that are presented to the container.
dnsServers?
Type:
string[]
(optional, default: Default DNS servers.)
A list of DNS servers that are presented to the container.
dockerLabels?
Type:
{ [string]: string }
(optional, default: No labels.)
A key/value map of labels to add to the container.
dockerSecurityOptions?
Type:
string[]
(optional, default: No security labels.)
A list of strings to provide custom labels for SELinux and AppArmor multi-level security systems.
enableRestartPolicy?
Type:
boolean
(optional, default: false unless restartIgnoredExitCodes
or restartAttemptPeriod
is set.)
Enable a restart policy for a container.
When you set up a restart policy, Amazon ECS can restart the container without needing to replace the task.
entryPoint?
Type:
string[]
(optional, default: Entry point configured in container.)
The ENTRYPOINT value to pass to the container.
See also: https://docs.docker.com/engine/reference/builder/#entrypoint
environment?
Type:
{ [string]: string }
(optional, default: No environment variables.)
The environment variables to pass to the container.
environmentFiles?
Type:
Environment
[]
(optional, default: No environment files.)
The environment files to pass to the container.
essential?
Type:
boolean
(optional, default: true)
Specifies whether the container is marked essential.
If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the essential parameter of a container is marked as false, then its failure does not affect the rest of the containers in a task. All tasks must have at least one essential container.
If this parameter is omitted, a container is assumed to be essential.
extraHosts?
Type:
{ [string]: string }
(optional, default: No extra hosts.)
A list of hostnames and IP address mappings to append to the /etc/hosts file on the container.
gpuCount?
Type:
number
(optional, default: No GPUs assigned.)
The number of GPUs assigned to the container.
healthCheck?
Type:
Health
(optional, default: Health check configuration from container.)
The health check command and associated configuration parameters for the container.
hostname?
Type:
string
(optional, default: Automatic hostname.)
The hostname to use for your container.
inferenceAcceleratorResources?
Type:
string[]
(optional, default: No inference accelerators assigned.)
The inference accelerators referenced by the container.
interactive?
Type:
boolean
(optional, default: false)
When this parameter is true, you can deploy containerized applications that require stdin or a tty to be allocated.
linuxParameters?
Type:
Linux
(optional, default: No Linux parameters.)
Linux-specific modifications that are applied to the container, such as Linux kernel capabilities.
For more information see KernelCapabilities.
logging?
Type:
Log
(optional, default: Containers use the same logging driver that the Docker daemon uses.)
The log configuration specification for the container.
memoryLimitMiB?
Type:
number
(optional, default: No memory limit.)
The amount (in MiB) of memory to present to the container.
If your container attempts to exceed the allocated memory, the container is terminated.
At least one of memoryLimitMiB and memoryReservationMiB is required for non-Fargate services.
memoryReservationMiB?
Type:
number
(optional, default: No memory reserved.)
The soft limit (in MiB) of memory to reserve for the container.
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 memoryLimitMiB and memoryReservationMiB is required for non-Fargate services.
portMappings?
Type:
Port
[]
(optional, default: No ports are mapped.)
The port mappings to add to the container definition.
privileged?
Type:
boolean
(optional, default: false)
Specifies whether the container is marked as privileged.
When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user).
pseudoTerminal?
Type:
boolean
(optional, default: false)
When this parameter is true, a TTY is allocated.
This parameter maps to Tty in the "Create a container section" of the
Docker Remote API and the --tty option to docker run
.
readonlyRootFilesystem?
Type:
boolean
(optional, default: false)
When this parameter is true, the container is given read-only access to its root file system.
restartAttemptPeriod?
Type:
Duration
(optional, default: Duration.seconds(300) if enableRestartPolicy
is true, otherwise no period.)
A period of time that the container must run for before a restart can be attempted.
A container can be restarted only once every restartAttemptPeriod
seconds.
If a container isn't able to run for this time period and exits early, it will not be restarted.
This property can't be used if enableRestartPolicy
is set to false.
You can set a minimum restartAttemptPeriod
of 60 seconds and a maximum restartAttemptPeriod
of 1800 seconds.
restartIgnoredExitCodes?
Type:
number[]
(optional, default: No exit codes are ignored.)
A list of exit codes that Amazon ECS will ignore and not attempt a restart on.
This property can't be used if enableRestartPolicy
is set to false.
You can specify a maximum of 50 container exit codes.
secrets?
Type:
{ [string]:
Secret
}
(optional, default: No secret environment variables.)
The secret environment variables to pass to the container.
startTimeout?
Type:
Duration
(optional, default: none)
Time duration (in seconds) to wait before giving up on resolving dependencies for a container.
stopTimeout?
Type:
Duration
(optional, default: none)
Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own.
systemControls?
Type:
System
[]
(optional, default: No system controls are set.)
A list of namespaced kernel parameters to set in the container.
ulimits?
Type:
Ulimit
[]
(optional)
An array of ulimits to set in the container.
user?
Type:
string
(optional, default: root)
The user to use inside the container.
This parameter maps to User in the Create a container section of the Docker Remote API and the --user option to docker run.
workingDirectory?
Type:
string
(optional, default: /)
The working directory in which to run commands inside the container.
Properties
Name | Type | Description |
---|---|---|
container | Container [] | An array dependencies defined for container startup and shutdown. |
container | string | The name of this container. |
container | number | The port the container will listen on. |
essential | boolean | Specifies whether the container will be marked essential. |
image | string | The name of the image referenced by this container. |
ingress | number | The inbound rules associated with the security group the task or service will use. |
memory | boolean | Whether there was at least one memory limit specified in this definition. |
mount | Mount [] | The mount points for data volumes in your container. |
node | Node | The tree node. |
port | Port [] | The list of port mappings for the container. |
task | Task | The name of the task definition that includes this container definition. |
ulimits | Ulimit [] | An array of ulimits to set in the container. |
volumes | Volume [] | The data volumes to mount from another container in the same task definition. |
cpu? | number | The number of cpu units reserved for the container. |
credential | Credential [] | The crdential specifications for this container. |
environment | Environment [] | The environment files for this container. |
linux | Linux | The Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. |
log | Log | The log configuration specification for the container. |
pseudo | boolean | Specifies whether a TTY must be allocated for this container. |
references | boolean | Whether this container definition references a specific JSON field of a secret stored in Secrets Manager. |
static CONTAINER_PORT_USE_RANGE | number |
containerDependencies
Type:
Container
[]
An array dependencies defined for container startup and shutdown.
containerName
Type:
string
The name of this container.
containerPort
Type:
number
The port the container will listen on.
essential
Type:
boolean
Specifies whether the container will be marked essential.
If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the essential parameter of a container is marked as false, then its failure does not affect the rest of the containers in a task.
If this parameter is omitted, a container is assumed to be essential.
imageName
Type:
string
The name of the image referenced by this container.
ingressPort
Type:
number
The inbound rules associated with the security group the task or service will use.
This property is only used for tasks that use the awsvpc network mode.
memoryLimitSpecified
Type:
boolean
Whether there was at least one memory limit specified in this definition.
mountPoints
Type:
Mount
[]
The mount points for data volumes in your container.
node
Type:
Node
The tree node.
portMappings
Type:
Port
[]
The list of port mappings for the container.
Port mappings allow containers to access ports on the host container instance to send or receive traffic.
taskDefinition
Type:
Task
The name of the task definition that includes this container definition.
ulimits
Type:
Ulimit
[]
An array of ulimits to set in the container.
volumesFrom
Type:
Volume
[]
The data volumes to mount from another container in the same task definition.
cpu?
Type:
number
(optional)
The number of cpu units reserved for the container.
credentialSpecs?
Type:
Credential
[]
(optional)
The crdential specifications for this container.
environmentFiles?
Type:
Environment
[]
(optional)
The environment files for this container.
linuxParameters?
Type:
Linux
(optional)
The Linux-specific modifications that are applied to the container, such as Linux kernel capabilities.
logDriverConfig?
Type:
Log
(optional)
The log configuration specification for the container.
pseudoTerminal?
Type:
boolean
(optional)
Specifies whether a TTY must be allocated for this container.
referencesSecretJsonField?
Type:
boolean
(optional)
Whether this container definition references a specific JSON field of a secret stored in Secrets Manager.
static CONTAINER_PORT_USE_RANGE
Type:
number
Methods
Name | Description |
---|---|
add | This method adds one or more container dependencies to the container. |
add | This method adds a Docker label to the container. |
add | This method adds an environment variable to the container. |
add | This method adds one or more resources to the container. |
add | This method adds a link which allows containers to communicate with each other without the need for port mappings. |
add | This method adds one or more mount points for data volumes to the container. |
add | This method adds one or more port mappings to the container. |
add | This method mounts temporary disk space to the container. |
add | This method adds a secret as environment variable to the container. |
add | This method adds the specified statement to the IAM task execution policy in the task definition. |
add | This method adds one or more ulimits to the container. |
add | This method adds one or more volumes to the container. |
find | Returns the host port for the requested container port if it exists. |
find | Returns the port mapping with the given name, if it exists. |
render | Render this container definition to a CloudFormation object. |
to | Returns a string representation of this construct. |
ContainerDependencies(...containerDependencies)
addpublic addContainerDependencies(...containerDependencies: ContainerDependency[]): void
Parameters
- containerDependencies
Container
Dependency
This method adds one or more container dependencies to the container.
DockerLabel(name, value)
addpublic addDockerLabel(name: string, value: string): void
Parameters
- name
string
- value
string
This method adds a Docker label to the container.
Environment(name, value)
addpublic addEnvironment(name: string, value: string): void
Parameters
- name
string
- value
string
This method adds an environment variable to the container.
InferenceAcceleratorResource(...inferenceAcceleratorResources)
addpublic addInferenceAcceleratorResource(...inferenceAcceleratorResources: string[]): void
Parameters
- inferenceAcceleratorResources
string
This method adds one or more resources to the container.
Link(container, alias?)
addpublic addLink(container: ContainerDefinition, alias?: string): void
Parameters
- container
Container
Definition - alias
string
This method adds a link which allows containers to communicate with each other without the need for port mappings.
This parameter is only supported if the task definition is using the bridge network mode. Warning: The --link flag is a legacy feature of Docker. It may eventually be removed.
MountPoints(...mountPoints)
addpublic addMountPoints(...mountPoints: MountPoint[]): void
Parameters
- mountPoints
Mount
Point
This method adds one or more mount points for data volumes to the container.
PortMappings(...portMappings)
addpublic addPortMappings(...portMappings: PortMapping[]): void
Parameters
- portMappings
Port
Mapping
This method adds one or more port mappings to the container.
Scratch(scratch)
addpublic addScratch(scratch: ScratchSpace): void
Parameters
- scratch
Scratch
Space
This method mounts temporary disk space to the container.
This adds the correct container mountPoint and task definition volume.
Secret(name, secret)
addpublic addSecret(name: string, secret: Secret): void
Parameters
- name
string
- secret
Secret
This method adds a secret as environment variable to the container.
ToExecutionPolicy(statement)
addpublic addToExecutionPolicy(statement: PolicyStatement): void
Parameters
- statement
Policy
Statement
This method adds the specified statement to the IAM task execution policy in the task definition.
Ulimits(...ulimits)
addpublic addUlimits(...ulimits: Ulimit[]): void
Parameters
- ulimits
Ulimit
This method adds one or more ulimits to the container.
VolumesFrom(...volumesFrom)
addpublic addVolumesFrom(...volumesFrom: VolumeFrom[]): void
Parameters
- volumesFrom
Volume
From
This method adds one or more volumes to the container.
PortMapping(containerPort, protocol)
findpublic findPortMapping(containerPort: number, protocol: Protocol): PortMapping
Parameters
- containerPort
number
- protocol
Protocol
Returns
Returns the host port for the requested container port if it exists.
PortMappingByName(name)
findpublic findPortMappingByName(name: string): PortMapping
Parameters
- name
string
Returns
Returns the port mapping with the given name, if it exists.
ContainerDefinition(_taskDefinition?)
renderpublic renderContainerDefinition(_taskDefinition?: TaskDefinition): ContainerDefinitionProperty
Parameters
- _taskDefinition
Task
— [disable-awslint:ref-via-interface] (unused but kept to avoid breaking change).Definition
Returns
Render this container definition to a CloudFormation object.
String()
topublic toString(): string
Returns
string
Returns a string representation of this construct.