/* * Copyright 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. */ /* * Do not modify this file. This file is generated from the ecs-2014-11-13.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.ECS.Model { /// /// Container for the parameters to the RegisterTaskDefinition operation. /// Registers a new task definition from the supplied family and containerDefinitions. /// Optionally, you can add data volumes to your containers with the volumes /// parameter. For more information about task definition parameters and defaults, see /// Amazon /// ECS Task Definitions in the Amazon Elastic Container Service Developer Guide. /// /// /// /// You can specify a role for your task with the taskRoleArn parameter. /// When you specify a role for a task, its containers can then use the latest versions /// of the CLI or SDKs to make API requests to the Amazon Web Services services that are /// specified in the policy that's associated with the role. For more information, see /// IAM /// Roles for Tasks in the Amazon Elastic Container Service Developer Guide. /// /// /// /// You can specify a Docker networking mode for the containers in your task definition /// with the networkMode parameter. The available network modes correspond /// to those described in Network /// settings in the Docker run reference. If you specify the awsvpc network /// mode, the task is allocated an elastic network interface, and you must specify a NetworkConfiguration /// 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. /// /// public partial class RegisterTaskDefinitionRequest : AmazonECSRequest { private List _containerDefinitions = new List(); private string _cpu; private EphemeralStorage _ephemeralStorage; private string _executionRoleArn; private string _family; private List _inferenceAccelerators = new List(); private IpcMode _ipcMode; private string _memory; private NetworkMode _networkMode; private PidMode _pidMode; private List _placementConstraints = new List(); private ProxyConfiguration _proxyConfiguration; private List _requiresCompatibilities = new List(); private RuntimePlatform _runtimePlatform; private List _tags = new List(); private string _taskRoleArn; private List _volumes = new List(); /// /// Gets and sets the property ContainerDefinitions. /// /// A list of container definitions in JSON format that describe the different containers /// that make up your task. /// /// [AWSProperty(Required=true)] public List ContainerDefinitions { get { return this._containerDefinitions; } set { this._containerDefinitions = value; } } // Check to see if ContainerDefinitions property is set internal bool IsSetContainerDefinitions() { return this._containerDefinitions != null && this._containerDefinitions.Count > 0; } /// /// Gets and sets the property 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 string Cpu { get { return this._cpu; } set { this._cpu = value; } } // Check to see if Cpu property is set internal bool IsSetCpu() { return this._cpu != null; } /// /// Gets and sets the property 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 EphemeralStorage EphemeralStorage { get { return this._ephemeralStorage; } set { this._ephemeralStorage = value; } } // Check to see if EphemeralStorage property is set internal bool IsSetEphemeralStorage() { return this._ephemeralStorage != null; } /// /// Gets and sets the property 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 string ExecutionRoleArn { get { return this._executionRoleArn; } set { this._executionRoleArn = value; } } // Check to see if ExecutionRoleArn property is set internal bool IsSetExecutionRoleArn() { return this._executionRoleArn != null; } /// /// Gets and sets the property 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. /// /// [AWSProperty(Required=true)] public string Family { get { return this._family; } set { this._family = value; } } // Check to see if Family property is set internal bool IsSetFamily() { return this._family != null; } /// /// Gets and sets the property InferenceAccelerators. /// /// The Elastic Inference accelerators to use for the containers in the task. /// /// public List InferenceAccelerators { get { return this._inferenceAccelerators; } set { this._inferenceAccelerators = value; } } // Check to see if InferenceAccelerators property is set internal bool IsSetInferenceAccelerators() { return this._inferenceAccelerators != null && this._inferenceAccelerators.Count > 0; } /// /// Gets and sets the property 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. /// /// ///
public IpcMode IpcMode { get { return this._ipcMode; } set { this._ipcMode = value; } } // Check to see if IpcMode property is set internal bool IsSetIpcMode() { return this._ipcMode != null; } /// /// Gets and sets the property 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 string Memory { get { return this._memory; } set { this._memory = value; } } // Check to see if Memory property is set internal bool IsSetMemory() { return this._memory != null; } /// /// Gets and sets the property 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. /// /// public NetworkMode NetworkMode { get { return this._networkMode; } set { this._networkMode = value; } } // Check to see if NetworkMode property is set internal bool IsSetNetworkMode() { return this._networkMode != null; } /// /// Gets and sets the property 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. /// /// /// public PidMode PidMode { get { return this._pidMode; } set { this._pidMode = value; } } // Check to see if PidMode property is set internal bool IsSetPidMode() { return this._pidMode != null; } /// /// Gets and sets the property 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 List PlacementConstraints { get { return this._placementConstraints; } set { this._placementConstraints = value; } } // Check to see if PlacementConstraints property is set internal bool IsSetPlacementConstraints() { return this._placementConstraints != null && this._placementConstraints.Count > 0; } /// /// Gets and sets the property 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 ProxyConfiguration ProxyConfiguration { get { return this._proxyConfiguration; } set { this._proxyConfiguration = value; } } // Check to see if ProxyConfiguration property is set internal bool IsSetProxyConfiguration() { return this._proxyConfiguration != null; } /// /// Gets and sets the property 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. /// /// public List RequiresCompatibilities { get { return this._requiresCompatibilities; } set { this._requiresCompatibilities = value; } } // Check to see if RequiresCompatibilities property is set internal bool IsSetRequiresCompatibilities() { return this._requiresCompatibilities != null && this._requiresCompatibilities.Count > 0; } /// /// Gets and sets the property 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 RuntimePlatform RuntimePlatform { get { return this._runtimePlatform; } set { this._runtimePlatform = value; } } // Check to see if RuntimePlatform property is set internal bool IsSetRuntimePlatform() { return this._runtimePlatform != null; } /// /// Gets and sets the property 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. /// ///
///
[AWSProperty(Min=0, Max=50)] public List Tags { get { return this._tags; } set { this._tags = value; } } // Check to see if Tags property is set internal bool IsSetTags() { return this._tags != null && this._tags.Count > 0; } /// /// Gets and sets the property 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 string TaskRoleArn { get { return this._taskRoleArn; } set { this._taskRoleArn = value; } } // Check to see if TaskRoleArn property is set internal bool IsSetTaskRoleArn() { return this._taskRoleArn != null; } /// /// Gets and sets the property Volumes. /// /// A list of volume definitions in JSON format that containers in your task might use. /// /// public List Volumes { get { return this._volumes; } set { this._volumes = value; } } // Check to see if Volumes property is set internal bool IsSetVolumes() { return this._volumes != null && this._volumes.Count > 0; } } }