/* * 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 { /// /// The details of a task definition which describes the container and volume definitions /// of an Amazon Elastic Container Service task. You can specify which Docker images to /// use, the required resources, and other configurations related to launching the task /// definition through an Amazon ECS service or task. /// public partial class TaskDefinition { private List _compatibilities = new List(); private List _containerDefinitions = new List(); private string _cpu; private DateTime? _deregisteredAt; 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 DateTime? _registeredAt; private string _registeredBy; private List _requiresAttributes = new List(); private List _requiresCompatibilities = new List(); private int? _revision; private RuntimePlatform _runtimePlatform; private TaskDefinitionStatus _status; private string _taskDefinitionArn; private string _taskRoleArn; private List _volumes = new List(); /// /// Gets and sets the property Compatibilities. /// /// The task launch types the task definition validated against during task definition /// registration. For more information, see Amazon /// ECS launch types in the Amazon Elastic Container Service Developer Guide. /// /// public List Compatibilities { get { return this._compatibilities; } set { this._compatibilities = value; } } // Check to see if Compatibilities property is set internal bool IsSetCompatibilities() { return this._compatibilities != null && this._compatibilities.Count > 0; } /// /// Gets and sets the property ContainerDefinitions. /// /// A list of container definitions in JSON format that describe the different containers /// that make up your task. For more information about container definition parameters /// and defaults, see Amazon /// ECS Task Definitions in the Amazon Elastic Container Service Developer Guide. /// /// 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. If you use the EC2 launch type, /// this field is optional. Any value can be used. If you use the Fargate launch type, /// this field is required. You must use one of the following values. The value that you /// choose determines your range of valid values for the memory parameter. /// /// /// /// The CPU units cannot be less than 1 vCPU when you use Windows containers on Fargate. /// ///
  • /// /// 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), /// 2048 (2 GB) /// ///
  • /// /// 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 /// (3 GB), 4096 (4 GB) /// ///
  • /// /// 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 /// (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) /// ///
  • /// /// 2048 (2 vCPU) - Available memory values: 4096 (4 GB) and 16384 (16 GB) /// in increments of 1024 (1 GB) /// ///
  • /// /// 4096 (4 vCPU) - Available memory values: 8192 (8 GB) and 30720 (30 GB) /// in increments of 1024 (1 GB) /// ///
  • /// /// 8192 (8 vCPU) - Available memory values: 16 GB and 60 GB in 4 GB increments /// /// /// /// This option requires Linux platform 1.4.0 or later. /// ///
  • /// /// 16384 (16vCPU) - Available memory values: 32GB and 120 GB in 8 GB increments /// /// /// /// This option requires Linux platform 1.4.0 or later. /// ///
///
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 DeregisteredAt. /// /// The Unix timestamp for the time when the task definition was deregistered. /// /// public DateTime DeregisteredAt { get { return this._deregisteredAt.GetValueOrDefault(); } set { this._deregisteredAt = value; } } // Check to see if DeregisteredAt property is set internal bool IsSetDeregisteredAt() { return this._deregisteredAt.HasValue; } /// /// Gets and sets the property EphemeralStorage. /// /// The ephemeral storage settings to use for tasks run with the task definition. /// /// 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. /// /// The name of a family that this task definition is registered to. Up to 255 characters /// are allowed. Letters (both uppercase and lowercase letters), numbers, hyphens (-), /// and underscores (_) are allowed. /// /// /// /// A family groups multiple versions of a task definition. Amazon ECS gives the first /// task definition that you registered to a family a revision number of 1. Amazon ECS /// gives sequential revision numbers to each task definition that you add. /// /// 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 accelerator that's associated with 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 (in MiB) of memory used by the task. /// /// /// /// If your tasks runs on Amazon EC2 instances, you must specify either a task-level memory /// value or a container-level memory value. This field is optional and any value can /// be used. If a task-level memory value is specified, the container-level memory value /// is optional. For more information regarding container-level memory and memory reservation, /// see ContainerDefinition. /// /// /// /// If your tasks runs on Fargate, this field is required. You must use one of the following /// values. The value you choose determines your range of valid values for the cpu /// parameter. /// ///
  • /// /// 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 /// vCPU) /// ///
  • /// /// 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: /// 512 (.5 vCPU) /// ///
  • /// /// 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 /// (8 GB) - Available cpu values: 1024 (1 vCPU) /// ///
  • /// /// Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu /// values: 2048 (2 vCPU) /// ///
  • /// /// Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu /// values: 4096 (4 vCPU) /// ///
  • /// /// Between 16 GB and 60 GB in 4 GB increments - Available cpu values: 8192 /// (8 vCPU) /// /// /// /// This option requires Linux platform 1.4.0 or later. /// ///
  • /// /// Between 32GB and 120 GB in 8 GB increments - Available cpu values: 16384 /// (16 vCPU) /// /// /// /// This option requires Linux platform 1.4.0 or later. /// ///
///
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 tasks. /// /// /// /// This parameter isn't supported for tasks run on Fargate. /// /// /// 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. /// /// /// /// Your Amazon ECS container instances require at least version 1.26.0 of the container /// agent and at least version 1.26.0-1 of the ecs-init package to use a /// proxy configuration. If your container instances are launched from the Amazon ECS /// optimized AMI version 20190301 or later, they contain the required versions /// of the container agent and ecs-init. For more information, see Amazon /// ECS-optimized Linux AMI in the Amazon Elastic Container Service Developer Guide. /// /// 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 RegisteredAt. /// /// The Unix timestamp for the time when the task definition was registered. /// /// public DateTime RegisteredAt { get { return this._registeredAt.GetValueOrDefault(); } set { this._registeredAt = value; } } // Check to see if RegisteredAt property is set internal bool IsSetRegisteredAt() { return this._registeredAt.HasValue; } /// /// Gets and sets the property RegisteredBy. /// /// The principal that registered the task definition. /// /// public string RegisteredBy { get { return this._registeredBy; } set { this._registeredBy = value; } } // Check to see if RegisteredBy property is set internal bool IsSetRegisteredBy() { return this._registeredBy != null; } /// /// Gets and sets the property RequiresAttributes. /// /// The container instance attributes required by your task. When an Amazon EC2 instance /// is registered to your cluster, the Amazon ECS container agent assigns some standard /// attributes to the instance. You can apply custom attributes. These are specified as /// key-value pairs using the Amazon ECS console or the PutAttributes API. These /// attributes are used when determining task placement for tasks hosted on Amazon EC2 /// instances. For more information, see Attributes /// in the Amazon Elastic Container Service Developer Guide. /// /// /// /// This parameter isn't supported for tasks run on Fargate. /// /// /// public List RequiresAttributes { get { return this._requiresAttributes; } set { this._requiresAttributes = value; } } // Check to see if RequiresAttributes property is set internal bool IsSetRequiresAttributes() { return this._requiresAttributes != null && this._requiresAttributes.Count > 0; } /// /// Gets and sets the property RequiresCompatibilities. /// /// The task launch types the task definition was validated against. For more information, /// see Amazon /// ECS launch types in the Amazon Elastic Container Service Developer Guide. /// /// 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 Revision. /// /// The revision of the task in a particular family. The revision is a version number /// of a task definition in a family. When you register a task definition for the first /// time, the revision is 1. Each time that you register a new revision of /// a task definition in the same family, the revision value always increases by one. /// This is even if you deregistered previous revisions in this family. /// /// public int Revision { get { return this._revision.GetValueOrDefault(); } set { this._revision = value; } } // Check to see if Revision property is set internal bool IsSetRevision() { return this._revision.HasValue; } /// /// Gets and sets the property RuntimePlatform. /// /// The operating system that your task definitions are running on. A platform family /// is specified only for tasks using the Fargate launch type. /// /// /// /// When you specify a task in a service, this value must match the runtimePlatform /// value of the service. /// /// 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 Status. /// /// The status of the task definition. /// /// public TaskDefinitionStatus Status { get { return this._status; } set { this._status = value; } } // Check to see if Status property is set internal bool IsSetStatus() { return this._status != null; } /// /// Gets and sets the property TaskDefinitionArn. /// /// The full Amazon Resource Name (ARN) of the task definition. /// /// public string TaskDefinitionArn { get { return this._taskDefinitionArn; } set { this._taskDefinitionArn = value; } } // Check to see if TaskDefinitionArn property is set internal bool IsSetTaskDefinitionArn() { return this._taskDefinitionArn != null; } /// /// Gets and sets the property TaskRoleArn. /// /// The short name or full Amazon Resource Name (ARN) of the Identity and Access Management /// role that grants containers in the task permission to call Amazon Web Services APIs /// on your behalf. For more information, see Amazon /// ECS Task Role in the Amazon Elastic Container Service Developer Guide. /// /// /// /// IAM roles for tasks on Windows require that the -EnableTaskIAMRole option /// is set when you launch the Amazon ECS-optimized Windows AMI. Your containers must /// also run some configuration code to use the feature. For more information, see Windows /// IAM roles for tasks in the Amazon Elastic Container Service Developer Guide. /// /// 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. /// /// The list of data volume definitions for the task. For more information, see Using /// data volumes in tasks in the Amazon Elastic Container Service Developer Guide. /// /// /// /// The host and sourcePath parameters aren't supported for /// tasks run on Fargate. /// /// /// 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; } } }