/*
* 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 batch-2016-08-10.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.Batch.Model
{
///
/// Container properties are used for Amazon ECS based job definitions. These properties
/// to describe the container that's launched as part of a job.
///
public partial class ContainerProperties
{
private List _command = new List();
private List _environment = new List();
private EphemeralStorage _ephemeralStorage;
private string _executionRoleArn;
private FargatePlatformConfiguration _fargatePlatformConfiguration;
private string _image;
private string _instanceType;
private string _jobRoleArn;
private LinuxParameters _linuxParameters;
private LogConfiguration _logConfiguration;
private int? _memory;
private List _mountPoints = new List();
private NetworkConfiguration _networkConfiguration;
private bool? _privileged;
private bool? _readonlyRootFilesystem;
private List _resourceRequirements = new List();
private RuntimePlatform _runtimePlatform;
private List _secrets = new List();
private List _ulimits = new List();
private string _user;
private int? _vcpus;
private List _volumes = new List();
///
/// 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.
///
///
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 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 using plaintext environment variables for sensitive information,
/// such as credential data.
///
///
///
/// Environment variables cannot start with "AWS_BATCH
". This naming convention
/// is reserved for variables that Batch sets.
///
///
///
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 EphemeralStorage.
///
/// The amount of ephemeral storage to allocate for the task. This parameter is used to
/// expand the total amount of ephemeral storage available, beyond the default amount,
/// for tasks hosted on Fargate.
///
///
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 execution role that Batch can assume. For jobs
/// that run on Fargate resources, you must provide an execution role. For more information,
/// see Batch
/// execution IAM role in the Batch User 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 FargatePlatformConfiguration.
///
/// The platform configuration for jobs that are running on Fargate resources. Jobs that
/// are running on EC2 resources must not specify this parameter.
///
///
public FargatePlatformConfiguration FargatePlatformConfiguration
{
get { return this._fargatePlatformConfiguration; }
set { this._fargatePlatformConfiguration = value; }
}
// Check to see if FargatePlatformConfiguration property is set
internal bool IsSetFargatePlatformConfiguration()
{
return this._fargatePlatformConfiguration != null;
}
///
/// Gets and sets the property Image.
///
/// The image used to start a container. This string is passed directly to the Docker
/// daemon. Images in the Docker Hub registry are available by default. Other repositories
/// are specified with repository-url/image:tag
. It
/// can be 255 characters long. It can contain uppercase and lowercase letters, numbers,
/// hyphens (-), underscores (_), colons (:), periods (.), forward slashes (/), and number
/// signs (#). This parameter maps to Image
in the Create
/// a container section of the Docker
/// Remote API and the IMAGE
parameter of docker
/// run.
///
///
///
/// Docker image architecture must match the processor architecture of the compute resources
/// that they're scheduled on. For example, ARM-based Docker images can only run on ARM-based
/// compute resources.
///
/// -
///
/// Images in Amazon ECR Public repositories use the full
registry/repository[:tag]
/// or registry/repository[@digest]
naming conventions. For example, public.ecr.aws/registry_alias/my-web-app:latest
///
.
///
/// -
///
/// Images in Amazon ECR repositories use the full registry and repository URI (for example,
///
123456789012.dkr.ecr.<region-name>.amazonaws.com/<repository-name>
).
///
/// -
///
/// 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 InstanceType.
///
/// The instance type to use for a multi-node parallel job. All node groups in a multi-node
/// parallel job must use the same instance type.
///
///
///
/// This parameter isn't applicable to single-node container jobs or jobs that run on
/// Fargate resources, and shouldn't be provided.
///
///
///
public string InstanceType
{
get { return this._instanceType; }
set { this._instanceType = value; }
}
// Check to see if InstanceType property is set
internal bool IsSetInstanceType()
{
return this._instanceType != null;
}
///
/// Gets and sets the property JobRoleArn.
///
/// The Amazon Resource Name (ARN) of the IAM role that the container can assume for Amazon
/// Web Services permissions. For more information, see IAM
/// roles for tasks in the Amazon Elastic Container Service Developer Guide.
///
///
public string JobRoleArn
{
get { return this._jobRoleArn; }
set { this._jobRoleArn = value; }
}
// Check to see if JobRoleArn property is set
internal bool IsSetJobRoleArn()
{
return this._jobRoleArn != null;
}
///
/// Gets and sets the property LinuxParameters.
///
/// Linux-specific modifications that are applied to the container, such as details for
/// device mappings.
///
///
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 might 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 on the options for different supported log drivers, see Configure
/// logging drivers in the Docker documentation.
///
///
///
/// Batch currently supports a subset of the logging drivers available to the Docker daemon
/// (shown in the LogConfiguration data type).
///
///
///
/// 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
/// | grep "Server API version"
///
///
///
/// 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.
///
/// This parameter is deprecated, use resourceRequirements
to specify the
/// memory requirements for the job definition. It's not supported for jobs running on
/// Fargate resources. For jobs that run on EC2 resources, it specifies the memory hard
/// limit (in MiB) for a container. If your container attempts to exceed the specified
/// number, it's terminated. You must specify at least 4 MiB of memory for a job using
/// this parameter. The memory hard limit can be specified in several places. It must
/// be specified for each node at least once.
///
///
[Obsolete("This field is deprecated, use resourceRequirements instead.")]
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 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.
///
///
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 NetworkConfiguration.
///
/// The network configuration for jobs that are running on Fargate resources. Jobs that
/// are running on EC2 resources must not specify this parameter.
///
///
public NetworkConfiguration NetworkConfiguration
{
get { return this._networkConfiguration; }
set { this._networkConfiguration = value; }
}
// Check to see if NetworkConfiguration property is set
internal bool IsSetNetworkConfiguration()
{
return this._networkConfiguration != null;
}
///
/// Gets and sets the property Privileged.
///
/// When this parameter is true, the container is given elevated permissions 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. The default value is false.
///
///
///
/// This parameter isn't applicable to jobs that are running on Fargate resources and
/// shouldn't be provided, or specified as false.
///
///
///
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 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
.
///
///
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 ResourceRequirements.
///
/// The type and amount of resources to assign to a container. The supported resources
/// include GPU
, MEMORY
, and VCPU
.
///
///
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 RuntimePlatform.
///
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 Secrets.
///
/// The secrets for the container. For more information, see Specifying
/// sensitive data in the Batch User 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 Ulimits.
///
/// A list of ulimits
to set in the container. This parameter maps to Ulimits
/// in the Create
/// a container section of the Docker
/// Remote API and the --ulimit
option to docker
/// run.
///
///
///
/// This parameter isn't applicable to jobs that are running on Fargate resources and
/// shouldn't be provided.
///
///
///
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 name 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.
///
///
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 Vcpus.
///
/// This parameter is deprecated, use resourceRequirements
to specify the
/// vCPU requirements for the job definition. It's not supported for jobs running on Fargate
/// resources. For jobs running on EC2 resources, it specifies the number of vCPUs reserved
/// for the job.
///
///
///
/// Each vCPU is equivalent to 1,024 CPU shares. This parameter maps to CpuShares
/// in the Create
/// a container section of the Docker
/// Remote API and the --cpu-shares
option to docker
/// run. The number of vCPUs must be specified but can be specified in several places.
/// You must specify it at least once for each node.
///
///
[Obsolete("This field is deprecated, use resourceRequirements instead.")]
public int Vcpus
{
get { return this._vcpus.GetValueOrDefault(); }
set { this._vcpus = value; }
}
// Check to see if Vcpus property is set
internal bool IsSetVcpus()
{
return this._vcpus.HasValue;
}
///
/// Gets and sets the property Volumes.
///
/// A list of data volumes used in a job.
///
///
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;
}
}
}