/** * 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 namespace Aws { namespace ECS { namespace Model { /** */ class RegisterTaskDefinitionRequest : public ECSRequest { public: AWS_ECS_API RegisterTaskDefinitionRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "RegisterTaskDefinition"; } AWS_ECS_API Aws::String SerializePayload() const override; AWS_ECS_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

You must specify a family for a task definition. You can use it * track multiple versions of the same task definition. The family is * used as a name for your task definition. Up to 255 letters (uppercase and * lowercase), numbers, underscores, and hyphens are allowed.

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

The short name or full Amazon Resource Name (ARN) of the IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see 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 IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see 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 IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see 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 IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see 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 IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see 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 IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see IAM * Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

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

The short name or full Amazon Resource Name (ARN) of the IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see IAM * Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

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

The short name or full Amazon Resource Name (ARN) of the IAM role that * containers in this task can assume. All containers in this task are granted the * permissions that are specified in this role. For more information, see IAM * Roles for Tasks in the Amazon Elastic Container Service Developer * Guide.

*/ inline RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& WithNetworkMode(NetworkMode&& value) { SetNetworkMode(std::move(value)); return *this;} /** *

A list of container definitions in JSON format that describe the different * containers that make up your task.

*/ 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.

*/ 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.

*/ 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.

*/ 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.

*/ inline RegisterTaskDefinitionRequest& 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.

*/ inline RegisterTaskDefinitionRequest& 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.

*/ inline RegisterTaskDefinitionRequest& 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.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

A list of volume definitions in JSON format that containers in your task * might use.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

An array of placement constraint objects to use for the task. You can specify * a maximum of 10 constraints for each task. This limit includes constraints in * the task definition and those specified at runtime.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The task launch type that Amazon ECS validates the task definition against. A * client exception is returned if the task definition doesn't validate against the * compatibilities specified. If no value is specified, the parameter is omitted * from the response.

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

