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