/** * 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 #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 TaskDefinition { public: AWS_ECS_API TaskDefinition(); AWS_ECS_API TaskDefinition(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API TaskDefinition& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 * characters are allowed. Letters (both uppercase and lowercase letters), 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Identity and Access * Management role that grants containers in the task permission to call Amazon Web * Services 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 * to use 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 Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services 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. If no network mode is specified, the default is * bridge.

For Amazon ECS tasks on Fargate, the * awsvpc network mode is required. For Amazon ECS tasks on Amazon EC2 * Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon * EC2 Windows instances, <default> or awsvpc 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.

*

When using the host network mode, you should not run * containers using the root user (UID 0). It is considered best practice to use a * non-root user.

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.

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.

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. If no network mode is specified, the default is * bridge.

For Amazon ECS tasks on Fargate, the * awsvpc network mode is required. For Amazon ECS tasks on Amazon EC2 * Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon * EC2 Windows instances, <default> or awsvpc 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.

*

When using the host network mode, you should not run * containers using the root user (UID 0). It is considered best practice to use a * non-root user.

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.

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.

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. If no network mode is specified, the default is * bridge.

For Amazon ECS tasks on Fargate, the * awsvpc network mode is required. For Amazon ECS tasks on Amazon EC2 * Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon * EC2 Windows instances, <default> or awsvpc 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.

*

When using the host network mode, you should not run * containers using the root user (UID 0). It is considered best practice to use a * non-root user.

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.

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.

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. If no network mode is specified, the default is * bridge.

For Amazon ECS tasks on Fargate, the * awsvpc network mode is required. For Amazon ECS tasks on Amazon EC2 * Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon * EC2 Windows instances, <default> or awsvpc 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.

*

When using the host network mode, you should not run * containers using the root user (UID 0). It is considered best practice to use a * non-root user.

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.

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.

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. If no network mode is specified, the default is * bridge.

For Amazon ECS tasks on Fargate, the * awsvpc network mode is required. For Amazon ECS tasks on Amazon EC2 * Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon * EC2 Windows instances, <default> or awsvpc 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.

*

When using the host network mode, you should not run * containers using the root user (UID 0). It is considered best practice to use a * non-root user.

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.

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.

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. If no network mode is specified, the default is * bridge.

For Amazon ECS tasks on Fargate, the * awsvpc network mode is required. For Amazon ECS tasks on Amazon EC2 * Linux instances, any network mode can be used. For Amazon ECS tasks on Amazon * EC2 Windows instances, <default> or awsvpc 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.

*

When using the host network mode, you should not run * containers using the root user (UID 0). It is considered best practice to use a * non-root user.

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.

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.

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. This is even if you 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. This is even if you 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. This is even if you 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. This is even if you deregistered previous revisions in this * family.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

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

The list of data volume definitions for the task. For more information, see * Using * data volumes in tasks in the Amazon Elastic Container Service Developer * Guide.

The host and sourcePath * parameters aren't supported for tasks run on Fargate.

*/ 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. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

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

The container instance attributes required by your task. When an Amazon EC2 * instance is registered to your cluster, the Amazon ECS container agent assigns * some standard attributes to the instance. You can apply custom attributes. These * are specified as key-value pairs using the Amazon ECS console or the * PutAttributes API. These attributes are used when determining task * placement for tasks hosted on Amazon EC2 instances. For more information, see Attributes * in the Amazon Elastic Container Service Developer Guide.

*

This parameter isn't supported for tasks run on Fargate.

*/ 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 * parameter isn't supported for tasks run on Fargate.

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

An array of placement constraint objects to use for tasks.

This * parameter isn't supported for tasks run on Fargate.

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

An array of placement constraint objects to use for tasks.

This * parameter isn't supported for tasks run on Fargate.

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

An array of placement constraint objects to use for tasks.

This * parameter isn't supported for tasks run on Fargate.

*/ 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 * parameter isn't supported for tasks run on Fargate.

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

An array of placement constraint objects to use for tasks.

This * parameter isn't supported for tasks run on Fargate.

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

An array of placement constraint objects to use for tasks.

