aws-cdk-lib.aws_ecs.FargateTaskDefinition

class FargateTaskDefinition (construct)

LanguageType name
.NETAmazon.CDK.AWS.ECS.FargateTaskDefinition
Gogithub.com/aws/aws-cdk-go/awscdk/v2/awsecs#FargateTaskDefinition
Javasoftware.amazon.awscdk.services.ecs.FargateTaskDefinition
Pythonaws_cdk.aws_ecs.FargateTaskDefinition
TypeScript (source)aws-cdk-lib » aws_ecs » FargateTaskDefinition

Implements IConstruct, IDependable, IResource, ITaskDefinition, IFargateTaskDefinition

The details of a task definition run on a Fargate cluster.

Example

declare const vpc: ec2.Vpc;

const cluster = new ecs.Cluster(this, 'FargateCPCluster', {
  vpc,
  enableFargateCapacityProviders: true,
});

const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef');

taskDefinition.addContainer('web', {
  image: ecs.ContainerImage.fromRegistry('amazon/amazon-ecs-sample'),
});

new ecs.FargateService(this, 'FargateService', {
  cluster,
  taskDefinition,
  capacityProviderStrategies: [
    {
      capacityProvider: 'FARGATE_SPOT',
      weight: 2,
    },
    {
      capacityProvider: 'FARGATE',
      weight: 1,
    },
  ],
});

Initializer

new FargateTaskDefinition(scope: Construct, id: string, props?: FargateTaskDefinitionProps)

Parameters

  • scope Construct
  • id string
  • props FargateTaskDefinitionProps

Constructs a new instance of the FargateTaskDefinition class.

Construct Props

NameTypeDescription
cpu?numberThe number of cpu units used by the task.
ephemeralStorageGiB?numberThe amount (in GiB) of ephemeral storage to be allocated to the task.
executionRole?IRoleThe name of the IAM task execution role that grants the ECS agent permission to call AWS APIs on your behalf.
family?stringThe name of a family that this task definition is registered to.
memoryLimitMiB?numberThe amount (in MiB) of memory used by the task.
proxyConfiguration?ProxyConfigurationThe configuration details for the App Mesh proxy.
runtimePlatform?RuntimePlatformThe operating system that your task definitions are running on.
taskRole?IRoleThe 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.

cpu?

Type: number (optional, default: 256)

The number of cpu units used by the task.

For tasks 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: 20)

The amount (in GiB) of ephemeral storage to be allocated to the task.

The maximum supported value is 200 GiB.

NOTE: This parameter is only supported for tasks hosted on AWS Fargate using 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.


memoryLimitMiB?

Type: number (optional, default: 512)

The amount (in MiB) of memory used by the task.

For tasks 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)


proxyConfiguration?

Type: ProxyConfiguration (optional, default: No proxy configuration.)

The configuration details for the App Mesh proxy.


runtimePlatform?

