/*
* 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;
}
}
}