This * parameter isn't supported for tasks run on Fargate.

*/ 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 * parameter isn't supported for tasks run on Fargate.

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

The task launch types the task definition validated against during task * definition registration. 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 task launch types the task definition validated against during task * definition registration. For more information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition validated against during task * definition registration. 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 task launch types the task definition validated against during task * definition registration. 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 task launch types the task definition validated against during task * definition registration. 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 task launch types the task definition validated against during task * definition registration. 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 task launch types the task definition validated against during task * definition registration. 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 task launch types the task definition validated against during task * definition registration. 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 operating system that your task definitions are running on. A platform * family is specified only for tasks using the Fargate launch type.

When * you specify a task in a service, this value must match the * runtimePlatform value of the service.

*/ inline const RuntimePlatform& GetRuntimePlatform() const{ return m_runtimePlatform; } /** *

The operating system that your task definitions are running on. A platform * family is specified only for tasks using the Fargate launch type.

When * you specify a task in a service, this value must match the * runtimePlatform value of the service.

*/ inline bool RuntimePlatformHasBeenSet() const { return m_runtimePlatformHasBeenSet; } /** *

The operating system that your task definitions are running on. A platform * family is specified only for tasks using the Fargate launch type.

When * you specify a task in a service, this value must match the * runtimePlatform value of the service.

*/ inline void SetRuntimePlatform(const RuntimePlatform& value) { m_runtimePlatformHasBeenSet = true; m_runtimePlatform = value; } /** *

The operating system that your task definitions are running on. A platform * family is specified only for tasks using the Fargate launch type.

When * you specify a task in a service, this value must match the * runtimePlatform value of the service.

*/ inline void SetRuntimePlatform(RuntimePlatform&& value) { m_runtimePlatformHasBeenSet = true; m_runtimePlatform = std::move(value); } /** *

The operating system that your task definitions are running on. A platform * family is specified only for tasks using the Fargate launch type.

When * you specify a task in a service, this value must match the * runtimePlatform value of the service.

*/ inline TaskDefinition& WithRuntimePlatform(const RuntimePlatform& value) { SetRuntimePlatform(value); return *this;} /** *

The operating system that your task definitions are running on. A platform * family is specified only for tasks using the Fargate launch type.

When * you specify a task in a service, this value must match the * runtimePlatform value of the service.

*/ inline TaskDefinition& WithRuntimePlatform(RuntimePlatform&& value) { SetRuntimePlatform(std::move(value)); return *this;} /** *

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

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

The task launch types the task definition was validated against. For more * information, see Amazon * ECS launch types in the Amazon Elastic Container Service Developer * Guide.

*/ 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 use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

The number of cpu units used by the task. If you use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

The number of cpu units used by the task. If you use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

The number of cpu units used by the task. If you use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

*/ 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 use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

The number of cpu units used by the task. If you use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

The number of cpu units used by the task. If you use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

The number of cpu units used by the task. If you use the EC2 * launch type, this field is optional. Any value can be used. If you use the * Fargate launch type, this field is required. You must use one of the following * values. The value that you choose determines your range of valid values for the * memory parameter.

The CPU units cannot be less than 1 vCPU * when you use Windows containers on Fargate.

  • 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: 4096 (4 GB) and 16384 (16 GB) in * increments of 1024 (1 GB)

  • 4096 (4 vCPU) - Available * memory values: 8192 (8 GB) and 30720 (30 GB) in increments of 1024 * (1 GB)

  • 8192 (8 vCPU) - Available memory values: * 16 GB and 60 GB in 4 GB increments

    This option requires Linux platform * 1.4.0 or later.

  • 16384 (16vCPU) - Available * memory values: 32GB and 120 GB in 8 GB increments

    This * option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

  • *
*/ 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 your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

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

If your tasks runs on * Amazon EC2 instances, you must specify either a task-level memory value or a * container-level memory value. This field is optional and any value can be used. * If a task-level memory value is specified, the container-level memory value is * optional. For more information regarding container-level memory and memory * reservation, see ContainerDefinition.

*

