class TaskDefinition (construct)
Language | Type name |
---|---|
.NET | Amazon.CDK.AWS.ECS.TaskDefinition |
Go | github.com/aws/aws-cdk-go/awscdk/v2/awsecs#TaskDefinition |
Java | software.amazon.awscdk.services.ecs.TaskDefinition |
Python | aws_cdk.aws_ecs.TaskDefinition |
TypeScript (source) | aws-cdk-lib » aws_ecs » TaskDefinition |
Implements
IConstruct
, IDependable
, IResource
, ITask
The base class for all task definitions.
Example
declare const cluster: ecs.Cluster;
declare const taskDefinition: ecs.TaskDefinition;
declare const vpc: ec2.Vpc;
const service = new ecs.FargateService(this, 'Service', { cluster, taskDefinition });
const lb = new elbv2.ApplicationLoadBalancer(this, 'LB', { vpc, internetFacing: true });
const listener = lb.addListener('Listener', { port: 80 });
service.registerLoadBalancerTargets(
{
containerName: 'web',
containerPort: 80,
newTargetGroupId: 'ECS',
listener: ecs.ListenerConfig.applicationListener(listener, {
protocol: elbv2.ApplicationProtocol.HTTPS
}),
},
);
Initializer
new TaskDefinition(scope: Construct, id: string, props: TaskDefinitionProps)
Parameters
- scope
Construct
- id
string
- props
Task
Definition Props
Constructs a new instance of the TaskDefinition class.
Construct Props
Name | Type | Description |
---|---|---|
compatibility | Compatibility | The task launch type compatiblity requirement. |
cpu? | string | The number of cpu units used by the task. |
ephemeral | number | The amount (in GiB) of ephemeral storage to be allocated to the task. |
execution | IRole | The name of the IAM task execution role that grants the ECS agent permission to call AWS APIs on your behalf. |
family? | string | The name of a family that this task definition is registered to. |
inference | Inference [] | The inference accelerators to use for the containers in the task. |
ipc | Ipc | The IPC resource namespace to use for the containers in the task. |
memory | string | The amount (in MiB) of memory used by the task. |
network | Network | The networking mode to use for the containers in the task. |
pid | Pid | The process namespace to use for the containers in the task. |
placement | Placement [] | The placement constraints to use for tasks in the service. |
proxy | Proxy | The configuration details for the App Mesh proxy. |
runtime | Runtime | The operating system that your task definitions are running on. |
task | IRole | The name of the IAM role that grants containers in the task permission to call AWS APIs on your behalf. |
volumes? | Volume [] | The list of volume definitions for the task. |
compatibility
Type:
Compatibility
The task launch type compatiblity requirement.
cpu?
Type:
string
(optional, default: CPU units are not specified.)
The number of cpu units used by the task.
If you are using the EC2 launch type, this field is optional and any value can be used. If you are using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the memory parameter:
256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB)
512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB)
1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB)
2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB)
4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB)
8192 (8 vCPU) - Available memory values: Between 16384 (16 GB) and 61440 (60 GB) in increments of 4096 (4 GB)
16384 (16 vCPU) - Available memory values: Between 32768 (32 GB) and 122880 (120 GB) in increments of 8192 (8 GB)
ephemeralStorageGiB?
Type:
number
(optional, default: Undefined, in which case, the task will receive 20GiB ephemeral storage.)
The amount (in GiB) of ephemeral storage to be allocated to the task.
Only supported in Fargate platform version 1.4.0 or later.
executionRole?
Type:
IRole
(optional, default: An execution role will be automatically created if you use ECR images in your task definition.)
The name of the IAM task execution role that grants the ECS agent permission to call AWS APIs on your behalf.
The role will be used to retrieve container images from ECR and create CloudWatch log groups.
family?
Type:
string
(optional, default: Automatically generated name.)
The name of a family that this task definition is registered to.
A family groups multiple versions of a task definition.
inferenceAccelerators?
Type:
Inference
[]
(optional, default: No inference accelerators.)
The inference accelerators to use for the containers in the task.
Not supported in Fargate.
ipcMode?
Type:
Ipc
(optional, default: IpcMode used by the task is not specified)
The IPC resource namespace to use for the containers in the task.
Not supported in Fargate and Windows containers.
memoryMiB?
Type:
string
(optional, default: Memory used by task is not specified.)
The amount (in MiB) of memory used by the task.
If using the EC2 launch type, this field is optional and any value can be used. If using the Fargate launch type, this field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter:
512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU)
1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU)
2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU)
Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU)
Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU)
Between 16384 (16 GB) and 61440 (60 GB) in increments of 4096 (4 GB) - Available cpu values: 8192 (8 vCPU)
Between 32768 (32 GB) and 122880 (120 GB) in increments of 8192 (8 GB) - Available cpu values: 16384 (16 vCPU)
networkMode?
Type:
Network
(optional, default: NetworkMode.Bridge for EC2 & External tasks, AwsVpc for Fargate tasks.)
The networking mode to use for the containers in the task.
On Fargate, the only supported networking mode is AwsVpc.
pidMode?
Type:
Pid
(optional, default: PidMode used by the task is not specified)
The process namespace to use for the containers in the task.
Only supported for tasks that are hosted on AWS Fargate if the tasks are using platform version 1.4.0 or later (Linux). Only the TASK option is supported for Linux-based Fargate containers. Not supported in Windows containers. If pidMode is specified for a Fargate task, then runtimePlatform.operatingSystemFamily must also be specified. For more information, see Task Definition Parameters.
placementConstraints?
Type:
Placement
[]
(optional, default: No placement constraints.)
The placement constraints to use for tasks in the service.
You can specify a maximum of 10 constraints per task (this limit includes constraints in the task definition and those specified at run time).
Not supported in Fargate.
proxyConfiguration?
Type:
Proxy
(optional, default: No proxy configuration.)
The configuration details for the App Mesh proxy.
runtimePlatform?
Type:
Runtime
(optional, default: Undefined.)
The operating system that your task definitions are running on.
A runtimePlatform is supported only for tasks using the Fargate launch type.
taskRole?
Type:
IRole
(optional, default: A task role is automatically created for you.)
The name of the IAM role that grants containers in the task permission to call AWS APIs on your behalf.
volumes?
Type:
Volume
[]
(optional, default: No volumes are passed to the Docker daemon on a container instance.)
The list of volume definitions for the task.
For more information, see Task Definition Parameter Volumes.
Properties
Name | Type | Description |
---|---|---|
compatibility | Compatibility | The task launch type compatibility requirement. |
containers | Container [] | The container definitions. |
env | Resource | The environment this resource belongs to. |
family | string | The name of a family that this task definition is registered to. |
inference | Inference [] | Public getter method to access list of inference accelerators attached to the instance. |
is | boolean | Return true if the task definition can be run on an EC2 cluster. |
is | boolean | Return true if the task definition can be run on a ECS anywhere cluster. |
is | boolean | Return true if the task definition can be run on a Fargate cluster. |
network | Network | The networking mode to use for the containers in the task. |
node | Node | The tree node. |
stack | Stack | The stack in which this resource is defined. |
task | string | The full Amazon Resource Name (ARN) of the task definition. |
task | IRole | The name of the IAM role that grants containers in the task permission to call AWS APIs on your behalf. |
default | Container | Default container for this task. |
ephemeral | number | The amount (in GiB) of ephemeral storage to be allocated to the task. |
execution | IRole | Execution role for this task definition. |
pid | Pid | The process namespace to use for the containers in the task. |
references | boolean | Whether this task definition has at least a container that references a specific JSON field of a secret stored in Secrets Manager. |
compatibility
Type:
Compatibility
The task launch type compatibility requirement.
containers
Type:
Container
[]
The container definitions.
env
Type:
Resource
The environment this resource belongs to.
For resources that are created and managed by the CDK (generally, those created by creating new class instances like Role, Bucket, etc.), this is always the same as the environment of the stack they belong to; however, for imported resources (those obtained from static methods like fromRoleArn, fromBucketName, etc.), that might be different than the stack they were imported into.
family
Type:
string
The name of a family that this task definition is registered to.
A family groups multiple versions of a task definition.
inferenceAccelerators
Type:
Inference
[]
Public getter method to access list of inference accelerators attached to the instance.
isEc2Compatible
Type:
boolean
Return true if the task definition can be run on an EC2 cluster.
isExternalCompatible
Type:
boolean
Return true if the task definition can be run on a ECS anywhere cluster.
isFargateCompatible
Type:
boolean
Return true if the task definition can be run on a Fargate cluster.
networkMode
Type:
Network
The networking mode to use for the containers in the task.
node
Type:
Node
The tree node.
stack
Type:
Stack
The stack in which this resource is defined.
taskDefinitionArn
Type:
string
The full Amazon Resource Name (ARN) of the task definition.
taskRole
Type:
IRole
The name of the IAM role that grants containers in the task permission to call AWS APIs on your behalf.
defaultContainer?
Type:
Container
(optional)
Default container for this task.
Load balancers will send traffic to this container. The first essential container that is added to this task will become the default container.
ephemeralStorageGiB?
Type:
number
(optional)
The amount (in GiB) of ephemeral storage to be allocated to the task.
Only supported in Fargate platform version 1.4.0 or later.
executionRole?
Type:
IRole
(optional)
Execution role for this task definition.
pidMode?
Type:
Pid
(optional)
The process namespace to use for the containers in the task.
Only supported for tasks that are hosted on AWS Fargate if the tasks are using platform version 1.4.0 or later (Linux). Not supported in Windows containers. If pidMode is specified for a Fargate task, then runtimePlatform.operatingSystemFamily must also be specified. For more information, see Task Definition Parameters.
referencesSecretJsonField?
Type:
boolean
(optional)
Whether this task definition has at least a container that references a specific JSON field of a secret stored in Secrets Manager.
Methods
Name | Description |
---|---|
add | Adds a new container to the task definition. |
add | Adds the specified extension to the task definition. |
add | Adds a firelens log router to the task definition. |
add | Adds an inference accelerator to the task definition. |
add | Adds the specified placement constraint to the task definition. |
add | Adds a policy statement to the task execution IAM role. |
add | Adds a policy statement to the task IAM role. |
add | Adds a volume to the task definition. |
apply | Apply the given removal policy to this resource. |
find | Returns the container that match the provided containerName. |
find | Determine the existing port mapping for the provided name. |
grant | Grants permissions to run this task definition. |
obtain | Creates the task execution IAM role if it doesn't already exist. |
to | Returns a string representation of this construct. |
static from | Imports a task definition from the specified task definition ARN. |
static from | Create a task definition from a task definition reference. |
Container(id, props)
addpublic addContainer(id: string, props: ContainerDefinitionOptions): ContainerDefinition
Parameters
- id
string
- props
Container
Definition Options
Returns
Adds a new container to the task definition.
Extension(extension)
addpublic addExtension(extension: ITaskDefinitionExtension): void
Parameters
- extension
ITask
Definition Extension
Adds the specified extension to the task definition.
Extension can be used to apply a packaged modification to a task definition.
FirelensLogRouter(id, props)
addpublic addFirelensLogRouter(id: string, props: FirelensLogRouterDefinitionOptions): FirelensLogRouter
Parameters
- id
string
- props
Firelens
Log Router Definition Options
Returns
Adds a firelens log router to the task definition.
InferenceAccelerator(inferenceAccelerator)
addpublic addInferenceAccelerator(inferenceAccelerator: InferenceAccelerator): void
Parameters
- inferenceAccelerator
Inference
Accelerator
Adds an inference accelerator to the task definition.
PlacementConstraint(constraint)
addpublic addPlacementConstraint(constraint: PlacementConstraint): void
Parameters
- constraint
Placement
Constraint
Adds the specified placement constraint to the task definition.
ToExecutionRolePolicy(statement)
addpublic addToExecutionRolePolicy(statement: PolicyStatement): void
Parameters
- statement
Policy
Statement
Adds a policy statement to the task execution IAM role.
ToTaskRolePolicy(statement)
addpublic addToTaskRolePolicy(statement: PolicyStatement): void
Parameters
- statement
Policy
Statement
Adds a policy statement to the task IAM role.
Volume(volume)
addpublic addVolume(volume: Volume): void
Parameters
- volume
Volume
Adds a volume to the task definition.
RemovalPolicy(policy)
applypublic applyRemovalPolicy(policy: RemovalPolicy): void
Parameters
- policy
Removal
Policy
Apply the given removal policy to this resource.
The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced.
The resource can be deleted (RemovalPolicy.DESTROY
), or left in your AWS
account for data recovery and cleanup later (RemovalPolicy.RETAIN
).
Container(containerName)
findpublic findContainer(containerName: string): ContainerDefinition
Parameters
- containerName
string
Returns
Returns the container that match the provided containerName.
PortMappingByName(name)
findpublic findPortMappingByName(name: string): PortMapping
Parameters
- name
string
— : port mapping name.
Returns
Determine the existing port mapping for the provided name.
Run(grantee)
grantpublic grantRun(grantee: IGrantable): Grant
Parameters
- grantee
IGrantable
— Principal to grant consume rights to.
Returns
Grants permissions to run this task definition.
This will grant the following permissions:
- ecs:RunTask
- iam:PassRole
ExecutionRole()
obtainpublic obtainExecutionRole(): IRole
Returns
Creates the task execution IAM role if it doesn't already exist.
String()
topublic toString(): string
Returns
string
Returns a string representation of this construct.
TaskDefinitionArn(scope, id, taskDefinitionArn)
static frompublic static fromTaskDefinitionArn(scope: Construct, id: string, taskDefinitionArn: string): ITaskDefinition
Parameters
- scope
Construct
- id
string
- taskDefinitionArn
string
Returns
Imports a task definition from the specified task definition ARN.
The task will have a compatibility of EC2+Fargate.
TaskDefinitionAttributes(scope, id, attrs)
static frompublic static fromTaskDefinitionAttributes(scope: Construct, id: string, attrs: TaskDefinitionAttributes): ITaskDefinition
Parameters
- scope
Construct
- id
string
- attrs
Task
Definition Attributes
Returns
Create a task definition from a task definition reference.