/*
* 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 definitions are used in task definitions to describe the different containers
/// that are launched as part of a task.
///
public partial class ContainerDefinition
{
private List _command = new List();
private int? _cpu;
private List _credentialSpecs = new List();
private List _dependsOn = new List();
private bool? _disableNetworking;
private List _dnsSearchDomains = new List();
private List _dnsServers = new List();
private Dictionary _dockerLabels = new Dictionary();
private List _dockerSecurityOptions = new List();
private List _entryPoint = new List();
private List _environment = new List();
private List _environmentFiles = new List();
private bool? _essential;
private List _extraHosts = new List();
private FirelensConfiguration _firelensConfiguration;
private HealthCheck _healthCheck;
private string _hostname;
private string _image;
private bool? _interactive;
private List _links = new List();
private LinuxParameters _linuxParameters;
private LogConfiguration _logConfiguration;
private int? _memory;
private int? _memoryReservation;
private List _mountPoints = new List();
private string _name;
private List _portMappings = new List();
private bool? _privileged;
private bool? _pseudoTerminal;
private bool? _readonlyRootFilesystem;
private RepositoryCredentials _repositoryCredentials;
private List _resourceRequirements = new List();
private List _secrets = new List();
private int? _startTimeout;
private int? _stopTimeout;
private List _systemControls = new List();
private List _ulimits = new List();
private string _user;
private List _volumesFrom = new List();
private string _workingDirectory;
///
/// Gets and sets the property Command.
///
/// The command that's passed to the container. This parameter maps to Cmd
/// in the Create
/// a container section of the Docker
/// Remote API and the COMMAND
parameter to docker
/// run. For more information, see https://docs.docker.com/engine/reference/builder/#cmd.
/// If there are multiple arguments, each argument is a separated string in the array.
///
///
public List Command
{
get { return this._command; }
set { this._command = value; }
}
// Check to see if Command property is set
internal bool IsSetCommand()
{
return this._command != null && this._command.Count > 0;
}
///
/// Gets and sets the property Cpu.
///
/// The number of cpu
units reserved for the container. This parameter maps
/// to CpuShares
in the Create
/// a container section of the Docker
/// Remote API and the --cpu-shares
option to docker
/// run.
///
///
///
/// This field is optional for tasks using the Fargate launch type, and the only requirement
/// is that the total amount of CPU reserved for all containers within a task be lower
/// than the task-level cpu
value.
///
///
///
/// You can determine the number of CPU units that are available per EC2 instance type
/// by multiplying the vCPUs listed for that instance type on the Amazon
/// EC2 Instances detail page by 1,024.
///
///
///
/// Linux containers share unallocated CPU units with other containers on the container
/// instance with the same ratio as their allocated amount. For example, if you run a
/// single-container task on a single-core instance type with 512 CPU units specified
/// for that container, and that's the only task running on the container instance, that
/// container could use the full 1,024 CPU unit share at any given time. However, if you
/// launched another copy of the same task on that container instance, each task is guaranteed
/// a minimum of 512 CPU units when needed. Moreover, each container could float to higher
/// CPU usage if the other container was not using it. If both tasks were 100% active
/// all of the time, they would be limited to 512 CPU units.
///
///
///
/// On Linux container instances, the Docker daemon on the container instance uses the
/// CPU value to calculate the relative CPU share ratios for running containers. For more
/// information, see CPU
/// share constraint in the Docker documentation. The minimum valid CPU share value
/// that the Linux kernel allows is 2. However, the CPU parameter isn't required, and
/// you can use CPU values below 2 in your container definitions. For CPU values below
/// 2 (including null), the behavior varies based on your Amazon ECS container agent version:
///
/// -
///
/// Agent versions less than or equal to 1.1.0: Null and zero CPU values are passed
/// to Docker as 0, which Docker then converts to 1,024 CPU shares. CPU values of 1 are
/// passed to Docker as 1, which the Linux kernel converts to two CPU shares.
///
///
-
///
/// Agent versions greater than or equal to 1.2.0: Null, zero, and CPU values
/// of 1 are passed to Docker as 2.
///
///
///
/// On Windows container instances, the CPU limit is enforced as an absolute limit, or
/// a quota. Windows containers only have access to the specified amount of CPU that's
/// described in the task definition. A null or zero CPU value is passed to Docker as
/// 0
, which Windows interprets as 1% of one CPU.
///
///
public int Cpu
{
get { return this._cpu.GetValueOrDefault(); }
set { this._cpu = value; }
}
// Check to see if Cpu property is set
internal bool IsSetCpu()
{
return this._cpu.HasValue;
}
///
/// Gets and sets the property CredentialSpecs.
///
/// A list of ARNs in SSM or Amazon S3 to a credential spec (credspec
code>)
/// file that configures a container for Active Directory authentication. This parameter
/// is only used with domainless authentication.
///
///
///
/// The format for each ARN is credentialspecdomainless:MyARN
. Replace MyARN
/// with the ARN in SSM or Amazon S3.
///
///
///
/// The credspec
must provide a ARN in Secrets Manager for a secret containing
/// the username, password, and the domain to connect to. For better security, the instance
/// isn't joined to the domain for domainless authentication. Other applications on the
/// instance can't use the domainless credentials. You can use this parameter to run tasks
/// on the same instance, even it the tasks need to join different domains. For more information,
/// see Using
/// gMSAs for Windows Containers and Using
/// gMSAs for Linux Containers.
///
///
public List CredentialSpecs
{
get { return this._credentialSpecs; }
set { this._credentialSpecs = value; }
}
// Check to see if CredentialSpecs property is set
internal bool IsSetCredentialSpecs()
{
return this._credentialSpecs != null && this._credentialSpecs.Count > 0;
}
///
/// Gets and sets the property DependsOn.
///
/// The dependencies defined for container startup and shutdown. A container can contain
/// multiple dependencies on other containers in a task definition. When a dependency
/// is defined for container startup, for container shutdown it is reversed.
///
///
///
/// For tasks using the EC2 launch type, the container instances require at least version
/// 1.26.0 of the container agent to turn on container dependencies. However, we recommend
/// using the latest container agent version. For information about checking your agent
/// version and updating to the latest version, see Updating
/// the Amazon ECS Container Agent in the Amazon Elastic Container Service Developer
/// Guide. If you're using an Amazon ECS-optimized Linux AMI, your instance needs
/// at least version 1.26.0-1 of the ecs-init
package. If your container
/// instances are launched from version 20190301
or later, then 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.
///
///
///
/// For tasks using the Fargate launch type, the task or service requires the following
/// platforms:
///
/// -
///
/// Linux platform version
1.3.0
or later.
///
/// -
///
/// Windows platform version
1.0.0
or later.
///
///
///
public List DependsOn
{
get { return this._dependsOn; }
set { this._dependsOn = value; }
}
// Check to see if DependsOn property is set
internal bool IsSetDependsOn()
{
return this._dependsOn != null && this._dependsOn.Count > 0;
}
///
/// Gets and sets the property DisableNetworking.
///
/// When this parameter is true, networking is off within the container. This parameter
/// maps to NetworkDisabled
in the Create
/// a container section of the Docker
/// Remote API.
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public bool DisableNetworking
{
get { return this._disableNetworking.GetValueOrDefault(); }
set { this._disableNetworking = value; }
}
// Check to see if DisableNetworking property is set
internal bool IsSetDisableNetworking()
{
return this._disableNetworking.HasValue;
}
///
/// Gets and sets the property DnsSearchDomains.
///
/// A list of DNS search domains that are presented to the container. This parameter maps
/// to DnsSearch
in the Create
/// a container section of the Docker
/// Remote API and the --dns-search
option to docker
/// run.
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public List DnsSearchDomains
{
get { return this._dnsSearchDomains; }
set { this._dnsSearchDomains = value; }
}
// Check to see if DnsSearchDomains property is set
internal bool IsSetDnsSearchDomains()
{
return this._dnsSearchDomains != null && this._dnsSearchDomains.Count > 0;
}
///
/// Gets and sets the property DnsServers.
///
/// A list of DNS servers that are presented to the container. This parameter maps to
/// Dns
in the Create
/// a container section of the Docker
/// Remote API and the --dns
option to docker
/// run.
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public List DnsServers
{
get { return this._dnsServers; }
set { this._dnsServers = value; }
}
// Check to see if DnsServers property is set
internal bool IsSetDnsServers()
{
return this._dnsServers != null && this._dnsServers.Count > 0;
}
///
/// Gets and sets the property DockerLabels.
///
/// A key/value map of labels to add to the container. This parameter maps to Labels
/// in the Create
/// a container section of the Docker
/// Remote API and the --label
option to docker
/// run. This parameter requires version 1.18 of the Docker Remote API or greater
/// on your container instance. To check the Docker Remote API version on your container
/// instance, log in to your container instance and run the following command: sudo
/// docker version --format '{{.Server.APIVersion}}'
///
///
public Dictionary DockerLabels
{
get { return this._dockerLabels; }
set { this._dockerLabels = value; }
}
// Check to see if DockerLabels property is set
internal bool IsSetDockerLabels()
{
return this._dockerLabels != null && this._dockerLabels.Count > 0;
}
///
/// Gets and sets the property DockerSecurityOptions.
///
/// A list of strings to provide custom configuration for multiple security systems. For
/// more information about valid values, see Docker
/// Run Security Configuration. This field isn't valid for containers in tasks using
/// the Fargate launch type.
///
///
///
/// For Linux tasks on EC2, this parameter can be used to reference custom labels for
/// SELinux and AppArmor multi-level security systems.
///
///
///
/// For any tasks on EC2, this parameter can be used to reference a credential spec file
/// that configures a container for Active Directory authentication. For more information,
/// see Using
/// gMSAs for Windows Containers and Using
/// gMSAs for Linux Containers in the Amazon Elastic Container Service Developer
/// Guide.
///
///
///
/// This parameter maps to SecurityOpt
in the Create
/// a container section of the Docker
/// Remote API and the --security-opt
option to docker
/// run.
///
///
///
/// The Amazon ECS container agent running on a container instance must register with
/// the ECS_SELINUX_CAPABLE=true
or ECS_APPARMOR_CAPABLE=true
/// environment variables before containers placed on that instance can use these security
/// options. For more information, see Amazon
/// ECS Container Agent Configuration in the Amazon Elastic Container Service Developer
/// Guide.
///
///
///
/// For more information about valid values, see Docker
/// Run Security Configuration.
///
///
///
/// Valid values: "no-new-privileges" | "apparmor:PROFILE" | "label:value" | "credentialspec:CredentialSpecFilePath"
///
///
public List DockerSecurityOptions
{
get { return this._dockerSecurityOptions; }
set { this._dockerSecurityOptions = value; }
}
// Check to see if DockerSecurityOptions property is set
internal bool IsSetDockerSecurityOptions()
{
return this._dockerSecurityOptions != null && this._dockerSecurityOptions.Count > 0;
}
///
/// Gets and sets the property EntryPoint.
///
/// Early versions of the Amazon ECS container agent don't properly handle entryPoint
/// parameters. If you have problems using entryPoint
, update your container
/// agent or enter your commands and arguments as command
array items instead.
///
///
///
/// The entry point that's passed to the container. This parameter maps to Entrypoint
/// in the Create
/// a container section of the Docker
/// Remote API and the --entrypoint
option to docker
/// run. For more information, see https://docs.docker.com/engine/reference/builder/#entrypoint.
///
///
public List EntryPoint
{
get { return this._entryPoint; }
set { this._entryPoint = value; }
}
// Check to see if EntryPoint property is set
internal bool IsSetEntryPoint()
{
return this._entryPoint != null && this._entryPoint.Count > 0;
}
///
/// Gets and sets the property Environment.
///
/// The environment variables to pass to a container. This parameter maps to Env
/// in the Create
/// a container section of the Docker
/// Remote API and the --env
option to docker
/// run.
///
///
///
/// We don't recommend that you use plaintext environment variables for sensitive information,
/// such as credential data.
///
///
///
public List Environment
{
get { return this._environment; }
set { this._environment = value; }
}
// Check to see if Environment property is set
internal bool IsSetEnvironment()
{
return this._environment != null && this._environment.Count > 0;
}
///
/// Gets and sets the property EnvironmentFiles.
///
/// A list of files containing the environment variables to pass to a container. This
/// parameter maps to the --env-file
option to docker
/// run.
///
///
///
/// You can specify up to ten environment files. The file must have a .env
/// file extension. Each line in an environment file contains an environment variable
/// in VARIABLE=VALUE
format. Lines beginning with #
are treated
/// as comments and are ignored. For more information about the environment variable file
/// syntax, see Declare default environment
/// variables in file.
///
///
///
/// If there are environment variables specified using the environment
parameter
/// in a container definition, they take precedence over the variables contained within
/// an environment file. If multiple environment files are specified that contain the
/// same variable, they're processed from the top down. We recommend that you use unique
/// variable names. For more information, see Specifying
/// Environment Variables in the Amazon Elastic Container Service Developer Guide.
///
///
public List EnvironmentFiles
{
get { return this._environmentFiles; }
set { this._environmentFiles = value; }
}
// Check to see if EnvironmentFiles property is set
internal bool IsSetEnvironmentFiles()
{
return this._environmentFiles != null && this._environmentFiles.Count > 0;
}
///
/// Gets and sets the property Essential.
///
/// If the essential
parameter of a container is marked as true
,
/// and that container fails or stops for any reason, all other containers that are part
/// of the task are stopped. If the essential
parameter of a container is
/// marked as false
, its failure doesn't affect the rest of the containers
/// in a task. If this parameter is omitted, a container is assumed to be essential.
///
///
///
/// All tasks must have at least one essential container. If you have an application that's
/// composed of multiple containers, group containers that are used for a common purpose
/// into components, and separate the different components into multiple task definitions.
/// For more information, see Application
/// Architecture in the Amazon Elastic Container Service Developer Guide.
///
///
public bool Essential
{
get { return this._essential.GetValueOrDefault(); }
set { this._essential = value; }
}
// Check to see if Essential property is set
internal bool IsSetEssential()
{
return this._essential.HasValue;
}
///
/// Gets and sets the property ExtraHosts.
///
/// A list of hostnames and IP address mappings to append to the /etc/hosts
/// file on the container. This parameter maps to ExtraHosts
in the Create
/// a container section of the Docker
/// Remote API and the --add-host
option to docker
/// run.
///
///
///
/// This parameter isn't supported for Windows containers or tasks that use the awsvpc
/// network mode.
///
///
///
public List ExtraHosts
{
get { return this._extraHosts; }
set { this._extraHosts = value; }
}
// Check to see if ExtraHosts property is set
internal bool IsSetExtraHosts()
{
return this._extraHosts != null && this._extraHosts.Count > 0;
}
///
/// Gets and sets the property FirelensConfiguration.
///
/// The FireLens configuration for the container. This is used to specify and configure
/// a log router for container logs. For more information, see Custom
/// Log Routing in the Amazon Elastic Container Service Developer Guide.
///
///
public FirelensConfiguration FirelensConfiguration
{
get { return this._firelensConfiguration; }
set { this._firelensConfiguration = value; }
}
// Check to see if FirelensConfiguration property is set
internal bool IsSetFirelensConfiguration()
{
return this._firelensConfiguration != null;
}
///
/// Gets and sets the property HealthCheck.
///
/// The container health check command and associated configuration parameters for the
/// container. This parameter maps to HealthCheck
in the Create
/// a container section of the Docker
/// Remote API and the HEALTHCHECK
parameter of docker
/// run.
///
///
public HealthCheck HealthCheck
{
get { return this._healthCheck; }
set { this._healthCheck = value; }
}
// Check to see if HealthCheck property is set
internal bool IsSetHealthCheck()
{
return this._healthCheck != null;
}
///
/// Gets and sets the property Hostname.
///
/// The hostname to use for your container. This parameter maps to Hostname
/// in the Create
/// a container section of the Docker
/// Remote API and the --hostname
option to docker
/// run.
///
///
///
/// The hostname
parameter is not supported if you're using the awsvpc
/// network mode.
///
///
///
public string Hostname
{
get { return this._hostname; }
set { this._hostname = value; }
}
// Check to see if Hostname property is set
internal bool IsSetHostname()
{
return this._hostname != null;
}
///
/// Gets and sets the property Image.
///
/// The image used to start a container. This string is passed directly to the Docker
/// daemon. By default, images in the Docker Hub registry are available. Other repositories
/// are specified with either repository-url/image:tag
/// or repository-url/image@digest
. Up to 255 letters
/// (uppercase and lowercase), numbers, hyphens, underscores, colons, periods, forward
/// slashes, and number signs are allowed. This parameter maps to Image
in
/// the Create
/// a container section of the Docker
/// Remote API and the IMAGE
parameter of docker
/// run.
///
/// -
///
/// When a new task starts, the Amazon ECS container agent pulls the latest version of
/// the specified image and tag for the container to use. However, subsequent updates
/// to a repository image aren't propagated to already running tasks.
///
///
-
///
/// Images in Amazon ECR repositories can be specified by either using the full
registry/repository:tag
/// or registry/repository@digest
. For example, 012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>:latest
/// or 012345678910.dkr.ecr.<region-name>.amazonaws.com/<repository-name>@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE
.
///
///
/// -
///
/// Images in official repositories on Docker Hub use a single name (for example,
ubuntu
/// or mongo
).
///
/// -
///
/// Images in other repositories on Docker Hub are qualified with an organization name
/// (for example,
amazon/amazon-ecs-agent
).
///
/// -
///
/// Images in other online repositories are qualified further by a domain name (for example,
///
quay.io/assemblyline/ubuntu
).
///
///
///
public string Image
{
get { return this._image; }
set { this._image = value; }
}
// Check to see if Image property is set
internal bool IsSetImage()
{
return this._image != null;
}
///
/// Gets and sets the property Interactive.
///
/// When this parameter is true
, you can deploy containerized applications
/// that require stdin
or a tty
to be allocated. This parameter
/// maps to OpenStdin
in the Create
/// a container section of the Docker
/// Remote API and the --interactive
option to docker
/// run.
///
///
public bool Interactive
{
get { return this._interactive.GetValueOrDefault(); }
set { this._interactive = value; }
}
// Check to see if Interactive property is set
internal bool IsSetInteractive()
{
return this._interactive.HasValue;
}
///
/// Gets and sets the property Links.
///
/// The links
parameter allows containers to communicate with each other
/// without the need for port mappings. This parameter is only supported if the network
/// mode of a task definition is bridge
. The name:internalName
/// construct is analogous to name:alias
in Docker links. Up to 255 letters
/// (uppercase and lowercase), numbers, underscores, and hyphens are allowed. For more
/// information about linking Docker containers, go to Legacy
/// container links in the Docker documentation. This parameter maps to Links
/// in the Create
/// a container section of the Docker
/// Remote API and the --link
option to docker
/// run.
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
/// Containers that are collocated on a single container instance may be able to communicate
/// with each other without requiring links or host port mappings. Network isolation is
/// achieved on the container instance using security groups and VPC settings.
///
///
///
public List Links
{
get { return this._links; }
set { this._links = value; }
}
// Check to see if Links property is set
internal bool IsSetLinks()
{
return this._links != null && this._links.Count > 0;
}
///
/// Gets and sets the property LinuxParameters.
///
/// Linux-specific modifications that are applied to the container, such as Linux kernel
/// capabilities. For more information see KernelCapabilities.
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public LinuxParameters LinuxParameters
{
get { return this._linuxParameters; }
set { this._linuxParameters = value; }
}
// Check to see if LinuxParameters property is set
internal bool IsSetLinuxParameters()
{
return this._linuxParameters != null;
}
///
/// Gets and sets the property LogConfiguration.
///
/// The log configuration specification for the container.
///
///
///
/// This parameter maps to LogConfig
in the Create
/// a container section of the Docker
/// Remote API and the --log-driver
option to docker
/// run. By default, containers use the same logging driver that the Docker daemon
/// uses. However the container can use a different logging driver than the Docker daemon
/// by specifying a log driver with this parameter in the container definition. To use
/// a different logging driver for a container, the log system must be configured properly
/// on the container instance (or on a different log server for remote logging options).
/// For more information about the options for different supported log drivers, see Configure logging drivers
/// in the Docker documentation.
///
///
///
/// Amazon ECS currently supports a subset of the logging drivers available to the Docker
/// daemon (shown in the LogConfiguration data type). Additional log drivers may
/// be available in future releases of the Amazon ECS container agent.
///
///
///
/// This parameter requires version 1.18 of the Docker Remote API or greater on your container
/// instance. To check the Docker Remote API version on your container instance, log in
/// to your container instance and run the following command: sudo docker version
/// --format '{{.Server.APIVersion}}'
///
///
///
/// The Amazon ECS container agent running on a container instance must register the logging
/// drivers available on that instance with the ECS_AVAILABLE_LOGGING_DRIVERS
/// environment variable before containers placed on that instance can use these log configuration
/// options. For more information, see Amazon
/// ECS Container Agent Configuration in the Amazon Elastic Container Service Developer
/// Guide.
///
///
///
public LogConfiguration LogConfiguration
{
get { return this._logConfiguration; }
set { this._logConfiguration = value; }
}
// Check to see if LogConfiguration property is set
internal bool IsSetLogConfiguration()
{
return this._logConfiguration != null;
}
///
/// Gets and sets the property Memory.
///
/// The amount (in MiB) of memory to present to the container. If your container attempts
/// to exceed the memory specified here, the container is killed. The total amount of
/// memory reserved for all containers within a task must be lower than the task memory
/// value, if one is specified. This parameter maps to Memory
in the Create
/// a container section of the Docker
/// Remote API and the --memory
option to docker
/// run.
///
///
///
/// If using the Fargate launch type, this parameter is optional.
///
///
///
/// If using the EC2 launch type, you must specify either a task-level memory value or
/// a container-level memory value. If you specify both a container-level memory
/// and memoryReservation
value, memory
must be greater than
/// memoryReservation
. If you specify memoryReservation
, then
/// that value is subtracted from the available memory resources for the container instance
/// where the container is placed. Otherwise, the value of memory
is used.
///
///
///
/// The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a container.
/// So, don't specify less than 6 MiB of memory for your containers.
///
///
///
/// The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory for
/// a container. So, don't specify less than 4 MiB of memory for your containers.
///
///
public int Memory
{
get { return this._memory.GetValueOrDefault(); }
set { this._memory = value; }
}
// Check to see if Memory property is set
internal bool IsSetMemory()
{
return this._memory.HasValue;
}
///
/// Gets and sets the property MemoryReservation.
///
/// The soft limit (in MiB) of memory to reserve for the container. When system memory
/// is under heavy contention, Docker attempts to keep the container memory to this soft
/// limit. However, your container can consume more memory when it needs to, up to either
/// the hard limit specified with the memory
parameter (if applicable), or
/// all of the available memory on the container instance, whichever comes first. This
/// parameter maps to MemoryReservation
in the Create
/// a container section of the Docker
/// Remote API and the --memory-reservation
option to docker
/// run.
///
///
///
/// If a task-level memory value is not specified, you must specify a non-zero integer
/// for one or both of memory
or memoryReservation
in a container
/// definition. If you specify both, memory
must be greater than memoryReservation
.
/// If you specify memoryReservation
, then that value is subtracted from
/// the available memory resources for the container instance where the container is placed.
/// Otherwise, the value of memory
is used.
///
///
///
/// For example, if your container normally uses 128 MiB of memory, but occasionally bursts
/// to 256 MiB of memory for short periods of time, you can set a memoryReservation
/// of 128 MiB, and a memory
hard limit of 300 MiB. This configuration would
/// allow the container to only reserve 128 MiB of memory from the remaining resources
/// on the container instance, but also allow the container to consume more memory resources
/// when needed.
///
///
///
/// The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a container.
/// So, don't specify less than 6 MiB of memory for your containers.
///
///
///
/// The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory for
/// a container. So, don't specify less than 4 MiB of memory for your containers.
///
///
public int MemoryReservation
{
get { return this._memoryReservation.GetValueOrDefault(); }
set { this._memoryReservation = value; }
}
// Check to see if MemoryReservation property is set
internal bool IsSetMemoryReservation()
{
return this._memoryReservation.HasValue;
}
///
/// Gets and sets the property MountPoints.
///
/// The mount points for data volumes in your container.
///
///
///
/// This parameter maps to Volumes
in the Create
/// a container section of the Docker
/// Remote API and the --volume
option to docker
/// run.
///
///
///
/// Windows containers can mount whole directories on the same drive as $env:ProgramData
.
/// Windows containers can't mount directories on a different drive, and mount point can't
/// be across drives.
///
///
public List MountPoints
{
get { return this._mountPoints; }
set { this._mountPoints = value; }
}
// Check to see if MountPoints property is set
internal bool IsSetMountPoints()
{
return this._mountPoints != null && this._mountPoints.Count > 0;
}
///
/// Gets and sets the property Name.
///
/// The name of a container. If you're linking multiple containers together in a task
/// definition, the name
of one container can be entered in the links
/// of another container to connect the containers. Up to 255 letters (uppercase and lowercase),
/// numbers, underscores, and hyphens are allowed. This parameter maps to name
/// in the Create
/// a container section of the Docker
/// Remote API and the --name
option to docker
/// run.
///
///
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property PortMappings.
///
/// The list of port mappings for the container. Port mappings allow containers to access
/// ports on the host container instance to send or receive traffic.
///
///
///
/// For task definitions that use the awsvpc
network mode, only specify the
/// containerPort
. The hostPort
can be left blank or it must
/// be the same value as the containerPort
.
///
///
///
/// Port mappings on Windows use the NetNAT
gateway address rather than localhost
.
/// There's no loopback for port mappings on Windows, so you can't access a container's
/// mapped port from the host itself.
///
///
///
/// This parameter maps to PortBindings
in the Create
/// a container section of the Docker
/// Remote API and the --publish
option to docker
/// run. If the network mode of a task definition is set to none
, then
/// you can't specify port mappings. If the network mode of a task definition is set to
/// host
, then host ports must either be undefined or they must match the
/// container port in the port mapping.
///
///
///
/// After a task reaches the RUNNING
status, manual and automatic host and
/// container port assignments are visible in the Network Bindings section of a
/// container description for a selected task in the Amazon ECS console. The assignments
/// are also visible in the networkBindings
section DescribeTasks
/// responses.
///
///
///
public List PortMappings
{
get { return this._portMappings; }
set { this._portMappings = value; }
}
// Check to see if PortMappings property is set
internal bool IsSetPortMappings()
{
return this._portMappings != null && this._portMappings.Count > 0;
}
///
/// Gets and sets the property Privileged.
///
/// When this parameter is true, the container is given elevated privileges on the host
/// container instance (similar to the root
user). This parameter maps to
/// Privileged
in the Create
/// a container section of the Docker
/// Remote API and the --privileged
option to docker
/// run.
///
///
///
/// This parameter is not supported for Windows containers or tasks run on Fargate.
///
///
///
public bool Privileged
{
get { return this._privileged.GetValueOrDefault(); }
set { this._privileged = value; }
}
// Check to see if Privileged property is set
internal bool IsSetPrivileged()
{
return this._privileged.HasValue;
}
///
/// Gets and sets the property PseudoTerminal.
///
/// When this parameter is true
, a TTY is allocated. This parameter maps
/// to Tty
in the Create
/// a container section of the Docker
/// Remote API and the --tty
option to docker
/// run.
///
///
public bool PseudoTerminal
{
get { return this._pseudoTerminal.GetValueOrDefault(); }
set { this._pseudoTerminal = value; }
}
// Check to see if PseudoTerminal property is set
internal bool IsSetPseudoTerminal()
{
return this._pseudoTerminal.HasValue;
}
///
/// Gets and sets the property ReadonlyRootFilesystem.
///
/// When this parameter is true, the container is given read-only access to its root file
/// system. This parameter maps to ReadonlyRootfs
in the Create
/// a container section of the Docker
/// Remote API and the --read-only
option to docker
/// run.
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public bool ReadonlyRootFilesystem
{
get { return this._readonlyRootFilesystem.GetValueOrDefault(); }
set { this._readonlyRootFilesystem = value; }
}
// Check to see if ReadonlyRootFilesystem property is set
internal bool IsSetReadonlyRootFilesystem()
{
return this._readonlyRootFilesystem.HasValue;
}
///
/// Gets and sets the property RepositoryCredentials.
///
/// The private repository authentication credentials to use.
///
///
public RepositoryCredentials RepositoryCredentials
{
get { return this._repositoryCredentials; }
set { this._repositoryCredentials = value; }
}
// Check to see if RepositoryCredentials property is set
internal bool IsSetRepositoryCredentials()
{
return this._repositoryCredentials != null;
}
///
/// Gets and sets the property ResourceRequirements.
///
/// The type and amount of a resource to assign to a container. The only supported resource
/// is a GPU.
///
///
public List ResourceRequirements
{
get { return this._resourceRequirements; }
set { this._resourceRequirements = value; }
}
// Check to see if ResourceRequirements property is set
internal bool IsSetResourceRequirements()
{
return this._resourceRequirements != null && this._resourceRequirements.Count > 0;
}
///
/// Gets and sets the property Secrets.
///
/// The secrets to pass to the container. For more information, see Specifying
/// Sensitive Data in the Amazon Elastic Container Service Developer Guide.
///
///
public List Secrets
{
get { return this._secrets; }
set { this._secrets = value; }
}
// Check to see if Secrets property is set
internal bool IsSetSecrets()
{
return this._secrets != null && this._secrets.Count > 0;
}
///
/// Gets and sets the property StartTimeout.
///
/// Time duration (in seconds) to wait before giving up on resolving dependencies for
/// a container. For example, you specify two containers in a task definition with containerA
/// having a dependency on containerB reaching a COMPLETE
, SUCCESS
,
/// or HEALTHY
status. If a startTimeout
value is specified
/// for containerB and it doesn't reach the desired status within that time then containerA
/// gives up and not start. This results in the task transitioning to a STOPPED
/// state.
///
///
///
/// When the ECS_CONTAINER_START_TIMEOUT
container agent configuration variable
/// is used, it's enforced independently from this start timeout value.
///
///
///
/// For tasks using the Fargate launch type, the task or service requires the following
/// platforms:
///
/// -
///
/// Linux platform version
1.3.0
or later.
///
/// -
///
/// Windows platform version
1.0.0
or later.
///
///
///
/// For tasks using the EC2 launch type, your container instances require at least version
/// 1.26.0
of the container agent to use a container start timeout value.
/// However, we recommend using the latest container agent version. For information about
/// checking your agent version and updating to the latest version, see Updating
/// the Amazon ECS Container Agent in the Amazon Elastic Container Service Developer
/// Guide. If you're using an Amazon ECS-optimized Linux AMI, your instance needs
/// at least version 1.26.0-1
of the ecs-init
package. If your
/// container instances are launched from version 20190301
or later, then
/// 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 int StartTimeout
{
get { return this._startTimeout.GetValueOrDefault(); }
set { this._startTimeout = value; }
}
// Check to see if StartTimeout property is set
internal bool IsSetStartTimeout()
{
return this._startTimeout.HasValue;
}
///
/// Gets and sets the property StopTimeout.
///
/// Time duration (in seconds) to wait before the container is forcefully killed if it
/// doesn't exit normally on its own.
///
///
///
/// For tasks using the Fargate launch type, the task or service requires the following
/// platforms:
///
/// -
///
/// Linux platform version
1.3.0
or later.
///
/// -
///
/// Windows platform version
1.0.0
or later.
///
///
///
/// The max stop timeout value is 120 seconds and if the parameter is not specified, the
/// default value of 30 seconds is used.
///
///
///
/// For tasks that use the EC2 launch type, if the stopTimeout
parameter
/// isn't specified, the value set for the Amazon ECS container agent configuration variable
/// ECS_CONTAINER_STOP_TIMEOUT
is used. If neither the stopTimeout
/// parameter or the ECS_CONTAINER_STOP_TIMEOUT
agent configuration variable
/// are set, then the default values of 30 seconds for Linux containers and 30 seconds
/// on Windows containers are used. Your container instances require at least version
/// 1.26.0 of the container agent to use a container stop timeout value. However, we recommend
/// using the latest container agent version. For information about checking your agent
/// version and updating to the latest version, see Updating
/// the Amazon ECS Container Agent in the Amazon Elastic Container Service Developer
/// Guide. If you're using an Amazon ECS-optimized Linux AMI, your instance needs
/// at least version 1.26.0-1 of the ecs-init
package. If your container
/// instances are launched from version 20190301
or later, then 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 int StopTimeout
{
get { return this._stopTimeout.GetValueOrDefault(); }
set { this._stopTimeout = value; }
}
// Check to see if StopTimeout property is set
internal bool IsSetStopTimeout()
{
return this._stopTimeout.HasValue;
}
///
/// Gets and sets the property SystemControls.
///
/// A list of namespaced kernel parameters to set in the container. This parameter maps
/// to Sysctls
in the Create
/// a container section of the Docker
/// Remote API and the --sysctl
option to docker
/// run.
///
///
///
/// We don't recommended that you specify network-related systemControls
/// parameters for multiple containers in a single task that also uses either the awsvpc
/// or host
network modes. For tasks that use the awsvpc
network
/// mode, the container that's started last determines which systemControls
/// parameters take effect. For tasks that use the host
network mode, it
/// changes the container instance's namespaced kernel parameters as well as the containers.
///
///
///
public List SystemControls
{
get { return this._systemControls; }
set { this._systemControls = value; }
}
// Check to see if SystemControls property is set
internal bool IsSetSystemControls()
{
return this._systemControls != null && this._systemControls.Count > 0;
}
///
/// Gets and sets the property Ulimits.
///
/// A list of ulimits
to set in the container. If a ulimit
value
/// is specified in a task definition, it overrides the default values set by Docker.
/// This parameter maps to Ulimits
in the Create
/// a container section of the Docker
/// Remote API and the --ulimit
option to docker
/// run. Valid naming values are displayed in the Ulimit data type.
///
///
///
/// Amazon ECS tasks hosted on Fargate use the default resource limit values set by the
/// operating system with the exception of the nofile
resource limit parameter
/// which Fargate overrides. The nofile
resource limit sets a restriction
/// on the number of open files that a container can use. The default nofile
/// soft limit is 1024
and the default hard limit is 4096
.
///
///
///
/// This parameter requires version 1.18 of the Docker Remote API or greater on your container
/// instance. To check the Docker Remote API version on your container instance, log in
/// to your container instance and run the following command: sudo docker version
/// --format '{{.Server.APIVersion}}'
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public List Ulimits
{
get { return this._ulimits; }
set { this._ulimits = value; }
}
// Check to see if Ulimits property is set
internal bool IsSetUlimits()
{
return this._ulimits != null && this._ulimits.Count > 0;
}
///
/// Gets and sets the property User.
///
/// The user to use inside the container. This parameter maps to User
in
/// the Create
/// a container section of the Docker
/// Remote API and the --user
option to docker
/// run.
///
///
///
/// When running tasks using the host
network mode, don't run containers
/// using the root user (UID 0). We recommend using a non-root user for better security.
///
///
///
/// You can specify the user
using the following formats. If specifying a
/// UID or GID, you must specify it as a positive integer.
///
/// -
///
///
user
///
/// -
///
///
user:group
///
/// -
///
///
uid
///
/// -
///
///
uid:gid
///
/// -
///
///
user:gid
///
/// -
///
///
uid:group
///
///
///
/// This parameter is not supported for Windows containers.
///
///
///
public string User
{
get { return this._user; }
set { this._user = value; }
}
// Check to see if User property is set
internal bool IsSetUser()
{
return this._user != null;
}
///
/// Gets and sets the property VolumesFrom.
///
/// Data volumes to mount from another container. This parameter maps to VolumesFrom
/// in the Create
/// a container section of the Docker
/// Remote API and the --volumes-from
option to docker
/// run.
///
///
public List VolumesFrom
{
get { return this._volumesFrom; }
set { this._volumesFrom = value; }
}
// Check to see if VolumesFrom property is set
internal bool IsSetVolumesFrom()
{
return this._volumesFrom != null && this._volumesFrom.Count > 0;
}
///
/// Gets and sets the property WorkingDirectory.
///
/// The working directory to run commands inside the container in. This parameter maps
/// to WorkingDir
in the Create
/// a container section of the Docker
/// Remote API and the --workdir
option to docker
/// run.
///
///
public string WorkingDirectory
{
get { return this._workingDirectory; }
set { this._workingDirectory = value; }
}
// Check to see if WorkingDirectory property is set
internal bool IsSetWorkingDirectory()
{
return this._workingDirectory != null;
}
}
}