If your tasks runs on Fargate, this field is required. You must use one of * the following values. The value you choose 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 16 GB and 60 GB in 4 GB increments - Available * cpu values: 8192 (8 vCPU)

    This option requires Linux * platform 1.4.0 or later.

  • Between 32GB and 120 GB * in 8 GB increments - Available cpu values: 16384 (16 vCPU)

    *

    This option requires Linux platform 1.4.0 or later.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's associated with the task.

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

The Elastic Inference accelerator that's 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 run on Fargate.

*/ 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 use a proxy * configuration. If your container instances are launched from the Amazon ECS * optimized AMI version 20190301 or later, 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 use a proxy * configuration. If your container instances are launched from the Amazon ECS * optimized AMI version 20190301 or later, 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 use a proxy * configuration. If your container instances are launched from the Amazon ECS * optimized AMI version 20190301 or later, 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 use a proxy * configuration. If your container instances are launched from the Amazon ECS * optimized AMI version 20190301 or later, 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 use a proxy * configuration. If your container instances are launched from the Amazon ECS * optimized AMI version 20190301 or later, 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 use a proxy * configuration. If your container instances are launched from the Amazon ECS * optimized AMI version 20190301 or later, 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;} /** *

The Unix timestamp for the time when the task definition was registered.

*/ inline const Aws::Utils::DateTime& GetRegisteredAt() const{ return m_registeredAt; } /** *

The Unix timestamp for the time when the task definition was registered.

*/ inline bool RegisteredAtHasBeenSet() const { return m_registeredAtHasBeenSet; } /** *

The Unix timestamp for the time when the task definition was registered.

*/ inline void SetRegisteredAt(const Aws::Utils::DateTime& value) { m_registeredAtHasBeenSet = true; m_registeredAt = value; } /** *

The Unix timestamp for the time when the task definition was registered.

*/ inline void SetRegisteredAt(Aws::Utils::DateTime&& value) { m_registeredAtHasBeenSet = true; m_registeredAt = std::move(value); } /** *

The Unix timestamp for the time when the task definition was registered.

*/ inline TaskDefinition& WithRegisteredAt(const Aws::Utils::DateTime& value) { SetRegisteredAt(value); return *this;} /** *

The Unix timestamp for the time when the task definition was registered.

*/ inline TaskDefinition& WithRegisteredAt(Aws::Utils::DateTime&& value) { SetRegisteredAt(std::move(value)); return *this;} /** *

The Unix timestamp for the time when the task definition was * deregistered.

*/ inline const Aws::Utils::DateTime& GetDeregisteredAt() const{ return m_deregisteredAt; } /** *

The Unix timestamp for the time when the task definition was * deregistered.

*/ inline bool DeregisteredAtHasBeenSet() const { return m_deregisteredAtHasBeenSet; } /** *

The Unix timestamp for the time when the task definition was * deregistered.

*/ inline void SetDeregisteredAt(const Aws::Utils::DateTime& value) { m_deregisteredAtHasBeenSet = true; m_deregisteredAt = value; } /** *

The Unix timestamp for the time when the task definition was * deregistered.

*/ inline void SetDeregisteredAt(Aws::Utils::DateTime&& value) { m_deregisteredAtHasBeenSet = true; m_deregisteredAt = std::move(value); } /** *

The Unix timestamp for the time when the task definition was * deregistered.

*/ inline TaskDefinition& WithDeregisteredAt(const Aws::Utils::DateTime& value) { SetDeregisteredAt(value); return *this;} /** *

The Unix timestamp for the time when the task definition was * deregistered.

*/ inline TaskDefinition& WithDeregisteredAt(Aws::Utils::DateTime&& value) { SetDeregisteredAt(std::move(value)); return *this;} /** *

The principal that registered the task definition.

*/ inline const Aws::String& GetRegisteredBy() const{ return m_registeredBy; } /** *

The principal that registered the task definition.

*/ inline bool RegisteredByHasBeenSet() const { return m_registeredByHasBeenSet; } /** *

The principal that registered the task definition.

*/ inline void SetRegisteredBy(const Aws::String& value) { m_registeredByHasBeenSet = true; m_registeredBy = value; } /** *

The principal that registered the task definition.

*/ inline void SetRegisteredBy(Aws::String&& value) { m_registeredByHasBeenSet = true; m_registeredBy = std::move(value); } /** *

The principal that registered the task definition.

*/ inline void SetRegisteredBy(const char* value) { m_registeredByHasBeenSet = true; m_registeredBy.assign(value); } /** *

The principal that registered the task definition.

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

The principal that registered the task definition.

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

The principal that registered the task definition.

*/ inline TaskDefinition& WithRegisteredBy(const char* value) { SetRegisteredBy(value); return *this;} /** *

The ephemeral storage settings to use for tasks run with the task * definition.

*/ inline const EphemeralStorage& GetEphemeralStorage() const{ return m_ephemeralStorage; } /** *

The ephemeral storage settings to use for tasks run with the task * definition.

*/ inline bool EphemeralStorageHasBeenSet() const { return m_ephemeralStorageHasBeenSet; } /** *

The ephemeral storage settings to use for tasks run with the task * definition.

*/ inline void SetEphemeralStorage(const EphemeralStorage& value) { m_ephemeralStorageHasBeenSet = true; m_ephemeralStorage = value; } /** *

The ephemeral storage settings to use for tasks run with the task * definition.

*/ inline void SetEphemeralStorage(EphemeralStorage&& value) { m_ephemeralStorageHasBeenSet = true; m_ephemeralStorage = std::move(value); } /** *

The ephemeral storage settings to use for tasks run with the task * definition.

*/ inline TaskDefinition& WithEphemeralStorage(const EphemeralStorage& value) { SetEphemeralStorage(value); return *this;} /** *

The ephemeral storage settings to use for tasks run with the task * definition.

*/ inline TaskDefinition& WithEphemeralStorage(EphemeralStorage&& value) { SetEphemeralStorage(std::move(value)); return *this;} private: Aws::String m_taskDefinitionArn; bool m_taskDefinitionArnHasBeenSet = false; Aws::Vector m_containerDefinitions; bool m_containerDefinitionsHasBeenSet = false; Aws::String m_family; bool m_familyHasBeenSet = false; Aws::String m_taskRoleArn; bool m_taskRoleArnHasBeenSet = false; Aws::String m_executionRoleArn; bool m_executionRoleArnHasBeenSet = false; NetworkMode m_networkMode; bool m_networkModeHasBeenSet = false; int m_revision; bool m_revisionHasBeenSet = false; Aws::Vector m_volumes; bool m_volumesHasBeenSet = false; TaskDefinitionStatus m_status; bool m_statusHasBeenSet = false; Aws::Vector m_requiresAttributes; bool m_requiresAttributesHasBeenSet = false; Aws::Vector m_placementConstraints; bool m_placementConstraintsHasBeenSet = false; Aws::Vector m_compatibilities; bool m_compatibilitiesHasBeenSet = false; RuntimePlatform m_runtimePlatform; bool m_runtimePlatformHasBeenSet = false; Aws::Vector m_requiresCompatibilities; bool m_requiresCompatibilitiesHasBeenSet = false; Aws::String m_cpu; bool m_cpuHasBeenSet = false; Aws::String m_memory; bool m_memoryHasBeenSet = false; Aws::Vector m_inferenceAccelerators; bool m_inferenceAcceleratorsHasBeenSet = false; PidMode m_pidMode; bool m_pidModeHasBeenSet = false; IpcMode m_ipcMode; bool m_ipcModeHasBeenSet = false; ProxyConfiguration m_proxyConfiguration; bool m_proxyConfigurationHasBeenSet = false; Aws::Utils::DateTime m_registeredAt; bool m_registeredAtHasBeenSet = false; Aws::Utils::DateTime m_deregisteredAt; bool m_deregisteredAtHasBeenSet = false; Aws::String m_registeredBy; bool m_registeredByHasBeenSet = false; EphemeralStorage m_ephemeralStorage; bool m_ephemeralStorageHasBeenSet = false; }; } // namespace Model } // namespace ECS } // namespace Aws