/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.ecs.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.AmazonWebServiceRequest; /** * * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class RegisterTaskDefinitionRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable { /** *

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

*/ private String family; /** *

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

*/ private String taskRoleArn; /** *

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

*/ private String executionRoleArn; /** *

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

*/ private String networkMode; /** *

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

*/ private com.amazonaws.internal.SdkInternalList containerDefinitions; /** *

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

*/ private com.amazonaws.internal.SdkInternalList volumes; /** *

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

*/ private com.amazonaws.internal.SdkInternalList placementConstraints; /** *

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

*/ private com.amazonaws.internal.SdkInternalList requiresCompatibilities; /** *

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

    *
  • *
*/ private String cpu; /** *

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

    *
  • *
*/ private String memory; /** *

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

    *
  • *
*/ private com.amazonaws.internal.SdkInternalList tags; /** *

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

*
*/ private String pidMode; /** *

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

*
*/ private String ipcMode; /** *

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

*/ private ProxyConfiguration proxyConfiguration; /** *

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

*/ private com.amazonaws.internal.SdkInternalList inferenceAccelerators; /** *

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

    *
  • *
*
*/ private EphemeralStorage ephemeralStorage; /** *

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

*/ private RuntimePlatform runtimePlatform; /** *

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

* * @param 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. */ public void setFamily(String family) { this.family = 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. *

* * @return 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. */ public String getFamily() { return this.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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withFamily(String family) { setFamily(family); 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. *

* * @param 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. */ public void setTaskRoleArn(String taskRoleArn) { this.taskRoleArn = 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. *

* * @return 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. */ public String getTaskRoleArn() { return this.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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withTaskRoleArn(String taskRoleArn) { setTaskRoleArn(taskRoleArn); 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. *

* * @param 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. */ public void setExecutionRoleArn(String executionRoleArn) { this.executionRoleArn = 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. *

* * @return 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. */ public String getExecutionRoleArn() { return this.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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withExecutionRoleArn(String executionRoleArn) { setExecutionRoleArn(executionRoleArn); 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. *

* * @param 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. * @see NetworkMode */ public void setNetworkMode(String networkMode) { this.networkMode = 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. *

* * @return 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. * @see NetworkMode */ public String getNetworkMode() { return this.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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see NetworkMode */ public RegisterTaskDefinitionRequest withNetworkMode(String networkMode) { setNetworkMode(networkMode); 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. *

* * @param 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. * @see NetworkMode */ public void setNetworkMode(NetworkMode networkMode) { withNetworkMode(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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see NetworkMode */ public RegisterTaskDefinitionRequest withNetworkMode(NetworkMode networkMode) { this.networkMode = networkMode.toString(); return this; } /** *

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

* * @return A list of container definitions in JSON format that describe the different containers that make up your * task. */ public java.util.List getContainerDefinitions() { if (containerDefinitions == null) { containerDefinitions = new com.amazonaws.internal.SdkInternalList(); } return containerDefinitions; } /** *

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

* * @param containerDefinitions * A list of container definitions in JSON format that describe the different containers that make up your * task. */ public void setContainerDefinitions(java.util.Collection containerDefinitions) { if (containerDefinitions == null) { this.containerDefinitions = null; return; } this.containerDefinitions = new com.amazonaws.internal.SdkInternalList(containerDefinitions); } /** *

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

*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setContainerDefinitions(java.util.Collection)} or {@link #withContainerDefinitions(java.util.Collection)} * if you want to override the existing values. *

* * @param containerDefinitions * A list of container definitions in JSON format that describe the different containers that make up your * task. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withContainerDefinitions(ContainerDefinition... containerDefinitions) { if (this.containerDefinitions == null) { setContainerDefinitions(new com.amazonaws.internal.SdkInternalList(containerDefinitions.length)); } for (ContainerDefinition ele : containerDefinitions) { this.containerDefinitions.add(ele); } return this; } /** *

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

* * @param containerDefinitions * A list of container definitions in JSON format that describe the different containers that make up your * task. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withContainerDefinitions(java.util.Collection containerDefinitions) { setContainerDefinitions(containerDefinitions); return this; } /** *

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

* * @return A list of volume definitions in JSON format that containers in your task might use. */ public java.util.List getVolumes() { if (volumes == null) { volumes = new com.amazonaws.internal.SdkInternalList(); } return volumes; } /** *

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

* * @param volumes * A list of volume definitions in JSON format that containers in your task might use. */ public void setVolumes(java.util.Collection volumes) { if (volumes == null) { this.volumes = null; return; } this.volumes = new com.amazonaws.internal.SdkInternalList(volumes); } /** *

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

*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setVolumes(java.util.Collection)} or {@link #withVolumes(java.util.Collection)} if you want to override * the existing values. *

* * @param volumes * A list of volume definitions in JSON format that containers in your task might use. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withVolumes(Volume... volumes) { if (this.volumes == null) { setVolumes(new com.amazonaws.internal.SdkInternalList(volumes.length)); } for (Volume ele : volumes) { this.volumes.add(ele); } return this; } /** *

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

* * @param volumes * A list of volume definitions in JSON format that containers in your task might use. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withVolumes(java.util.Collection volumes) { setVolumes(volumes); 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. *

* * @return 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. */ public java.util.List getPlacementConstraints() { if (placementConstraints == null) { placementConstraints = new com.amazonaws.internal.SdkInternalList(); } return 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. *

* * @param 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. */ public void setPlacementConstraints(java.util.Collection placementConstraints) { if (placementConstraints == null) { this.placementConstraints = null; return; } this.placementConstraints = new com.amazonaws.internal.SdkInternalList(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. *

*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setPlacementConstraints(java.util.Collection)} or {@link #withPlacementConstraints(java.util.Collection)} * if you want to override the existing values. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withPlacementConstraints(TaskDefinitionPlacementConstraint... placementConstraints) { if (this.placementConstraints == null) { setPlacementConstraints(new com.amazonaws.internal.SdkInternalList(placementConstraints.length)); } for (TaskDefinitionPlacementConstraint ele : placementConstraints) { this.placementConstraints.add(ele); } 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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withPlacementConstraints(java.util.Collection placementConstraints) { setPlacementConstraints(placementConstraints); 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. *

* * @return 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. * @see Compatibility */ public java.util.List getRequiresCompatibilities() { if (requiresCompatibilities == null) { requiresCompatibilities = new com.amazonaws.internal.SdkInternalList(); } return 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. *

* * @param 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. * @see Compatibility */ public void setRequiresCompatibilities(java.util.Collection requiresCompatibilities) { if (requiresCompatibilities == null) { this.requiresCompatibilities = null; return; } this.requiresCompatibilities = new com.amazonaws.internal.SdkInternalList(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. *

*

* NOTE: This method appends the values to the existing list (if any). Use * {@link #setRequiresCompatibilities(java.util.Collection)} or * {@link #withRequiresCompatibilities(java.util.Collection)} if you want to override the existing values. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see Compatibility */ public RegisterTaskDefinitionRequest withRequiresCompatibilities(String... requiresCompatibilities) { if (this.requiresCompatibilities == null) { setRequiresCompatibilities(new com.amazonaws.internal.SdkInternalList(requiresCompatibilities.length)); } for (String ele : requiresCompatibilities) { this.requiresCompatibilities.add(ele); } 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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see Compatibility */ public RegisterTaskDefinitionRequest withRequiresCompatibilities(java.util.Collection requiresCompatibilities) { setRequiresCompatibilities(requiresCompatibilities); 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. *

* * @param 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. * @return Returns a reference to this object so that method calls can be chained together. * @see Compatibility */ public RegisterTaskDefinitionRequest withRequiresCompatibilities(Compatibility... requiresCompatibilities) { com.amazonaws.internal.SdkInternalList requiresCompatibilitiesCopy = new com.amazonaws.internal.SdkInternalList( requiresCompatibilities.length); for (Compatibility value : requiresCompatibilities) { requiresCompatibilitiesCopy.add(value.toString()); } if (getRequiresCompatibilities() == null) { setRequiresCompatibilities(requiresCompatibilitiesCopy); } else { getRequiresCompatibilities().addAll(requiresCompatibilitiesCopy); } 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. *

    *
  • *
* * @param 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. *

    *
  • */ public void setCpu(String cpu) { this.cpu = 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. *

      *
    • *
    * * @return 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. *

      *
    • */ public String getCpu() { return this.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. *

        *
      • *
      * * @param 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. *

        *
      • * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withCpu(String cpu) { setCpu(cpu); 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. *

          *
        • *
        * * @param 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. *

          *
        • */ public void setMemory(String memory) { this.memory = 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. *

            *
          • *
          * * @return 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. *

            *
          • */ public String getMemory() { return this.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. *

              *
            • *
            * * @param 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. *

              *
            • * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withMemory(String memory) { setMemory(memory); 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. *

                *
              • *
              * * @return 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. *

                *
              • */ public java.util.List getTags() { if (tags == null) { tags = new com.amazonaws.internal.SdkInternalList(); } return 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. *

                  *
                • *
                * * @param 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. *

                  *
                • */ public void setTags(java.util.Collection tags) { if (tags == null) { this.tags = null; return; } this.tags = new com.amazonaws.internal.SdkInternalList(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. *

                    *
                  • *
                  *

                  * NOTE: This method appends the values to the existing list (if any). Use * {@link #setTags(java.util.Collection)} or {@link #withTags(java.util.Collection)} if you want to override the * existing values. *

                  * * @param 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. *

                    *
                  • * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withTags(Tag... tags) { if (this.tags == null) { setTags(new com.amazonaws.internal.SdkInternalList(tags.length)); } for (Tag ele : tags) { this.tags.add(ele); } 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. *

                      *
                    • *
                    * * @param 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. *

                      *
                    • * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withTags(java.util.Collection tags) { setTags(tags); 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. *

                      *
                      * * @param 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. *

                      * @see PidMode */ public void setPidMode(String pidMode) { this.pidMode = 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. *

                      *
                      * * @return 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. *

                      * @see PidMode */ public String getPidMode() { return this.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. *

                      *
                      * * @param 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. *

                      * @return Returns a reference to this object so that method calls can be chained together. * @see PidMode */ public RegisterTaskDefinitionRequest withPidMode(String pidMode) { setPidMode(pidMode); 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. *

                      *
                      * * @param 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. *

                      * @see PidMode */ public void setPidMode(PidMode pidMode) { withPidMode(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. *

                      *
                      * * @param 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. *

                      * @return Returns a reference to this object so that method calls can be chained together. * @see PidMode */ public RegisterTaskDefinitionRequest withPidMode(PidMode pidMode) { this.pidMode = pidMode.toString(); 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. *

                      *
                      * * @param 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. *

                      * @see IpcMode */ public void setIpcMode(String ipcMode) { this.ipcMode = 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. *

                      *
                      * * @return 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. *

                      * @see IpcMode */ public String getIpcMode() { return this.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. *

                      *
                      * * @param 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. *

                      * @return Returns a reference to this object so that method calls can be chained together. * @see IpcMode */ public RegisterTaskDefinitionRequest withIpcMode(String ipcMode) { setIpcMode(ipcMode); 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. *

                      *
                      * * @param 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. *

                      * @see IpcMode */ public void setIpcMode(IpcMode ipcMode) { withIpcMode(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. *

                      *
                      * * @param 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. *

                      * @return Returns a reference to this object so that method calls can be chained together. * @see IpcMode */ public RegisterTaskDefinitionRequest withIpcMode(IpcMode ipcMode) { this.ipcMode = ipcMode.toString(); 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. *

                      * * @param 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. */ public void setProxyConfiguration(ProxyConfiguration proxyConfiguration) { this.proxyConfiguration = 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. *

                      * * @return 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. */ public ProxyConfiguration getProxyConfiguration() { return this.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. *

                      * * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withProxyConfiguration(ProxyConfiguration proxyConfiguration) { setProxyConfiguration(proxyConfiguration); return this; } /** *

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

                      * * @return The Elastic Inference accelerators to use for the containers in the task. */ public java.util.List getInferenceAccelerators() { if (inferenceAccelerators == null) { inferenceAccelerators = new com.amazonaws.internal.SdkInternalList(); } return inferenceAccelerators; } /** *

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

                      * * @param inferenceAccelerators * The Elastic Inference accelerators to use for the containers in the task. */ public void setInferenceAccelerators(java.util.Collection inferenceAccelerators) { if (inferenceAccelerators == null) { this.inferenceAccelerators = null; return; } this.inferenceAccelerators = new com.amazonaws.internal.SdkInternalList(inferenceAccelerators); } /** *

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

                      *

                      * NOTE: This method appends the values to the existing list (if any). Use * {@link #setInferenceAccelerators(java.util.Collection)} or * {@link #withInferenceAccelerators(java.util.Collection)} if you want to override the existing values. *

                      * * @param inferenceAccelerators * The Elastic Inference accelerators to use for the containers in the task. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withInferenceAccelerators(InferenceAccelerator... inferenceAccelerators) { if (this.inferenceAccelerators == null) { setInferenceAccelerators(new com.amazonaws.internal.SdkInternalList(inferenceAccelerators.length)); } for (InferenceAccelerator ele : inferenceAccelerators) { this.inferenceAccelerators.add(ele); } return this; } /** *

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

                      * * @param inferenceAccelerators * The Elastic Inference accelerators to use for the containers in the task. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withInferenceAccelerators(java.util.Collection inferenceAccelerators) { setInferenceAccelerators(inferenceAccelerators); 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. *

                        *
                      • *
                      *
                      * * @param 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. *

                        *
                      • *
                      */ public void setEphemeralStorage(EphemeralStorage ephemeralStorage) { this.ephemeralStorage = 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. *

                        *
                      • *
                      *
                      * * @return 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. *

                        *
                      • *
                      */ public EphemeralStorage getEphemeralStorage() { return this.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. *

                        *
                      • *
                      *
                      * * @param 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. *

                        *
                      • *
                      * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withEphemeralStorage(EphemeralStorage ephemeralStorage) { setEphemeralStorage(ephemeralStorage); 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. *

                      * * @param 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. */ public void setRuntimePlatform(RuntimePlatform runtimePlatform) { this.runtimePlatform = 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. *

                      * * @return 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. */ public RuntimePlatform getRuntimePlatform() { return this.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. *

                      * * @param 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. * @return Returns a reference to this object so that method calls can be chained together. */ public RegisterTaskDefinitionRequest withRuntimePlatform(RuntimePlatform runtimePlatform) { setRuntimePlatform(runtimePlatform); return this; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getFamily() != null) sb.append("Family: ").append(getFamily()).append(","); if (getTaskRoleArn() != null) sb.append("TaskRoleArn: ").append(getTaskRoleArn()).append(","); if (getExecutionRoleArn() != null) sb.append("ExecutionRoleArn: ").append(getExecutionRoleArn()).append(","); if (getNetworkMode() != null) sb.append("NetworkMode: ").append(getNetworkMode()).append(","); if (getContainerDefinitions() != null) sb.append("ContainerDefinitions: ").append(getContainerDefinitions()).append(","); if (getVolumes() != null) sb.append("Volumes: ").append(getVolumes()).append(","); if (getPlacementConstraints() != null) sb.append("PlacementConstraints: ").append(getPlacementConstraints()).append(","); if (getRequiresCompatibilities() != null) sb.append("RequiresCompatibilities: ").append(getRequiresCompatibilities()).append(","); if (getCpu() != null) sb.append("Cpu: ").append(getCpu()).append(","); if (getMemory() != null) sb.append("Memory: ").append(getMemory()).append(","); if (getTags() != null) sb.append("Tags: ").append(getTags()).append(","); if (getPidMode() != null) sb.append("PidMode: ").append(getPidMode()).append(","); if (getIpcMode() != null) sb.append("IpcMode: ").append(getIpcMode()).append(","); if (getProxyConfiguration() != null) sb.append("ProxyConfiguration: ").append(getProxyConfiguration()).append(","); if (getInferenceAccelerators() != null) sb.append("InferenceAccelerators: ").append(getInferenceAccelerators()).append(","); if (getEphemeralStorage() != null) sb.append("EphemeralStorage: ").append(getEphemeralStorage()).append(","); if (getRuntimePlatform() != null) sb.append("RuntimePlatform: ").append(getRuntimePlatform()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof RegisterTaskDefinitionRequest == false) return false; RegisterTaskDefinitionRequest other = (RegisterTaskDefinitionRequest) obj; if (other.getFamily() == null ^ this.getFamily() == null) return false; if (other.getFamily() != null && other.getFamily().equals(this.getFamily()) == false) return false; if (other.getTaskRoleArn() == null ^ this.getTaskRoleArn() == null) return false; if (other.getTaskRoleArn() != null && other.getTaskRoleArn().equals(this.getTaskRoleArn()) == false) return false; if (other.getExecutionRoleArn() == null ^ this.getExecutionRoleArn() == null) return false; if (other.getExecutionRoleArn() != null && other.getExecutionRoleArn().equals(this.getExecutionRoleArn()) == false) return false; if (other.getNetworkMode() == null ^ this.getNetworkMode() == null) return false; if (other.getNetworkMode() != null && other.getNetworkMode().equals(this.getNetworkMode()) == false) return false; if (other.getContainerDefinitions() == null ^ this.getContainerDefinitions() == null) return false; if (other.getContainerDefinitions() != null && other.getContainerDefinitions().equals(this.getContainerDefinitions()) == false) return false; if (other.getVolumes() == null ^ this.getVolumes() == null) return false; if (other.getVolumes() != null && other.getVolumes().equals(this.getVolumes()) == false) return false; if (other.getPlacementConstraints() == null ^ this.getPlacementConstraints() == null) return false; if (other.getPlacementConstraints() != null && other.getPlacementConstraints().equals(this.getPlacementConstraints()) == false) return false; if (other.getRequiresCompatibilities() == null ^ this.getRequiresCompatibilities() == null) return false; if (other.getRequiresCompatibilities() != null && other.getRequiresCompatibilities().equals(this.getRequiresCompatibilities()) == false) return false; if (other.getCpu() == null ^ this.getCpu() == null) return false; if (other.getCpu() != null && other.getCpu().equals(this.getCpu()) == false) return false; if (other.getMemory() == null ^ this.getMemory() == null) return false; if (other.getMemory() != null && other.getMemory().equals(this.getMemory()) == false) return false; if (other.getTags() == null ^ this.getTags() == null) return false; if (other.getTags() != null && other.getTags().equals(this.getTags()) == false) return false; if (other.getPidMode() == null ^ this.getPidMode() == null) return false; if (other.getPidMode() != null && other.getPidMode().equals(this.getPidMode()) == false) return false; if (other.getIpcMode() == null ^ this.getIpcMode() == null) return false; if (other.getIpcMode() != null && other.getIpcMode().equals(this.getIpcMode()) == false) return false; if (other.getProxyConfiguration() == null ^ this.getProxyConfiguration() == null) return false; if (other.getProxyConfiguration() != null && other.getProxyConfiguration().equals(this.getProxyConfiguration()) == false) return false; if (other.getInferenceAccelerators() == null ^ this.getInferenceAccelerators() == null) return false; if (other.getInferenceAccelerators() != null && other.getInferenceAccelerators().equals(this.getInferenceAccelerators()) == false) return false; if (other.getEphemeralStorage() == null ^ this.getEphemeralStorage() == null) return false; if (other.getEphemeralStorage() != null && other.getEphemeralStorage().equals(this.getEphemeralStorage()) == false) return false; if (other.getRuntimePlatform() == null ^ this.getRuntimePlatform() == null) return false; if (other.getRuntimePlatform() != null && other.getRuntimePlatform().equals(this.getRuntimePlatform()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getFamily() == null) ? 0 : getFamily().hashCode()); hashCode = prime * hashCode + ((getTaskRoleArn() == null) ? 0 : getTaskRoleArn().hashCode()); hashCode = prime * hashCode + ((getExecutionRoleArn() == null) ? 0 : getExecutionRoleArn().hashCode()); hashCode = prime * hashCode + ((getNetworkMode() == null) ? 0 : getNetworkMode().hashCode()); hashCode = prime * hashCode + ((getContainerDefinitions() == null) ? 0 : getContainerDefinitions().hashCode()); hashCode = prime * hashCode + ((getVolumes() == null) ? 0 : getVolumes().hashCode()); hashCode = prime * hashCode + ((getPlacementConstraints() == null) ? 0 : getPlacementConstraints().hashCode()); hashCode = prime * hashCode + ((getRequiresCompatibilities() == null) ? 0 : getRequiresCompatibilities().hashCode()); hashCode = prime * hashCode + ((getCpu() == null) ? 0 : getCpu().hashCode()); hashCode = prime * hashCode + ((getMemory() == null) ? 0 : getMemory().hashCode()); hashCode = prime * hashCode + ((getTags() == null) ? 0 : getTags().hashCode()); hashCode = prime * hashCode + ((getPidMode() == null) ? 0 : getPidMode().hashCode()); hashCode = prime * hashCode + ((getIpcMode() == null) ? 0 : getIpcMode().hashCode()); hashCode = prime * hashCode + ((getProxyConfiguration() == null) ? 0 : getProxyConfiguration().hashCode()); hashCode = prime * hashCode + ((getInferenceAccelerators() == null) ? 0 : getInferenceAccelerators().hashCode()); hashCode = prime * hashCode + ((getEphemeralStorage() == null) ? 0 : getEphemeralStorage().hashCode()); hashCode = prime * hashCode + ((getRuntimePlatform() == null) ? 0 : getRuntimePlatform().hashCode()); return hashCode; } @Override public RegisterTaskDefinitionRequest clone() { return (RegisterTaskDefinitionRequest) super.clone(); } }