Type: RuntimePlatform (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

NameTypeDescription
compatibilityCompatibilityThe task launch type compatibility requirement.
envResourceEnvironmentThe environment this resource belongs to.
familystringThe name of a family that this task definition is registered to.
inferenceAcceleratorsInferenceAccelerator[]Public getter method to access list of inference accelerators attached to the instance.
isEc2CompatiblebooleanReturn true if the task definition can be run on an EC2 cluster.
isExternalCompatiblebooleanReturn true if the task definition can be run on a ECS anywhere cluster.
isFargateCompatiblebooleanReturn true if the task definition can be run on a Fargate cluster.
networkModeNetworkModeThe Docker networking mode to use for the containers in the task.
nodeNodeThe tree node.
stackStackThe stack in which this resource is defined.
taskDefinitionArnstringThe full Amazon Resource Name (ARN) of the task definition.
taskRoleIRoleThe name of the IAM role that grants containers in the task permission to call AWS APIs on your behalf.
defaultContainer?ContainerDefinitionDefault container for this task.
ephemeralStorageGiB?numberThe amount (in GiB) of ephemeral storage to be allocated to the task.
executionRole?IRoleExecution role for this task definition.
referencesSecretJsonField?booleanWhether 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.


env

Type: ResourceEnvironment

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: InferenceAccelerator[]

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: NetworkMode

The Docker networking mode to use for the containers in the task.

Fargate tasks require the awsvpc network mode.


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: ContainerDefinition (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.


executionRole?

Type: IRole (optional)

Execution role for this task definition.


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

NameDescription
addContainer(id, props)Adds a new container to the task definition.
addExtension(extension)Adds the specified extension to the task definition.
addFirelensLogRouter(id, props)Adds a firelens log router to the task definition.
addInferenceAccelerator(inferenceAccelerator)Adds an inference accelerator to the task definition.
addPlacementConstraint(constraint)Adds the specified placement constraint to the task definition.
addToExecutionRolePolicy(statement)Adds a policy statement to the task execution IAM role.
addToTaskRolePolicy(statement)Adds a policy statement to the task IAM role.
addVolume(volume)Adds a volume to the task definition.
applyRemovalPolicy(policy)Apply the given removal policy to this resource.
findContainer(containerName)Returns the container that match the provided containerName.
findPortMappingByName(name)Determine the existing port mapping for the provided name.
grantRun(grantee)Grants permissions to run this task definition.
obtainExecutionRole()Creates the task execution IAM role if it doesn't already exist.
toString()Returns a string representation of this construct.
static fromFargateTaskDefinitionArn(scope, id, fargateTaskDefinitionArn)Imports a task definition from the specified task definition ARN.
static fromFargateTaskDefinitionAttributes(scope, id, attrs)Import an existing Fargate task definition from its attributes.

addContainer(id, props)

public addContainer(id: string, props: ContainerDefinitionOptions): ContainerDefinition

Parameters

  • id string
  • props ContainerDefinitionOptions

Returns

  • ContainerDefinition

Adds a new container to the task definition.


addExtension(extension)

public addExtension(extension: ITaskDefinitionExtension): void

Parameters

  • extension ITaskDefinitionExtension

Adds the specified extension to the task definition.

Extension can be used to apply a packaged modification to a task definition.


addFirelensLogRouter(id, props)

public addFirelensLogRouter(id: string, props: FirelensLogRouterDefinitionOptions): FirelensLogRouter

Parameters

  • id string
  • props FirelensLogRouterDefinitionOptions

Returns

  • FirelensLogRouter

Adds a firelens log router to the task definition.


addInferenceAccelerator(inferenceAccelerator)

public addInferenceAccelerator(inferenceAccelerator: InferenceAccelerator): void

Parameters

  • inferenceAccelerator InferenceAccelerator

Adds an inference accelerator to the task definition.


addPlacementConstraint(constraint)

public addPlacementConstraint(constraint: PlacementConstraint): void

Parameters

  • constraint PlacementConstraint

Adds the specified placement constraint to the task definition.


addToExecutionRolePolicy(statement)

public addToExecutionRolePolicy(statement: PolicyStatement): void

Parameters

  • statement PolicyStatement

Adds a policy statement to the task execution IAM role.


addToTaskRolePolicy(statement)

public addToTaskRolePolicy(statement: PolicyStatement): void

Parameters

  • statement PolicyStatement

Adds a policy statement to the task IAM role.


addVolume(volume)

public addVolume(volume: Volume): void

Parameters

  • volume Volume

Adds a volume to the task definition.


applyRemovalPolicy(policy)

public applyRemovalPolicy(policy: RemovalPolicy): void

Parameters

  • policy RemovalPolicy

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


findContainer(containerName)

public findContainer(containerName: string): ContainerDefinition

Parameters

  • containerName string

Returns

  • ContainerDefinition

Returns the container that match the provided containerName.


findPortMappingByName(name)

public findPortMappingByName(name: string): PortMapping

Parameters

  • name string — : port mapping name.

Returns

  • PortMapping

Determine the existing port mapping for the provided name.


grantRun(grantee)

public grantRun(grantee: IGrantable): Grant

Parameters

  • grantee IGrantable — Principal to grant consume rights to.

Returns

  • Grant

Grants permissions to run this task definition.

This will grant the following permissions:

  • ecs:RunTask
  • iam:PassRole

obtainExecutionRole()

public obtainExecutionRole(): IRole

Returns

  • IRole

Creates the task execution IAM role if it doesn't already exist.


toString()

public toString(): string

Returns

  • string

Returns a string representation of this construct.


static fromFargateTaskDefinitionArn(scope, id, fargateTaskDefinitionArn)

public static fromFargateTaskDefinitionArn(scope: Construct, id: string, fargateTaskDefinitionArn: string): IFargateTaskDefinition

Parameters

  • scope Construct
  • id string
  • fargateTaskDefinitionArn string

Returns

  • IFargateTaskDefinition

Imports a task definition from the specified task definition ARN.


static fromFargateTaskDefinitionAttributes(scope, id, attrs)

public static fromFargateTaskDefinitionAttributes(scope: Construct, id: string, attrs: FargateTaskDefinitionAttributes): IFargateTaskDefinition

Parameters

  • scope Construct
  • id string
  • attrs FargateTaskDefinitionAttributes

Returns

  • IFargateTaskDefinition

Import an existing Fargate task definition from its attributes.