The number of CPU units used by the task. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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 RegisterTaskDefinitionRequest& WithCpu(const Aws::String& value) { SetCpu(value); return *this;} /** *

The number of CPU units used by the task. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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 RegisterTaskDefinitionRequest& WithCpu(Aws::String&& value) { SetCpu(std::move(value)); return *this;} /** *

The number of CPU units used by the task. It can be expressed as an integer * using CPU units (for example, 1024) or as a string using vCPUs (for * example, 1 vCPU or 1 vcpu) in a task definition. * String values are converted to an integer indicating the CPU units when the task * definition is registered.

Task-level CPU and memory parameters are * ignored for Windows containers. We recommend specifying container-level * resources for Windows containers.

If you're using the EC2 launch * type, this field is optional. Supported values are between 128 CPU * units (0.125 vCPUs) and 10240 CPU units * (10 vCPUs). If you do not specify a value, the parameter is * ignored.

If you're using the Fargate launch type, this field is required * and you must use one of the following values, which determines your range of * supported 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 RegisterTaskDefinitionRequest& WithCpu(const char* value) { SetCpu(value); return *this;} /** *

The amount of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 RegisterTaskDefinitionRequest& WithMemory(const Aws::String& value) { SetMemory(value); return *this;} /** *

The amount of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 RegisterTaskDefinitionRequest& WithMemory(Aws::String&& value) { SetMemory(std::move(value)); return *this;} /** *

The amount of memory (in MiB) used by the task. It can be expressed as an * integer using MiB (for example ,1024) or as a string using GB (for * example, 1GB or 1 GB) in a task definition. String * values are converted to an integer indicating the MiB when the task definition * is registered.

Task-level CPU and memory parameters are ignored * for Windows containers. We recommend specifying container-level resources for * Windows containers.

If using the EC2 launch type, this field is * optional.

If using the Fargate launch type, this field is required and * you must use one of the following values. This determines your range of * supported values for the cpu parameter.

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

  • *

    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 RegisterTaskDefinitionRequest& WithMemory(const char* value) { SetMemory(value); return *this;} /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline RegisterTaskDefinitionRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline RegisterTaskDefinitionRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline RegisterTaskDefinitionRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

The metadata that you apply to the task definition to help you categorize and * organize them. Each tag consists of a key and an optional value. You define both * of them.

The following basic restrictions apply to tags:

  • *

    Maximum number of tags per resource - 50

  • For each resource, * each tag key must be unique, and each tag key can have only one value.

  • *
  • Maximum key length - 128 Unicode characters in UTF-8

  • *

    Maximum value length - 256 Unicode characters in UTF-8

  • If * your tagging schema is used across multiple services and resources, remember * that other services may have restrictions on allowed characters. Generally * allowed characters are: letters, numbers, and spaces representable in UTF-8, and * the following characters: + - = . _ : / @.

  • Tag keys and values * are case-sensitive.

  • Do not use aws:, * AWS:, or any upper or lowercase combination of such as a prefix for * either keys or values as it is reserved for Amazon Web Services use. You cannot * edit or delete tag keys or values with this prefix. Tags with this prefix do not * count against your tags per resource limit.

*/ inline RegisterTaskDefinitionRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& 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 RegisterTaskDefinitionRequest& WithIpcMode(IpcMode&& value) { SetIpcMode(std::move(value)); return *this;} /** *

The configuration details for the App Mesh proxy.

For tasks hosted on * Amazon EC2 instances, the 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, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized AMI versions in the Amazon Elastic Container Service * Developer Guide.

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

The configuration details for the App Mesh proxy.

For tasks hosted on * Amazon EC2 instances, the 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, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized AMI versions in the Amazon Elastic Container Service * Developer Guide.

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

The configuration details for the App Mesh proxy.

For tasks hosted on * Amazon EC2 instances, the 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, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized AMI versions 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.

For tasks hosted on * Amazon EC2 instances, the 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, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized AMI versions 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.

For tasks hosted on * Amazon EC2 instances, the 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, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized AMI versions in the Amazon Elastic Container Service * Developer Guide.

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

The configuration details for the App Mesh proxy.

For tasks hosted on * Amazon EC2 instances, the 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, then they contain the * required versions of the container agent and ecs-init. For more * information, see Amazon * ECS-optimized AMI versions in the Amazon Elastic Container Service * Developer Guide.

*/ inline RegisterTaskDefinitionRequest& WithProxyConfiguration(ProxyConfiguration&& value) { SetProxyConfiguration(std::move(value)); return *this;} /** *

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The Elastic Inference accelerators to use for the containers in the task.

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

The amount of ephemeral storage to allocate for the task. This parameter is * used to expand the total amount of ephemeral storage available, beyond the * default amount, for tasks hosted on Fargate. For more information, see Fargate * task storage in the Amazon ECS User Guide for Fargate.

*

For tasks using the Fargate launch type, the task requires the following * platforms:

  • Linux platform version 1.4.0 or * later.

  • Windows platform version 1.0.0 or * later.

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

The amount of ephemeral storage to allocate for the task. This parameter is * used to expand the total amount of ephemeral storage available, beyond the * default amount, for tasks hosted on Fargate. For more information, see Fargate * task storage in the Amazon ECS User Guide for Fargate.

*

For tasks using the Fargate launch type, the task requires the following * platforms:

  • Linux platform version 1.4.0 or * later.

  • Windows platform version 1.0.0 or * later.

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

The amount of ephemeral storage to allocate for the task. This parameter is * used to expand the total amount of ephemeral storage available, beyond the * default amount, for tasks hosted on Fargate. For more information, see Fargate * task storage in the Amazon ECS User Guide for Fargate.

*

For tasks using the Fargate launch type, the task requires the following * platforms:

  • Linux platform version 1.4.0 or * later.

  • Windows platform version 1.0.0 or * later.

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

The amount of ephemeral storage to allocate for the task. This parameter is * used to expand the total amount of ephemeral storage available, beyond the * default amount, for tasks hosted on Fargate. For more information, see Fargate * task storage in the Amazon ECS User Guide for Fargate.

*

For tasks using the Fargate launch type, the task requires the following * platforms:

  • Linux platform version 1.4.0 or * later.

  • Windows platform version 1.0.0 or * later.

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

The amount of ephemeral storage to allocate for the task. This parameter is * used to expand the total amount of ephemeral storage available, beyond the * default amount, for tasks hosted on Fargate. For more information, see Fargate * task storage in the Amazon ECS User Guide for Fargate.

*

For tasks using the Fargate launch type, the task requires the following * platforms:

  • Linux platform version 1.4.0 or * later.

  • Windows platform version 1.0.0 or * later.

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

The amount of ephemeral storage to allocate for the task. This parameter is * used to expand the total amount of ephemeral storage available, beyond the * default amount, for tasks hosted on Fargate. For more information, see Fargate * task storage in the Amazon ECS User Guide for Fargate.

*

For tasks using the Fargate launch type, the task requires the following * platforms:

  • Linux platform version 1.4.0 or * later.

  • Windows platform version 1.0.0 or * later.

*/ inline RegisterTaskDefinitionRequest& WithEphemeralStorage(EphemeralStorage&& value) { SetEphemeralStorage(std::move(value)); return *this;} /** *

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

When you specify * a task definition 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 tasks definitions run on. A platform family is * specified only for tasks using the Fargate launch type.

When you specify * a task definition 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 tasks definitions run on. A platform family is * specified only for tasks using the Fargate launch type.

When you specify * a task definition 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 tasks definitions run on. A platform family is * specified only for tasks using the Fargate launch type.

When you specify * a task definition 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 tasks definitions run on. A platform family is * specified only for tasks using the Fargate launch type.

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

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

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

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

*/ inline RegisterTaskDefinitionRequest& WithRuntimePlatform(RuntimePlatform&& value) { SetRuntimePlatform(std::move(value)); return *this;} private: 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; Aws::Vector m_containerDefinitions; bool m_containerDefinitionsHasBeenSet = false; Aws::Vector m_volumes; bool m_volumesHasBeenSet = false; Aws::Vector m_placementConstraints; bool m_placementConstraintsHasBeenSet = 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_tags; bool m_tagsHasBeenSet = false; PidMode m_pidMode; bool m_pidModeHasBeenSet = false; IpcMode m_ipcMode; bool m_ipcModeHasBeenSet = false; ProxyConfiguration m_proxyConfiguration; bool m_proxyConfigurationHasBeenSet = false; Aws::Vector m_inferenceAccelerators; bool m_inferenceAcceleratorsHasBeenSet = false; EphemeralStorage m_ephemeralStorage; bool m_ephemeralStorageHasBeenSet = false; RuntimePlatform m_runtimePlatform; bool m_runtimePlatformHasBeenSet = false; }; } // namespace Model } // namespace ECS } // namespace Aws