/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ECS { namespace Model { /** *

The details of a task definition which describes the container and volume * definitions of an Amazon Elastic Container Service task. You can specify which * Docker images to use, the required resources, and other configurations related * to launching the task definition through an Amazon ECS service or * task.

See Also:

AWS * API Reference

*/ class AWS_ECS_API TaskDefinition { public: TaskDefinition(); TaskDefinition(Aws::Utils::Json::JsonView jsonValue); TaskDefinition& operator=(Aws::Utils::Json::JsonView jsonValue); Aws::Utils::Json::JsonValue Jsonize() const; /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline const Aws::String& GetTaskDefinitionArn() const{ return m_taskDefinitionArn; } /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline bool TaskDefinitionArnHasBeenSet() const { return m_taskDefinitionArnHasBeenSet; } /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline void SetTaskDefinitionArn(const Aws::String& value) { m_taskDefinitionArnHasBeenSet = true; m_taskDefinitionArn = value; } /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline void SetTaskDefinitionArn(Aws::String&& value) { m_taskDefinitionArnHasBeenSet = true; m_taskDefinitionArn = std::move(value); } /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline void SetTaskDefinitionArn(const char* value) { m_taskDefinitionArnHasBeenSet = true; m_taskDefinitionArn.assign(value); } /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline TaskDefinition& WithTaskDefinitionArn(const Aws::String& value) { SetTaskDefinitionArn(value); return *this;} /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline TaskDefinition& WithTaskDefinitionArn(Aws::String&& value) { SetTaskDefinitionArn(std::move(value)); return *this;} /** *

The full Amazon Resource Name (ARN) of the task definition.

*/ inline TaskDefinition& WithTaskDefinitionArn(const char* value) { SetTaskDefinitionArn(value); return *this;} /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline const Aws::Vector& GetContainerDefinitions() const{ return m_containerDefinitions; } /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline bool ContainerDefinitionsHasBeenSet() const { return m_containerDefinitionsHasBeenSet; } /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetContainerDefinitions(const Aws::Vector& value) { m_containerDefinitionsHasBeenSet = true; m_containerDefinitions = value; } /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetContainerDefinitions(Aws::Vector&& value) { m_containerDefinitionsHasBeenSet = true; m_containerDefinitions = std::move(value); } /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithContainerDefinitions(const Aws::Vector& value) { SetContainerDefinitions(value); return *this;} /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithContainerDefinitions(Aws::Vector&& value) { SetContainerDefinitions(std::move(value)); return *this;} /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& AddContainerDefinitions(const ContainerDefinition& value) { m_containerDefinitionsHasBeenSet = true; m_containerDefinitions.push_back(value); return *this; } /** *

A list of container definitions in JSON format that describe the different * containers that make up your task. For more information about container * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& AddContainerDefinitions(ContainerDefinition&& value) { m_containerDefinitionsHasBeenSet = true; m_containerDefinitions.push_back(std::move(value)); return *this; } /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline const Aws::String& GetFamily() const{ return m_family; } /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline bool FamilyHasBeenSet() const { return m_familyHasBeenSet; } /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline void SetFamily(const Aws::String& value) { m_familyHasBeenSet = true; m_family = value; } /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline void SetFamily(Aws::String&& value) { m_familyHasBeenSet = true; m_family = std::move(value); } /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline void SetFamily(const char* value) { m_familyHasBeenSet = true; m_family.assign(value); } /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline TaskDefinition& WithFamily(const Aws::String& value) { SetFamily(value); return *this;} /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline TaskDefinition& WithFamily(Aws::String&& value) { SetFamily(std::move(value)); return *this;} /** *

The name of a family that this task definition is registered to. Up to 255 * letters (uppercase and lowercase), numbers, hyphens, and underscores are * allowed.

A family groups multiple versions of a task definition. Amazon * ECS gives the first task definition that you registered to a family a revision * number of 1. Amazon ECS gives sequential revision numbers to each task * definition that you add.

*/ inline TaskDefinition& WithFamily(const char* value) { SetFamily(value); return *this;} /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline const Aws::String& GetTaskRoleArn() const{ return m_taskRoleArn; } /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline bool TaskRoleArnHasBeenSet() const { return m_taskRoleArnHasBeenSet; } /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetTaskRoleArn(const Aws::String& value) { m_taskRoleArnHasBeenSet = true; m_taskRoleArn = value; } /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetTaskRoleArn(Aws::String&& value) { m_taskRoleArnHasBeenSet = true; m_taskRoleArn = std::move(value); } /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetTaskRoleArn(const char* value) { m_taskRoleArnHasBeenSet = true; m_taskRoleArn.assign(value); } /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithTaskRoleArn(const Aws::String& value) { SetTaskRoleArn(value); return *this;} /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithTaskRoleArn(Aws::String&& value) { SetTaskRoleArn(std::move(value)); return *this;} /** *

The short name or full Amazon Resource Name (ARN) of the AWS Identity and * Access Management (IAM) role that grants containers in the task permission to * call AWS APIs on your behalf. For more information, see Amazon * ECS Task Role in the Amazon Elastic Container Service Developer * Guide.

IAM roles for tasks on Windows require that the * -EnableTaskIAMRole option is set when you launch the Amazon * ECS-optimized Windows AMI. Your containers must also run some configuration code * in order to take advantage of the feature. For more information, see Windows * IAM Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithTaskRoleArn(const char* value) { SetTaskRoleArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline const Aws::String& GetExecutionRoleArn() const{ return m_executionRoleArn; } /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline bool ExecutionRoleArnHasBeenSet() const { return m_executionRoleArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline void SetExecutionRoleArn(const Aws::String& value) { m_executionRoleArnHasBeenSet = true; m_executionRoleArn = value; } /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline void SetExecutionRoleArn(Aws::String&& value) { m_executionRoleArnHasBeenSet = true; m_executionRoleArn = std::move(value); } /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline void SetExecutionRoleArn(const char* value) { m_executionRoleArnHasBeenSet = true; m_executionRoleArn.assign(value); } /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline TaskDefinition& WithExecutionRoleArn(const Aws::String& value) { SetExecutionRoleArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline TaskDefinition& WithExecutionRoleArn(Aws::String&& value) { SetExecutionRoleArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the task execution role that grants the * Amazon ECS container agent permission to make AWS API calls on your behalf. The * task execution IAM role is required depending on the requirements of your task. * For more information, see Amazon * ECS task execution IAM role in the Amazon Elastic Container Service * Developer Guide.

*/ inline TaskDefinition& WithExecutionRoleArn(const char* value) { SetExecutionRoleArn(value); return *this;} /** *

The Docker networking mode to use for the containers in the task. The valid * values are none, bridge, awsvpc, and * host. The default Docker network mode is bridge. If * you are using the Fargate launch type, the awsvpc network mode is * required. If you are using the EC2 launch type, any network mode can be used. If * the network mode is set to none, you cannot specify port mappings * in your container definitions, and the tasks containers do not have external * connectivity. The host and awsvpc network modes offer * the highest networking performance for containers because they use the EC2 * network stack instead of the virtualized network stack provided by the * bridge mode.

With the host and * awsvpc network modes, exposed container ports are mapped directly * to the corresponding host port (for the host network mode) or the * attached elastic network interface port (for the awsvpc network * mode), so you cannot take advantage of dynamic host port mappings.

If * the network mode is awsvpc, the task is allocated an elastic * network interface, and you must specify a NetworkConfiguration value when * you create a service or run a task with the task definition. For more * information, see Task * Networking in the Amazon Elastic Container Service Developer * Guide.

Currently, only Amazon ECS-optimized AMIs, other Amazon * Linux variants with the ecs-init package, or AWS Fargate * infrastructure support the awsvpc network mode.

If * the network mode is host, you cannot run multiple instantiations of * the same task on a single container instance when port mappings are used.

*

Docker for Windows uses different network modes than Docker for Linux. When * you register a task definition with Windows containers, you must not specify a * network mode. If you use the console to register a task definition with Windows * containers, you must choose the <default> network mode * object.

For more information, see Network * settings in the Docker run reference.

*/ inline const NetworkMode& GetNetworkMode() const{ return m_networkMode; } /** *

The Docker networking mode to use for the containers in the task. The valid * values are none, bridge, awsvpc, and * host. The default Docker network mode is bridge. If * you are using the Fargate launch type, the awsvpc network mode is * required. If you are using the EC2 launch type, any network mode can be used. If * the network mode is set to none, you cannot specify port mappings * in your container definitions, and the tasks containers do not have external * connectivity. The host and awsvpc network modes offer * the highest networking performance for containers because they use the EC2 * network stack instead of the virtualized network stack provided by the * bridge mode.

With the host and * awsvpc network modes, exposed container ports are mapped directly * to the corresponding host port (for the host network mode) or the * attached elastic network interface port (for the awsvpc network * mode), so you cannot take advantage of dynamic host port mappings.

If * the network mode is awsvpc, the task is allocated an elastic * network interface, and you must specify a NetworkConfiguration value when * you create a service or run a task with the task definition. For more * information, see Task * Networking in the Amazon Elastic Container Service Developer * Guide.

Currently, only Amazon ECS-optimized AMIs, other Amazon * Linux variants with the ecs-init package, or AWS Fargate * infrastructure support the awsvpc network mode.

If * the network mode is host, you cannot run multiple instantiations of * the same task on a single container instance when port mappings are used.

*

Docker for Windows uses different network modes than Docker for Linux. When * you register a task definition with Windows containers, you must not specify a * network mode. If you use the console to register a task definition with Windows * containers, you must choose the <default> network mode * object.

For more information, see Network * settings in the Docker run reference.

*/ inline bool NetworkModeHasBeenSet() const { return m_networkModeHasBeenSet; } /** *

The Docker networking mode to use for the containers in the task. The valid * values are none, bridge, awsvpc, and * host. The default Docker network mode is bridge. If * you are using the Fargate launch type, the awsvpc network mode is * required. If you are using the EC2 launch type, any network mode can be used. If * the network mode is set to none, you cannot specify port mappings * in your container definitions, and the tasks containers do not have external * connectivity. The host and awsvpc network modes offer * the highest networking performance for containers because they use the EC2 * network stack instead of the virtualized network stack provided by the * bridge mode.

With the host and * awsvpc network modes, exposed container ports are mapped directly * to the corresponding host port (for the host network mode) or the * attached elastic network interface port (for the awsvpc network * mode), so you cannot take advantage of dynamic host port mappings.

If * the network mode is awsvpc, the task is allocated an elastic * network interface, and you must specify a NetworkConfiguration value when * you create a service or run a task with the task definition. For more * information, see Task * Networking in the Amazon Elastic Container Service Developer * Guide.

Currently, only Amazon ECS-optimized AMIs, other Amazon * Linux variants with the ecs-init package, or AWS Fargate * infrastructure support the awsvpc network mode.

If * the network mode is host, you cannot run multiple instantiations of * the same task on a single container instance when port mappings are used.

*

Docker for Windows uses different network modes than Docker for Linux. When * you register a task definition with Windows containers, you must not specify a * network mode. If you use the console to register a task definition with Windows * containers, you must choose the <default> network mode * object.

For more information, see Network * settings in the Docker run reference.

*/ inline void SetNetworkMode(const NetworkMode& value) { m_networkModeHasBeenSet = true; m_networkMode = value; } /** *

The Docker networking mode to use for the containers in the task. The valid * values are none, bridge, awsvpc, and * host. The default Docker network mode is bridge. If * you are using the Fargate launch type, the awsvpc network mode is * required. If you are using the EC2 launch type, any network mode can be used. If * the network mode is set to none, you cannot specify port mappings * in your container definitions, and the tasks containers do not have external * connectivity. The host and awsvpc network modes offer * the highest networking performance for containers because they use the EC2 * network stack instead of the virtualized network stack provided by the * bridge mode.

With the host and * awsvpc network modes, exposed container ports are mapped directly * to the corresponding host port (for the host network mode) or the * attached elastic network interface port (for the awsvpc network * mode), so you cannot take advantage of dynamic host port mappings.

If * the network mode is awsvpc, the task is allocated an elastic * network interface, and you must specify a NetworkConfiguration value when * you create a service or run a task with the task definition. For more * information, see Task * Networking in the Amazon Elastic Container Service Developer * Guide.

Currently, only Amazon ECS-optimized AMIs, other Amazon * Linux variants with the ecs-init package, or AWS Fargate * infrastructure support the awsvpc network mode.

If * the network mode is host, you cannot run multiple instantiations of * the same task on a single container instance when port mappings are used.

*

Docker for Windows uses different network modes than Docker for Linux. When * you register a task definition with Windows containers, you must not specify a * network mode. If you use the console to register a task definition with Windows * containers, you must choose the <default> network mode * object.

For more information, see Network * settings in the Docker run reference.

*/ inline void SetNetworkMode(NetworkMode&& value) { m_networkModeHasBeenSet = true; m_networkMode = std::move(value); } /** *

The Docker networking mode to use for the containers in the task. The valid * values are none, bridge, awsvpc, and * host. The default Docker network mode is bridge. If * you are using the Fargate launch type, the awsvpc network mode is * required. If you are using the EC2 launch type, any network mode can be used. If * the network mode is set to none, you cannot specify port mappings * in your container definitions, and the tasks containers do not have external * connectivity. The host and awsvpc network modes offer * the highest networking performance for containers because they use the EC2 * network stack instead of the virtualized network stack provided by the * bridge mode.

With the host and * awsvpc network modes, exposed container ports are mapped directly * to the corresponding host port (for the host network mode) or the * attached elastic network interface port (for the awsvpc network * mode), so you cannot take advantage of dynamic host port mappings.

If * the network mode is awsvpc, the task is allocated an elastic * network interface, and you must specify a NetworkConfiguration value when * you create a service or run a task with the task definition. For more * information, see Task * Networking in the Amazon Elastic Container Service Developer * Guide.

Currently, only Amazon ECS-optimized AMIs, other Amazon * Linux variants with the ecs-init package, or AWS Fargate * infrastructure support the awsvpc network mode.

If * the network mode is host, you cannot run multiple instantiations of * the same task on a single container instance when port mappings are used.

*

Docker for Windows uses different network modes than Docker for Linux. When * you register a task definition with Windows containers, you must not specify a * network mode. If you use the console to register a task definition with Windows * containers, you must choose the <default> network mode * object.

For more information, see Network * settings in the Docker run reference.

*/ inline TaskDefinition& WithNetworkMode(const NetworkMode& value) { SetNetworkMode(value); return *this;} /** *

The Docker networking mode to use for the containers in the task. The valid * values are none, bridge, awsvpc, and * host. The default Docker network mode is bridge. If * you are using the Fargate launch type, the awsvpc network mode is * required. If you are using the EC2 launch type, any network mode can be used. If * the network mode is set to none, you cannot specify port mappings * in your container definitions, and the tasks containers do not have external * connectivity. The host and awsvpc network modes offer * the highest networking performance for containers because they use the EC2 * network stack instead of the virtualized network stack provided by the * bridge mode.

With the host and * awsvpc network modes, exposed container ports are mapped directly * to the corresponding host port (for the host network mode) or the * attached elastic network interface port (for the awsvpc network * mode), so you cannot take advantage of dynamic host port mappings.

If * the network mode is awsvpc, the task is allocated an elastic * network interface, and you must specify a NetworkConfiguration value when * you create a service or run a task with the task definition. For more * information, see Task * Networking in the Amazon Elastic Container Service Developer * Guide.

Currently, only Amazon ECS-optimized AMIs, other Amazon * Linux variants with the ecs-init package, or AWS Fargate * infrastructure support the awsvpc network mode.

If * the network mode is host, you cannot run multiple instantiations of * the same task on a single container instance when port mappings are used.

*

Docker for Windows uses different network modes than Docker for Linux. When * you register a task definition with Windows containers, you must not specify a * network mode. If you use the console to register a task definition with Windows * containers, you must choose the <default> network mode * object.

For more information, see Network * settings in the Docker run reference.

*/ inline TaskDefinition& WithNetworkMode(NetworkMode&& value) { SetNetworkMode(std::move(value)); return *this;} /** *

The revision of the task in a particular family. The revision is a version * number of a task definition in a family. When you register a task definition for * the first time, the revision is 1. Each time that you register a * new revision of a task definition in the same family, the revision value always * increases by one, even if you have deregistered previous revisions in this * family.

*/ inline int GetRevision() const{ return m_revision; } /** *

The revision of the task in a particular family. The revision is a version * number of a task definition in a family. When you register a task definition for * the first time, the revision is 1. Each time that you register a * new revision of a task definition in the same family, the revision value always * increases by one, even if you have deregistered previous revisions in this * family.

*/ inline bool RevisionHasBeenSet() const { return m_revisionHasBeenSet; } /** *

The revision of the task in a particular family. The revision is a version * number of a task definition in a family. When you register a task definition for * the first time, the revision is 1. Each time that you register a * new revision of a task definition in the same family, the revision value always * increases by one, even if you have deregistered previous revisions in this * family.

*/ inline void SetRevision(int value) { m_revisionHasBeenSet = true; m_revision = value; } /** *

The revision of the task in a particular family. The revision is a version * number of a task definition in a family. When you register a task definition for * the first time, the revision is 1. Each time that you register a * new revision of a task definition in the same family, the revision value always * increases by one, even if you have deregistered previous revisions in this * family.

*/ inline TaskDefinition& WithRevision(int value) { SetRevision(value); return *this;} /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline const Aws::Vector& GetVolumes() const{ return m_volumes; } /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline bool VolumesHasBeenSet() const { return m_volumesHasBeenSet; } /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetVolumes(const Aws::Vector& value) { m_volumesHasBeenSet = true; m_volumes = value; } /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetVolumes(Aws::Vector&& value) { m_volumesHasBeenSet = true; m_volumes = std::move(value); } /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithVolumes(const Aws::Vector& value) { SetVolumes(value); return *this;} /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithVolumes(Aws::Vector&& value) { SetVolumes(std::move(value)); return *this;} /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& AddVolumes(const Volume& value) { m_volumesHasBeenSet = true; m_volumes.push_back(value); return *this; } /** *

The list of volume definitions for the task.

If your tasks are using * the Fargate launch type, the host and sourcePath * parameters are not supported.

For more information about volume * definition parameters and defaults, see Amazon * ECS Task Definitions in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& AddVolumes(Volume&& value) { m_volumesHasBeenSet = true; m_volumes.push_back(std::move(value)); return *this; } /** *

The status of the task definition.

*/ inline const TaskDefinitionStatus& GetStatus() const{ return m_status; } /** *

The status of the task definition.

*/ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; } /** *

The status of the task definition.

*/ inline void SetStatus(const TaskDefinitionStatus& value) { m_statusHasBeenSet = true; m_status = value; } /** *

The status of the task definition.

*/ inline void SetStatus(TaskDefinitionStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); } /** *

The status of the task definition.

*/ inline TaskDefinition& WithStatus(const TaskDefinitionStatus& value) { SetStatus(value); return *this;} /** *

The status of the task definition.

*/ inline TaskDefinition& WithStatus(TaskDefinitionStatus&& value) { SetStatus(std::move(value)); return *this;} /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline const Aws::Vector& GetRequiresAttributes() const{ return m_requiresAttributes; } /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline bool RequiresAttributesHasBeenSet() const { return m_requiresAttributesHasBeenSet; } /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline void SetRequiresAttributes(const Aws::Vector& value) { m_requiresAttributesHasBeenSet = true; m_requiresAttributes = value; } /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline void SetRequiresAttributes(Aws::Vector&& value) { m_requiresAttributesHasBeenSet = true; m_requiresAttributes = std::move(value); } /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& WithRequiresAttributes(const Aws::Vector& value) { SetRequiresAttributes(value); return *this;} /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& WithRequiresAttributes(Aws::Vector&& value) { SetRequiresAttributes(std::move(value)); return *this;} /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& AddRequiresAttributes(const Attribute& value) { m_requiresAttributesHasBeenSet = true; m_requiresAttributes.push_back(value); return *this; } /** *

The container instance attributes required by your task. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& AddRequiresAttributes(Attribute&& value) { m_requiresAttributesHasBeenSet = true; m_requiresAttributes.push_back(std::move(value)); return *this; } /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline const Aws::Vector& GetPlacementConstraints() const{ return m_placementConstraints; } /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline bool PlacementConstraintsHasBeenSet() const { return m_placementConstraintsHasBeenSet; } /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline void SetPlacementConstraints(const Aws::Vector& value) { m_placementConstraintsHasBeenSet = true; m_placementConstraints = value; } /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline void SetPlacementConstraints(Aws::Vector&& value) { m_placementConstraintsHasBeenSet = true; m_placementConstraints = std::move(value); } /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& WithPlacementConstraints(const Aws::Vector& value) { SetPlacementConstraints(value); return *this;} /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& WithPlacementConstraints(Aws::Vector&& value) { SetPlacementConstraints(std::move(value)); return *this;} /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& AddPlacementConstraints(const TaskDefinitionPlacementConstraint& value) { m_placementConstraintsHasBeenSet = true; m_placementConstraints.push_back(value); return *this; } /** *

An array of placement constraint objects to use for tasks. This field is not * valid if you are using the Fargate launch type for your task.

*/ inline TaskDefinition& AddPlacementConstraints(TaskDefinitionPlacementConstraint&& value) { m_placementConstraintsHasBeenSet = true; m_placementConstraints.push_back(std::move(value)); return *this; } /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline const Aws::Vector& GetCompatibilities() const{ return m_compatibilities; } /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline bool CompatibilitiesHasBeenSet() const { return m_compatibilitiesHasBeenSet; } /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetCompatibilities(const Aws::Vector& value) { m_compatibilitiesHasBeenSet = true; m_compatibilities = value; } /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetCompatibilities(Aws::Vector&& value) { m_compatibilitiesHasBeenSet = true; m_compatibilities = std::move(value); } /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithCompatibilities(const Aws::Vector& value) { SetCompatibilities(value); return *this;} /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithCompatibilities(Aws::Vector&& value) { SetCompatibilities(std::move(value)); return *this;} /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& AddCompatibilities(const Compatibility& value) { m_compatibilitiesHasBeenSet = true; m_compatibilities.push_back(value); return *this; } /** *

The launch type to use with your task. For more information, see Amazon * ECS Launch Types in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& AddCompatibilities(Compatibility&& value) { m_compatibilitiesHasBeenSet = true; m_compatibilities.push_back(std::move(value)); return *this; } /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline const Aws::Vector& GetRequiresCompatibilities() const{ return m_requiresCompatibilities; } /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline bool RequiresCompatibilitiesHasBeenSet() const { return m_requiresCompatibilitiesHasBeenSet; } /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline void SetRequiresCompatibilities(const Aws::Vector& value) { m_requiresCompatibilitiesHasBeenSet = true; m_requiresCompatibilities = value; } /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline void SetRequiresCompatibilities(Aws::Vector&& value) { m_requiresCompatibilitiesHasBeenSet = true; m_requiresCompatibilities = std::move(value); } /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline TaskDefinition& WithRequiresCompatibilities(const Aws::Vector& value) { SetRequiresCompatibilities(value); return *this;} /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline TaskDefinition& WithRequiresCompatibilities(Aws::Vector&& value) { SetRequiresCompatibilities(std::move(value)); return *this;} /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline TaskDefinition& AddRequiresCompatibilities(const Compatibility& value) { m_requiresCompatibilitiesHasBeenSet = true; m_requiresCompatibilities.push_back(value); return *this; } /** *

The launch type the task requires. If no value is specified, it will default * to EC2. Valid values include EC2 and * FARGATE.

*/ inline TaskDefinition& AddRequiresCompatibilities(Compatibility&& value) { m_requiresCompatibilitiesHasBeenSet = true; m_requiresCompatibilities.push_back(std::move(value)); return *this; } /** *

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)

*/ inline const Aws::String& GetCpu() const{ return m_cpu; } /** *

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)

*/ inline bool CpuHasBeenSet() const { return m_cpuHasBeenSet; } /** *

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)

*/ inline void SetCpu(const Aws::String& value) { m_cpuHasBeenSet = true; m_cpu = value; } /** *

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)

*/ inline void SetCpu(Aws::String&& value) { m_cpuHasBeenSet = true; m_cpu = std::move(value); } /** *

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)

*/ inline void SetCpu(const char* value) { m_cpuHasBeenSet = true; m_cpu.assign(value); } /** *

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)

*/ inline TaskDefinition& WithCpu(const Aws::String& value) { SetCpu(value); return *this;} /** *

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)

*/ inline TaskDefinition& WithCpu(Aws::String&& value) { SetCpu(std::move(value)); return *this;} /** *

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)

*/ inline TaskDefinition& WithCpu(const char* value) { SetCpu(value); return *this;} /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline const Aws::String& GetMemory() const{ return m_memory; } /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline bool MemoryHasBeenSet() const { return m_memoryHasBeenSet; } /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline void SetMemory(const Aws::String& value) { m_memoryHasBeenSet = true; m_memory = value; } /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline void SetMemory(Aws::String&& value) { m_memoryHasBeenSet = true; m_memory = std::move(value); } /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline void SetMemory(const char* value) { m_memoryHasBeenSet = true; m_memory.assign(value); } /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline TaskDefinition& WithMemory(const Aws::String& value) { SetMemory(value); return *this;} /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline TaskDefinition& WithMemory(Aws::String&& value) { SetMemory(std::move(value)); return *this;} /** *

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 a task-level * memory value is specified then the container-level memory value is optional.

*

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)

*/ inline TaskDefinition& WithMemory(const char* value) { SetMemory(value); return *this;} /** *

The Elastic Inference accelerator associated with the task.

*/ inline const Aws::Vector& GetInferenceAccelerators() const{ return m_inferenceAccelerators; } /** *

The Elastic Inference accelerator associated with the task.

*/ inline bool InferenceAcceleratorsHasBeenSet() const { return m_inferenceAcceleratorsHasBeenSet; } /** *

The Elastic Inference accelerator associated with the task.

*/ inline void SetInferenceAccelerators(const Aws::Vector& value) { m_inferenceAcceleratorsHasBeenSet = true; m_inferenceAccelerators = value; } /** *

The Elastic Inference accelerator associated with the task.

*/ inline void SetInferenceAccelerators(Aws::Vector&& value) { m_inferenceAcceleratorsHasBeenSet = true; m_inferenceAccelerators = std::move(value); } /** *

The Elastic Inference accelerator associated with the task.

*/ inline TaskDefinition& WithInferenceAccelerators(const Aws::Vector& value) { SetInferenceAccelerators(value); return *this;} /** *

The Elastic Inference accelerator associated with the task.

*/ inline TaskDefinition& WithInferenceAccelerators(Aws::Vector&& value) { SetInferenceAccelerators(std::move(value)); return *this;} /** *

The Elastic Inference accelerator associated with the task.

*/ inline TaskDefinition& AddInferenceAccelerators(const InferenceAccelerator& value) { m_inferenceAcceleratorsHasBeenSet = true; m_inferenceAccelerators.push_back(value); return *this; } /** *

The Elastic Inference accelerator associated with the task.

*/ inline TaskDefinition& AddInferenceAccelerators(InferenceAccelerator&& value) { m_inferenceAcceleratorsHasBeenSet = true; m_inferenceAccelerators.push_back(std::move(value)); return *this; } /** *

The process namespace to use for the containers in the task. The valid values * are host or task. If host is specified, * then all containers within the tasks that specified the host PID * mode on the same container instance share the same process namespace with the * host Amazon EC2 instance. If task is specified, all containers * within the specified task share the same process namespace. If no value is * specified, the default is a private namespace. For more information, see PID * settings in the Docker run reference.

If the host * PID mode is used, be aware that there is a heightened risk of undesired process * namespace expose. For more information, see Docker * security.

This parameter is not supported for Windows * containers or tasks using the Fargate launch type.

*/ inline const PidMode& GetPidMode() const{ return m_pidMode; } /** *

The process namespace to use for the containers in the task. The valid values * are host or task. If host is specified, * then all containers within the tasks that specified the host PID * mode on the same container instance share the same process namespace with the * host Amazon EC2 instance. If task is specified, all containers * within the specified task share the same process namespace. If no value is * specified, the default is a private namespace. For more information, see PID * settings in the Docker run reference.

If the host * PID mode is used, be aware that there is a heightened risk of undesired process * namespace expose. For more information, see Docker * security.

This parameter is not supported for Windows * containers or tasks using the Fargate launch type.

*/ inline bool PidModeHasBeenSet() const { return m_pidModeHasBeenSet; } /** *

The process namespace to use for the containers in the task. The valid values * are host or task. If host is specified, * then all containers within the tasks that specified the host PID * mode on the same container instance share the same process namespace with the * host Amazon EC2 instance. If task is specified, all containers * within the specified task share the same process namespace. If no value is * specified, the default is a private namespace. For more information, see PID * settings in the Docker run reference.

If the host * PID mode is used, be aware that there is a heightened risk of undesired process * namespace expose. For more information, see Docker * security.

This parameter is not supported for Windows * containers or tasks using the Fargate launch type.

*/ inline void SetPidMode(const PidMode& value) { m_pidModeHasBeenSet = true; m_pidMode = value; } /** *

The process namespace to use for the containers in the task. The valid values * are host or task. If host is specified, * then all containers within the tasks that specified the host PID * mode on the same container instance share the same process namespace with the * host Amazon EC2 instance. If task is specified, all containers * within the specified task share the same process namespace. If no value is * specified, the default is a private namespace. For more information, see PID * settings in the Docker run reference.

If the host * PID mode is used, be aware that there is a heightened risk of undesired process * namespace expose. For more information, see Docker * security.

This parameter is not supported for Windows * containers or tasks using the Fargate launch type.

*/ inline void SetPidMode(PidMode&& value) { m_pidModeHasBeenSet = true; m_pidMode = std::move(value); } /** *

The process namespace to use for the containers in the task. The valid values * are host or task. If host is specified, * then all containers within the tasks that specified the host PID * mode on the same container instance share the same process namespace with the * host Amazon EC2 instance. If task is specified, all containers * within the specified task share the same process namespace. If no value is * specified, the default is a private namespace. For more information, see PID * settings in the Docker run reference.

If the host * PID mode is used, be aware that there is a heightened risk of undesired process * namespace expose. For more information, see Docker * security.

This parameter is not supported for Windows * containers or tasks using the Fargate launch type.

*/ inline TaskDefinition& WithPidMode(const PidMode& value) { SetPidMode(value); return *this;} /** *

The process namespace to use for the containers in the task. The valid values * are host or task. If host is specified, * then all containers within the tasks that specified the host PID * mode on the same container instance share the same process namespace with the * host Amazon EC2 instance. If task is specified, all containers * within the specified task share the same process namespace. If no value is * specified, the default is a private namespace. For more information, see PID * settings in the Docker run reference.

If the host * PID mode is used, be aware that there is a heightened risk of undesired process * namespace expose. For more information, see Docker * security.

This parameter is not supported for Windows * containers or tasks using the Fargate launch type.

*/ inline TaskDefinition& WithPidMode(PidMode&& value) { SetPidMode(std::move(value)); return *this;} /** *

The IPC resource namespace to use for the containers in the task. The valid * values are host, task, or none. If * host is specified, then all containers within the tasks that * specified the host IPC mode on the same container instance share * the same IPC resources with the host Amazon EC2 instance. If task * is specified, all containers within the specified task share the same IPC * resources. If none is specified, then IPC resources within the * containers of a task are private and not shared with other containers in a task * or on the container instance. If no value is specified, then the IPC resource * namespace sharing depends on the Docker daemon setting on the container * instance. For more information, see IPC * settings in the Docker run reference.

If the host * IPC mode is used, be aware that there is a heightened risk of undesired IPC * namespace expose. For more information, see Docker * security.

If you are setting namespaced kernel parameters using * systemControls for the containers in the task, the following will * apply to your IPC resource namespace. For more information, see System * Controls in the Amazon Elastic Container Service Developer Guide.

*
  • For tasks that use the host IPC mode, IPC namespace * related systemControls are not supported.

  • For * tasks that use the task IPC mode, IPC namespace related * systemControls will apply to all containers within a task.

    *

This parameter is not supported for Windows containers or * tasks using the Fargate launch type.

*/ inline const IpcMode& GetIpcMode() const{ return m_ipcMode; } /** *

The IPC resource namespace to use for the containers in the task. The valid * values are host, task, or none. If * host is specified, then all containers within the tasks that * specified the host IPC mode on the same container instance share * the same IPC resources with the host Amazon EC2 instance. If task * is specified, all containers within the specified task share the same IPC * resources. If none is specified, then IPC resources within the * containers of a task are private and not shared with other containers in a task * or on the container instance. If no value is specified, then the IPC resource * namespace sharing depends on the Docker daemon setting on the container * instance. For more information, see IPC * settings in the Docker run reference.

If the host * IPC mode is used, be aware that there is a heightened risk of undesired IPC * namespace expose. For more information, see Docker * security.

If you are setting namespaced kernel parameters using * systemControls for the containers in the task, the following will * apply to your IPC resource namespace. For more information, see System * Controls in the Amazon Elastic Container Service Developer Guide.

*
  • For tasks that use the host IPC mode, IPC namespace * related systemControls are not supported.

  • For * tasks that use the task IPC mode, IPC namespace related * systemControls will apply to all containers within a task.

    *

This parameter is not supported for Windows containers or * tasks using the Fargate launch type.

*/ inline bool IpcModeHasBeenSet() const { return m_ipcModeHasBeenSet; } /** *

The IPC resource namespace to use for the containers in the task. The valid * values are host, task, or none. If * host is specified, then all containers within the tasks that * specified the host IPC mode on the same container instance share * the same IPC resources with the host Amazon EC2 instance. If task * is specified, all containers within the specified task share the same IPC * resources. If none is specified, then IPC resources within the * containers of a task are private and not shared with other containers in a task * or on the container instance. If no value is specified, then the IPC resource * namespace sharing depends on the Docker daemon setting on the container * instance. For more information, see IPC * settings in the Docker run reference.

If the host * IPC mode is used, be aware that there is a heightened risk of undesired IPC * namespace expose. For more information, see Docker * security.

If you are setting namespaced kernel parameters using * systemControls for the containers in the task, the following will * apply to your IPC resource namespace. For more information, see System * Controls in the Amazon Elastic Container Service Developer Guide.

*
  • For tasks that use the host IPC mode, IPC namespace * related systemControls are not supported.

  • For * tasks that use the task IPC mode, IPC namespace related * systemControls will apply to all containers within a task.

    *

This parameter is not supported for Windows containers or * tasks using the Fargate launch type.

*/ inline void SetIpcMode(const IpcMode& value) { m_ipcModeHasBeenSet = true; m_ipcMode = value; } /** *

The IPC resource namespace to use for the containers in the task. The valid * values are host, task, or none. If * host is specified, then all containers within the tasks that * specified the host IPC mode on the same container instance share * the same IPC resources with the host Amazon EC2 instance. If task * is specified, all containers within the specified task share the same IPC * resources. If none is specified, then IPC resources within the * containers of a task are private and not shared with other containers in a task * or on the container instance. If no value is specified, then the IPC resource * namespace sharing depends on the Docker daemon setting on the container * instance. For more information, see IPC * settings in the Docker run reference.

If the host * IPC mode is used, be aware that there is a heightened risk of undesired IPC * namespace expose. For more information, see Docker * security.

If you are setting namespaced kernel parameters using * systemControls for the containers in the task, the following will * apply to your IPC resource namespace. For more information, see System * Controls in the Amazon Elastic Container Service Developer Guide.

*
  • For tasks that use the host IPC mode, IPC namespace * related systemControls are not supported.

  • For * tasks that use the task IPC mode, IPC namespace related * systemControls will apply to all containers within a task.

    *

This parameter is not supported for Windows containers or * tasks using the Fargate launch type.

*/ inline void SetIpcMode(IpcMode&& value) { m_ipcModeHasBeenSet = true; m_ipcMode = std::move(value); } /** *

The IPC resource namespace to use for the containers in the task. The valid * values are host, task, or none. If * host is specified, then all containers within the tasks that * specified the host IPC mode on the same container instance share * the same IPC resources with the host Amazon EC2 instance. If task * is specified, all containers within the specified task share the same IPC * resources. If none is specified, then IPC resources within the * containers of a task are private and not shared with other containers in a task * or on the container instance. If no value is specified, then the IPC resource * namespace sharing depends on the Docker daemon setting on the container * instance. For more information, see IPC * settings in the Docker run reference.

If the host * IPC mode is used, be aware that there is a heightened risk of undesired IPC * namespace expose. For more information, see Docker * security.

If you are setting namespaced kernel parameters using * systemControls for the containers in the task, the following will * apply to your IPC resource namespace. For more information, see System * Controls in the Amazon Elastic Container Service Developer Guide.

*
  • For tasks that use the host IPC mode, IPC namespace * related systemControls are not supported.

  • For * tasks that use the task IPC mode, IPC namespace related * systemControls will apply to all containers within a task.

    *

This parameter is not supported for Windows containers or * tasks using the Fargate launch type.

*/ inline TaskDefinition& WithIpcMode(const IpcMode& value) { SetIpcMode(value); return *this;} /** *

The IPC resource namespace to use for the containers in the task. The valid * values are host, task, or none. If * host is specified, then all containers within the tasks that * specified the host IPC mode on the same container instance share * the same IPC resources with the host Amazon EC2 instance. If task * is specified, all containers within the specified task share the same IPC * resources. If none is specified, then IPC resources within the * containers of a task are private and not shared with other containers in a task * or on the container instance. If no value is specified, then the IPC resource * namespace sharing depends on the Docker daemon setting on the container * instance. For more information, see IPC * settings in the Docker run reference.

If the host * IPC mode is used, be aware that there is a heightened risk of undesired IPC * namespace expose. For more information, see Docker * security.

If you are setting namespaced kernel parameters using * systemControls for the containers in the task, the following will * apply to your IPC resource namespace. For more information, see System * Controls in the Amazon Elastic Container Service Developer Guide.

*
  • For tasks that use the host IPC mode, IPC namespace * related systemControls are not supported.

  • For * tasks that use the task IPC mode, IPC namespace related * systemControls will apply to all containers within a task.

    *

This parameter is not supported for Windows containers or * tasks using the Fargate launch type.

*/ inline TaskDefinition& WithIpcMode(IpcMode&& value) { SetIpcMode(std::move(value)); return *this;} /** *

The configuration details for the App Mesh proxy.

Your Amazon ECS * container instances require at least version 1.26.0 of the container agent and * at least version 1.26.0-1 of the ecs-init package to enable a proxy * configuration. If your container instances are launched from the Amazon * ECS-optimized AMI version 20190301 or later, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer * Guide.

*/ inline const ProxyConfiguration& GetProxyConfiguration() const{ return m_proxyConfiguration; } /** *

The configuration details for the App Mesh proxy.

Your Amazon ECS * container instances require at least version 1.26.0 of the container agent and * at least version 1.26.0-1 of the ecs-init package to enable a proxy * configuration. If your container instances are launched from the Amazon * ECS-optimized AMI version 20190301 or later, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer * Guide.

*/ inline bool ProxyConfigurationHasBeenSet() const { return m_proxyConfigurationHasBeenSet; } /** *

The configuration details for the App Mesh proxy.

Your Amazon ECS * container instances require at least version 1.26.0 of the container agent and * at least version 1.26.0-1 of the ecs-init package to enable a proxy * configuration. If your container instances are launched from the Amazon * ECS-optimized AMI version 20190301 or later, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetProxyConfiguration(const ProxyConfiguration& value) { m_proxyConfigurationHasBeenSet = true; m_proxyConfiguration = value; } /** *

The configuration details for the App Mesh proxy.

Your Amazon ECS * container instances require at least version 1.26.0 of the container agent and * at least version 1.26.0-1 of the ecs-init package to enable a proxy * configuration. If your container instances are launched from the Amazon * ECS-optimized AMI version 20190301 or later, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer * Guide.

*/ inline void SetProxyConfiguration(ProxyConfiguration&& value) { m_proxyConfigurationHasBeenSet = true; m_proxyConfiguration = std::move(value); } /** *

The configuration details for the App Mesh proxy.

Your Amazon ECS * container instances require at least version 1.26.0 of the container agent and * at least version 1.26.0-1 of the ecs-init package to enable a proxy * configuration. If your container instances are launched from the Amazon * ECS-optimized AMI version 20190301 or later, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithProxyConfiguration(const ProxyConfiguration& value) { SetProxyConfiguration(value); return *this;} /** *

The configuration details for the App Mesh proxy.

Your Amazon ECS * container instances require at least version 1.26.0 of the container agent and * at least version 1.26.0-1 of the ecs-init package to enable a proxy * configuration. If your container instances are launched from the Amazon * ECS-optimized AMI version 20190301 or later, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer * Guide.

*/ inline TaskDefinition& WithProxyConfiguration(ProxyConfiguration&& value) { SetProxyConfiguration(std::move(value)); return *this;} private: Aws::String m_taskDefinitionArn; bool m_taskDefinitionArnHasBeenSet; Aws::Vector m_containerDefinitions; bool m_containerDefinitionsHasBeenSet; Aws::String m_family; bool m_familyHasBeenSet; Aws::String m_taskRoleArn; bool m_taskRoleArnHasBeenSet; Aws::String m_executionRoleArn; bool m_executionRoleArnHasBeenSet; NetworkMode m_networkMode; bool m_networkModeHasBeenSet; int m_revision; bool m_revisionHasBeenSet; Aws::Vector m_volumes; bool m_volumesHasBeenSet; TaskDefinitionStatus m_status; bool m_statusHasBeenSet; Aws::Vector m_requiresAttributes; bool m_requiresAttributesHasBeenSet; Aws::Vector m_placementConstraints; bool m_placementConstraintsHasBeenSet; Aws::Vector m_compatibilities; bool m_compatibilitiesHasBeenSet; Aws::Vector m_requiresCompatibilities; bool m_requiresCompatibilitiesHasBeenSet; Aws::String m_cpu; bool m_cpuHasBeenSet; Aws::String m_memory; bool m_memoryHasBeenSet; Aws::Vector m_inferenceAccelerators; bool m_inferenceAcceleratorsHasBeenSet; PidMode m_pidMode; bool m_pidModeHasBeenSet; IpcMode m_ipcMode; bool m_ipcModeHasBeenSet; ProxyConfiguration m_proxyConfiguration; bool m_proxyConfigurationHasBeenSet; }; } // namespace Model } // namespace ECS } // namespace Aws