-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Amazon EC2 Container Service SDK.
--   
--   The types from this library are intended to be used with
--   <a>amazonka</a>, which provides mechanisms for specifying AuthN/AuthZ
--   information, sending requests, and receiving responses.
--   
--   Lenses are used for constructing and manipulating types, due to the
--   depth of nesting of AWS types and transparency regarding
--   de/serialisation into more palatable Haskell values. The provided
--   lenses should be compatible with any of the major lens libraries such
--   as <a>lens</a> or <a>lens-family-core</a>.
--   
--   See <a>Network.AWS.ECS</a> or <a>the AWS documentation</a> to get
--   started.
@package amazonka-ecs
@version 1.6.0


module Network.AWS.ECS.Types

-- | API version <tt>2014-11-13</tt> of the Amazon EC2 Container Service
--   SDK configuration.
ecs :: Service

-- | You do not have authorization to perform the requested action.
_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified parameter is invalid. Review the available parameters
--   for the API request.
_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | These errors are usually caused by a server issue.
_ServerException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You cannot delete a cluster that has active tasks.
_ClusterContainsTasksException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified platform version does not exist.
_PlatformUnknownException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You cannot delete a cluster that contains services. You must first
--   update the service to reduce its desired task count to 0 and then
--   delete the service. For more information, see <tt>UpdateService</tt>
--   and <tt>DeleteService</tt> .
_ClusterContainsServicesException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You cannot delete a cluster that has registered container instances.
--   You must first deregister the container instances before you can
--   delete the cluster. For more information, see
--   <tt>DeregisterContainerInstance</tt> .
_ClusterContainsContainerInstancesException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified service is not active. You can't update a service that
--   is inactive. If you have previously deleted a service, you can
--   re-create it with <tt>CreateService</tt> .
_ServiceNotActiveException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified cluster could not be found. You can view your available
--   clusters with <tt>ListClusters</tt> . Amazon ECS clusters are
--   region-specific.
_ClusterNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | There is no update available for this Amazon ECS container agent. This
--   could be because the agent is already running the latest version, or
--   it is so old that there is no update path to the current version.
_NoUpdateAvailableException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified task is not supported in this region.
_UnsupportedFeatureException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified service could not be found. You can view your available
--   services with <tt>ListServices</tt> . Amazon ECS services are
--   cluster-specific and region-specific.
_ServiceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified platform version does not satisfy the task definition’s
--   required capabilities.
_PlatformTaskDefinitionIncompatibilityException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Amazon ECS is unable to determine the current version of the Amazon
--   ECS container agent on the container instance and does not have enough
--   information to proceed with an update. This could be because the agent
--   running on the container instance is an older or custom version that
--   does not use our version information.
_MissingVersionException :: AsError a => Getting (First ServiceError) a ServiceError

-- | There is already a current Amazon ECS container agent update in
--   progress on the specified container instance. If the container agent
--   becomes disconnected while it is in a transitional stage, such as
--   <tt>PENDING</tt> or <tt>STAGING</tt> , the update process can get
--   stuck in that state. However, when the agent reconnects, it resumes
--   where it stopped previously.
_UpdateInProgressException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Your AWS account has been blocked. <a>Contact AWS Support</a> for more
--   information.
_BlockedException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified target could not be found. You can view your available
--   container instances with <tt>ListContainerInstances</tt> . Amazon ECS
--   container instances are cluster-specific and region-specific.
_TargetNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You can apply up to 10 custom attributes per resource. You can view
--   the attributes of a resource with <tt>ListAttributes</tt> . You can
--   remove existing attributes on a resource with
--   <tt>DeleteAttributes</tt> .
_AttributeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | These errors are usually caused by a client action, such as using an
--   action or resource on behalf of a user that doesn't have permissions
--   to use the action or resource, or specifying an identifier that is not
--   valid.
_ClientException :: AsError a => Getting (First ServiceError) a ServiceError
data AgentUpdateStatus
AUSFailed :: AgentUpdateStatus
AUSPending :: AgentUpdateStatus
AUSStaged :: AgentUpdateStatus
AUSStaging :: AgentUpdateStatus
AUSUpdated :: AgentUpdateStatus
AUSUpdating :: AgentUpdateStatus
data AssignPublicIP
Disabled :: AssignPublicIP
Enabled :: AssignPublicIP
data ClusterField
Statistics :: ClusterField
data Compatibility
CEC2 :: Compatibility
CFargate :: Compatibility
data Connectivity
Connected :: Connectivity
Disconnected :: Connectivity
data ContainerInstanceStatus
Active :: ContainerInstanceStatus
Draining :: ContainerInstanceStatus
data DesiredStatus
Pending :: DesiredStatus
Running :: DesiredStatus
Stopped :: DesiredStatus
data DeviceCgroupPermission
Mknod :: DeviceCgroupPermission
Read :: DeviceCgroupPermission
Write :: DeviceCgroupPermission
data HealthStatus
Healthy :: HealthStatus
Unhealthy :: HealthStatus
Unknown :: HealthStatus
data LaunchType
EC2 :: LaunchType
Fargate :: LaunchType
data LogDriver
AWSlogs :: LogDriver
Fluentd :: LogDriver
Gelf :: LogDriver
JSONFile :: LogDriver
Journald :: LogDriver
Splunk :: LogDriver
Syslog :: LogDriver
data NetworkMode
AWSvpc :: NetworkMode
Bridge :: NetworkMode
Host :: NetworkMode
None :: NetworkMode
data PlacementConstraintType
PCTDistinctInstance :: PlacementConstraintType
PCTMemberOf :: PlacementConstraintType
data PlacementStrategyType
Binpack :: PlacementStrategyType
Random :: PlacementStrategyType
Spread :: PlacementStrategyType
data SortOrder
Asc :: SortOrder
Desc :: SortOrder
data TargetType
ContainerInstance :: TargetType
data TaskDefinitionFamilyStatus
TDFSActive :: TaskDefinitionFamilyStatus
TDFSAll :: TaskDefinitionFamilyStatus
TDFSInactive :: TaskDefinitionFamilyStatus
data TaskDefinitionPlacementConstraintType
MemberOf :: TaskDefinitionPlacementConstraintType
data TaskDefinitionStatus
TDSActive :: TaskDefinitionStatus
TDSInactive :: TaskDefinitionStatus
data TransportProtocol
TCP :: TransportProtocol
Udp :: TransportProtocol
data UlimitName
CPU :: UlimitName
Core :: UlimitName
Data :: UlimitName
Fsize :: UlimitName
Locks :: UlimitName
Memlock :: UlimitName
Msgqueue :: UlimitName
Nice :: UlimitName
Nofile :: UlimitName
Nproc :: UlimitName
Rss :: UlimitName
Rtprio :: UlimitName
Rttime :: UlimitName
Sigpending :: UlimitName
Stack :: UlimitName

-- | An object representing the networking details for a task or service.
--   
--   <i>See:</i> <a>awsVPCConfiguration</a> smart constructor.
data AWSVPCConfiguration

-- | Creates a value of <a>AWSVPCConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avcSecurityGroups</a> - The security groups associated with the
--   task or service. If you do not specify a security group, the default
--   security group for the VPC is used. There is a limit of 5 security
--   groups able to be specified per AwsVpcConfiguration.</li>
--   <li><a>avcAssignPublicIP</a> - Whether the task's elastic network
--   interface receives a public IP address.</li>
--   <li><a>avcSubnets</a> - The subnets associated with the task or
--   service. There is a limit of 10 subnets able to be specified per
--   AwsVpcConfiguration.</li>
--   </ul>
awsVPCConfiguration :: AWSVPCConfiguration

-- | The security groups associated with the task or service. If you do not
--   specify a security group, the default security group for the VPC is
--   used. There is a limit of 5 security groups able to be specified per
--   AwsVpcConfiguration.
avcSecurityGroups :: Lens' AWSVPCConfiguration [Text]

-- | Whether the task's elastic network interface receives a public IP
--   address.
avcAssignPublicIP :: Lens' AWSVPCConfiguration (Maybe AssignPublicIP)

-- | The subnets associated with the task or service. There is a limit of
--   10 subnets able to be specified per AwsVpcConfiguration.
avcSubnets :: Lens' AWSVPCConfiguration [Text]

-- | An object representing a container instance or task attachment.
--   
--   <i>See:</i> <a>attachment</a> smart constructor.
data Attachment

-- | Creates a value of <a>Attachment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aStatus</a> - The status of the attachment. Valid values are
--   <tt>PRECREATED</tt> , <tt>CREATED</tt> , <tt>ATTACHING</tt> ,
--   <tt>ATTACHED</tt> , <tt>DETACHING</tt> , <tt>DETACHED</tt> , and
--   <tt>DELETED</tt> .</li>
--   <li><a>aDetails</a> - Details of the attachment. For Elastic Network
--   Interfaces, this includes the network interface ID, the MAC address,
--   the subnet ID, and the private IPv4 address.</li>
--   <li><a>aId</a> - The unique identifier for the attachment.</li>
--   <li><a>aType</a> - The type of the attachment, such as
--   <tt>ElasticNetworkInterface</tt> .</li>
--   </ul>
attachment :: Attachment

-- | The status of the attachment. Valid values are <tt>PRECREATED</tt> ,
--   <tt>CREATED</tt> , <tt>ATTACHING</tt> , <tt>ATTACHED</tt> ,
--   <tt>DETACHING</tt> , <tt>DETACHED</tt> , and <tt>DELETED</tt> .
aStatus :: Lens' Attachment (Maybe Text)

-- | Details of the attachment. For Elastic Network Interfaces, this
--   includes the network interface ID, the MAC address, the subnet ID, and
--   the private IPv4 address.
aDetails :: Lens' Attachment [KeyValuePair]

-- | The unique identifier for the attachment.
aId :: Lens' Attachment (Maybe Text)

-- | The type of the attachment, such as <tt>ElasticNetworkInterface</tt> .
aType :: Lens' Attachment (Maybe Text)

-- | An object representing a change in state for a task attachment.
--   
--   <i>See:</i> <a>attachmentStateChange</a> smart constructor.
data AttachmentStateChange

-- | Creates a value of <a>AttachmentStateChange</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ascAttachmentARN</a> - The Amazon Resource Name (ARN) of the
--   attachment.</li>
--   <li><a>ascStatus</a> - The status of the attachment.</li>
--   </ul>
attachmentStateChange :: Text -> Text -> AttachmentStateChange

-- | The Amazon Resource Name (ARN) of the attachment.
ascAttachmentARN :: Lens' AttachmentStateChange Text

-- | The status of the attachment.
ascStatus :: Lens' AttachmentStateChange Text

-- | An attribute is a name-value pair associated with an Amazon ECS
--   object. Attributes enable you to extend the Amazon ECS data model by
--   adding custom metadata to your resources. For more information, see
--   <a>Attributes</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
--   
--   <i>See:</i> <a>attribute</a> smart constructor.
data Attribute

-- | Creates a value of <a>Attribute</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aTargetId</a> - The ID of the target. You can specify the short
--   form ID for a resource or the full Amazon Resource Name (ARN).</li>
--   <li><a>aValue</a> - The value of the attribute. Up to 128 letters
--   (uppercase and lowercase), numbers, hyphens, underscores, periods, at
--   signs (@), forward slashes, colons, and spaces are allowed.</li>
--   <li><a>aTargetType</a> - The type of the target with which to attach
--   the attribute. This parameter is required if you use the short form ID
--   for a resource instead of the full ARN.</li>
--   <li><a>aName</a> - The name of the attribute. Up to 128 letters
--   (uppercase and lowercase), numbers, hyphens, underscores, and periods
--   are allowed.</li>
--   </ul>
attribute :: Text -> Attribute

-- | The ID of the target. You can specify the short form ID for a resource
--   or the full Amazon Resource Name (ARN).
aTargetId :: Lens' Attribute (Maybe Text)

-- | The value of the attribute. Up to 128 letters (uppercase and
--   lowercase), numbers, hyphens, underscores, periods, at signs (@),
--   forward slashes, colons, and spaces are allowed.
aValue :: Lens' Attribute (Maybe Text)

-- | The type of the target with which to attach the attribute. This
--   parameter is required if you use the short form ID for a resource
--   instead of the full ARN.
aTargetType :: Lens' Attribute (Maybe TargetType)

-- | The name of the attribute. Up to 128 letters (uppercase and
--   lowercase), numbers, hyphens, underscores, and periods are allowed.
aName :: Lens' Attribute Text

-- | A regional grouping of one or more container instances on which you
--   can run task requests. Each account receives a default cluster the
--   first time you use the Amazon ECS service, but you may also create
--   other clusters. Clusters may contain more than one instance type
--   simultaneously.
--   
--   <i>See:</i> <a>cluster</a> smart constructor.
data Cluster

-- | Creates a value of <a>Cluster</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cStatus</a> - The status of the cluster. The valid values are
--   <tt>ACTIVE</tt> or <tt>INACTIVE</tt> . <tt>ACTIVE</tt> indicates that
--   you can register container instances with the cluster and the
--   associated instances can accept tasks.</li>
--   <li><a>cClusterARN</a> - The Amazon Resource Name (ARN) that
--   identifies the cluster. The ARN contains the <tt>arn:aws:ecs</tt>
--   namespace, followed by the region of the cluster, the AWS account ID
--   of the cluster owner, the <tt>cluster</tt> namespace, and then the
--   cluster name. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>012345678910</i> :cluster/<i>test</i> </tt> ..</li>
--   <li><a>cRunningTasksCount</a> - The number of tasks in the cluster
--   that are in the <tt>RUNNING</tt> state.</li>
--   <li><a>cRegisteredContainerInstancesCount</a> - The number of
--   container instances registered into the cluster.</li>
--   <li><a>cPendingTasksCount</a> - The number of tasks in the cluster
--   that are in the <tt>PENDING</tt> state.</li>
--   <li><a>cClusterName</a> - A user-generated string that you use to
--   identify your cluster.</li>
--   <li><a>cStatistics</a> - Additional information about your clusters
--   that are separated by launch type, including: * runningEC2TasksCount *
--   RunningFargateTasksCount * pendingEC2TasksCount *
--   pendingFargateTasksCount * activeEC2ServiceCount *
--   activeFargateServiceCount * drainingEC2ServiceCount *
--   drainingFargateServiceCount</li>
--   <li><a>cActiveServicesCount</a> - The number of services that are
--   running on the cluster in an <tt>ACTIVE</tt> state. You can view these
--   services with <tt>ListServices</tt> .</li>
--   </ul>
cluster :: Cluster

-- | The status of the cluster. The valid values are <tt>ACTIVE</tt> or
--   <tt>INACTIVE</tt> . <tt>ACTIVE</tt> indicates that you can register
--   container instances with the cluster and the associated instances can
--   accept tasks.
cStatus :: Lens' Cluster (Maybe Text)

-- | The Amazon Resource Name (ARN) that identifies the cluster. The ARN
--   contains the <tt>arn:aws:ecs</tt> namespace, followed by the region of
--   the cluster, the AWS account ID of the cluster owner, the
--   <tt>cluster</tt> namespace, and then the cluster name. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>012345678910</i>
--   :cluster/<i>test</i> </tt> ..
cClusterARN :: Lens' Cluster (Maybe Text)

-- | The number of tasks in the cluster that are in the <tt>RUNNING</tt>
--   state.
cRunningTasksCount :: Lens' Cluster (Maybe Int)

-- | The number of container instances registered into the cluster.
cRegisteredContainerInstancesCount :: Lens' Cluster (Maybe Int)

-- | The number of tasks in the cluster that are in the <tt>PENDING</tt>
--   state.
cPendingTasksCount :: Lens' Cluster (Maybe Int)

-- | A user-generated string that you use to identify your cluster.
cClusterName :: Lens' Cluster (Maybe Text)

-- | Additional information about your clusters that are separated by
--   launch type, including: * runningEC2TasksCount *
--   RunningFargateTasksCount * pendingEC2TasksCount *
--   pendingFargateTasksCount * activeEC2ServiceCount *
--   activeFargateServiceCount * drainingEC2ServiceCount *
--   drainingFargateServiceCount
cStatistics :: Lens' Cluster [KeyValuePair]

-- | The number of services that are running on the cluster in an
--   <tt>ACTIVE</tt> state. You can view these services with
--   <tt>ListServices</tt> .
cActiveServicesCount :: Lens' Cluster (Maybe Int)

-- | A Docker container that is part of a task.
--   
--   <i>See:</i> <a>container</a> smart constructor.
data Container

-- | Creates a value of <a>Container</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cNetworkBindings</a> - The network bindings associated with the
--   container.</li>
--   <li><a>cContainerARN</a> - The Amazon Resource Name (ARN) of the
--   container.</li>
--   <li><a>cNetworkInterfaces</a> - The network interfaces associated with
--   the container.</li>
--   <li><a>cTaskARN</a> - The ARN of the task.</li>
--   <li><a>cLastStatus</a> - The last known status of the container.</li>
--   <li><a>cReason</a> - A short (255 max characters) human-readable
--   string to provide additional details about a running or stopped
--   container.</li>
--   <li><a>cName</a> - The name of the container.</li>
--   <li><a>cExitCode</a> - The exit code returned from the container.</li>
--   <li><a>cHealthStatus</a> - The health status of the container. If
--   health checks are not configured for this container in its task
--   definition, then it reports health status as <tt>UNKNOWN</tt> .</li>
--   </ul>
container :: Container

-- | The network bindings associated with the container.
cNetworkBindings :: Lens' Container [NetworkBinding]

-- | The Amazon Resource Name (ARN) of the container.
cContainerARN :: Lens' Container (Maybe Text)

-- | The network interfaces associated with the container.
cNetworkInterfaces :: Lens' Container [NetworkInterface]

-- | The ARN of the task.
cTaskARN :: Lens' Container (Maybe Text)

-- | The last known status of the container.
cLastStatus :: Lens' Container (Maybe Text)

-- | A short (255 max characters) human-readable string to provide
--   additional details about a running or stopped container.
cReason :: Lens' Container (Maybe Text)

-- | The name of the container.
cName :: Lens' Container (Maybe Text)

-- | The exit code returned from the container.
cExitCode :: Lens' Container (Maybe Int)

-- | The health status of the container. If health checks are not
--   configured for this container in its task definition, then it reports
--   health status as <tt>UNKNOWN</tt> .
cHealthStatus :: Lens' Container (Maybe HealthStatus)

-- | Container definitions are used in task definitions to describe the
--   different containers that are launched as part of a task.
--   
--   <i>See:</i> <a>containerDefinition</a> smart constructor.
data ContainerDefinition

-- | Creates a value of <a>ContainerDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdImage</a> - 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 either <tt><i>repository-url</i> /<i>image</i> :<i>tag</i> </tt>
--   or <tt><i>repository-url</i> /<i>image</i> </tt><i>digest</i> <tt> .
--   Up to 255 letters (uppercase and lowercase), numbers, hyphens,
--   underscores, colons, periods, forward slashes, and number signs are
--   allowed. This parameter maps to </tt>Image<tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   </tt>IMAGE<tt> parameter of <a>docker run</a> . * 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 are not propagated to already running
--   tasks. * Images in Amazon ECR repositories can be specified by either
--   using the full </tt>registry<i>repository:tag<tt> or
--   </tt>registry</i>repository<tt>digest</tt> . For example,
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a>:latest</tt>
--   or
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a></tt>sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE<tt>
--   . * Images in official repositories on Docker Hub use a single name
--   (for example, </tt>ubuntu<tt> or </tt>mongo<tt> ). * Images in other
--   repositories on Docker Hub are qualified with an organization name
--   (for example, </tt>amazon<i>amazon-ecs-agent<tt> ). * Images in other
--   online repositories are qualified further by a domain name (for
--   example, </tt>quay.io</i>assemblyline/ubuntu@ ).</li>
--   <li><a>cdCommand</a> - The command that is passed to the container.
--   This parameter maps to <tt>Cmd</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>COMMAND</tt>
--   parameter to <a>docker run</a> . For more information, see
--   <a>https://docs.docker.com/engine/reference/builder/#cmd</a> .</li>
--   <li><a>cdHostname</a> - The hostname to use for your container. This
--   parameter maps to <tt>Hostname</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--hostname</tt>
--   option to <a>docker run</a> .</li>
--   <li><a>cdDockerSecurityOptions</a> - A list of strings to provide
--   custom labels for SELinux and AppArmor multi-level security systems.
--   This field is not valid for containers in tasks using the Fargate
--   launch type. This parameter maps to <tt>SecurityOpt</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--security-opt</tt> option to <a>docker run</a> .</li>
--   <li><a>cdHealthCheck</a> - The health check command and associated
--   configuration parameters for the container. This parameter maps to
--   <tt>HealthCheck</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>HEALTHCHECK</tt> parameter of
--   <a>docker run</a> .</li>
--   <li><a>cdDisableNetworking</a> - When this parameter is true,
--   networking is disabled within the container. This parameter maps to
--   <tt>NetworkDisabled</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> .</li>
--   <li><a>cdVolumesFrom</a> - Data volumes to mount from another
--   container. This parameter maps to <tt>VolumesFrom</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--volumes-from</tt> option to <a>docker run</a> .</li>
--   <li><a>cdEnvironment</a> - The environment variables to pass to a
--   container. This parameter maps to <tt>Env</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--env</tt> option to <a>docker run</a> . <i>Important:</i> We do
--   not recommend using plaintext environment variables for sensitive
--   information, such as credential data.</li>
--   <li><a>cdEntryPoint</a> - <i>Important:</i> Early versions of the
--   Amazon ECS container agent do not properly handle <tt>entryPoint</tt>
--   parameters. If you have problems using <tt>entryPoint</tt> , update
--   your container agent or enter your commands and arguments as
--   <tt>command</tt> array items instead. The entry point that is passed
--   to the container. This parameter maps to <tt>Entrypoint</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--entrypoint</tt> option to <a>docker run</a> . For more
--   information, see
--   <a>https://docs.docker.com/engine/reference/builder/#entrypoint</a>
--   .</li>
--   <li><a>cdWorkingDirectory</a> - The working directory in which to run
--   commands inside the container. This parameter maps to
--   <tt>WorkingDir</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--workdir</tt> option to
--   <a>docker run</a> .</li>
--   <li><a>cdUlimits</a> - A list of <tt>ulimits</tt> to set in the
--   container. This parameter maps to <tt>Ulimits</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--ulimit</tt> option to <a>docker run</a> . Valid naming values
--   are displayed in the <a>Ulimit</a> 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: <tt>sudo docker version | grep "Server API version"</tt></li>
--   <li><a>cdPrivileged</a> - When this parameter is true, the container
--   is given elevated privileges on the host container instance (similar
--   to the <tt>root</tt> user). This parameter maps to <tt>Privileged</tt>
--   in the <a>Create a container</a> section of the <a>Docker Remote
--   API</a> and the <tt>--privileged</tt> option to <a>docker run</a>
--   .</li>
--   <li><a>cdPortMappings</a> - 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 <tt>awsvpc</tt> network mode, you should only specify the
--   <tt>containerPort</tt> . The <tt>hostPort</tt> can be left blank or it
--   must be the same value as the <tt>containerPort</tt> . Port mappings
--   on Windows use the <tt>NetNAT</tt> gateway address rather than
--   <tt>localhost</tt> . There is no loopback for port mappings on
--   Windows, so you cannot access a container's mapped port from the host
--   itself. This parameter maps to <tt>PortBindings</tt> in the <a>Create
--   a container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--publish</tt> option to <a>docker run</a> . If the network mode
--   of a task definition is set to <tt>none</tt> , then you can't specify
--   port mappings. If the network mode of a task definition is set to
--   <tt>host</tt> , then host ports must either be undefined or they must
--   match the container port in the port mapping.</li>
--   <li><a>cdDockerLabels</a> - A key<i>value map of labels to add to the
--   container. This parameter maps to <tt>Labels</tt> in the
--   &lt;https:</i><i>docs.docker.com</i>engine<i>reference</i>api<i>docker_remote_api_v1.27</i>#create-a-container
--   Create a container&gt; section of the <a>Docker Remote API</a> and the
--   <tt>--label</tt> option to <a>docker run</a> . 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: <tt>sudo docker version | grep "Server API version"</tt></li>
--   <li><a>cdExtraHosts</a> - A list of hostnames and IP address mappings
--   to append to the <tt><i>etc</i>hosts</tt> file on the container. If
--   using the Fargate launch type, this may be used to list non-Fargate
--   hosts you want the container to talk to. This parameter maps to
--   <tt>ExtraHosts</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--add-host</tt> option to
--   <a>docker run</a> .</li>
--   <li><a>cdMemory</a> - The hard limit (in MiB) of memory to present to
--   the container. If your container attempts to exceed the memory
--   specified here, the container is killed. This parameter maps to
--   <tt>Memory</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--memory</tt> option to <a>docker
--   run</a> . If your containers are part of a task using the Fargate
--   launch type, this field is optional and the only requirement is that
--   the total amount of memory reserved for all containers within a task
--   be lower than the task <tt>memory</tt> value. For containers that are
--   part of a task using the EC2 launch type, you must specify a non-zero
--   integer for one or both of <tt>memory</tt> or
--   <tt>memoryReservation</tt> in container definitions. If you specify
--   both, <tt>memory</tt> must be greater than <tt>memoryReservation</tt>
--   . If you specify <tt>memoryReservation</tt> , then that value is
--   subtracted from the available memory resources for the container
--   instance on which the container is placed; otherwise, the value of
--   <tt>memory</tt> is used. The Docker daemon reserves a minimum of 4 MiB
--   of memory for a container, so you should not specify fewer than 4 MiB
--   of memory for your containers.</li>
--   <li><a>cdUser</a> - The user name to use inside the container. This
--   parameter maps to <tt>User</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--user</tt> option
--   to <a>docker run</a> .</li>
--   <li><a>cdDnsSearchDomains</a> - A list of DNS search domains that are
--   presented to the container. This parameter maps to <tt>DnsSearch</tt>
--   in the <a>Create a container</a> section of the <a>Docker Remote
--   API</a> and the <tt>--dns-search</tt> option to <a>docker run</a>
--   .</li>
--   <li><a>cdLogConfiguration</a> - The log configuration specification
--   for the container. If using the Fargate launch type, the only
--   supported value is <tt>awslogs</tt> . This parameter maps to
--   <tt>LogConfig</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--log-driver</tt> option to
--   <a>docker run</a> . By default, containers use the same logging driver
--   that the Docker daemon uses; however the container may 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 <a>Configure logging drivers</a> in the
--   Docker documentation. 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: <tt>sudo docker
--   version | grep "Server API version"</tt></li>
--   <li><a>cdLinuxParameters</a> - Linux-specific modifications that are
--   applied to the container, such as Linux <a>KernelCapabilities</a>
--   .</li>
--   <li><a>cdName</a> - The name of a container. If you are linking
--   multiple containers together in a task definition, the <tt>name</tt>
--   of one container can be entered in the <tt>links</tt> of another
--   container to connect the containers. Up to 255 letters (uppercase and
--   lowercase), numbers, hyphens, and underscores are allowed. This
--   parameter maps to <tt>name</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--name</tt> option
--   to <a>docker run</a> .</li>
--   <li><a>cdDnsServers</a> - A list of DNS servers that are presented to
--   the container. This parameter maps to <tt>Dns</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--dns</tt> option to <a>docker run</a> .</li>
--   <li><a>cdMountPoints</a> - The mount points for data volumes in your
--   container. This parameter maps to <tt>Volumes</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--volume</tt> option to <a>docker run</a> . Windows containers can
--   mount whole directories on the same drive as <tt>&gt;
--   env:ProgramData</tt> . Windows containers cannot mount directories on
--   a different drive, and mount point cannot be across drives.</li>
--   <li><a>cdLinks</a> - The <tt>link</tt> parameter allows containers to
--   communicate with each other without the need for port mappings. Only
--   supported if the network mode of a task definition is set to
--   <tt>bridge</tt> . The <tt>name:internalName</tt> construct is
--   analogous to <tt>name:alias</tt> in Docker links. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. For more information about linking Docker containers, go to
--   <a>https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/</a>
--   . This parameter maps to <tt>Links</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--link</tt> option to <a>@docker run@</a> . <i>Important:</i>
--   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.</li>
--   <li><a>cdReadonlyRootFilesystem</a> - When this parameter is true, the
--   container is given read-only access to its root file system. This
--   parameter maps to <tt>ReadonlyRootfs</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--read-only</tt> option to <tt>docker run</tt> .</li>
--   <li><a>cdEssential</a> - If the <tt>essential</tt> parameter of a
--   container is marked as <tt>true</tt> , and that container fails or
--   stops for any reason, all other containers that are part of the task
--   are stopped. If the <tt>essential</tt> parameter of a container is
--   marked as <tt>false</tt> , then its failure does not 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 is composed of multiple
--   containers, you should group containers that are used for a common
--   purpose into components, and separate the different components into
--   multiple task definitions. For more information, see <a>Application
--   Architecture</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>cdCpu</a> - The number of <tt>cpu</tt> units reserved for the
--   container. This parameter maps to <tt>CpuShares</tt> in the <a>Create
--   a container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--cpu-shares</tt> option to <a>docker run</a> . 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 <tt>cpu</tt>
--   value. 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 is 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 would be guaranteed a minimum of
--   512 CPU units when needed, and each container could float to higher
--   CPU usage if the other container was not using it, but if both tasks
--   were 100% active all of the time, they would be limited to 512 CPU
--   units. 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 is 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 would be guaranteed a minimum of
--   512 CPU units when needed, and each container could float to higher
--   CPU usage if the other container was not using it, but 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 <a>CPU
--   share constraint</a> in the Docker documentation. The minimum valid
--   CPU share value that the Linux kernel allows is 2; however, the CPU
--   parameter is not 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: *
--   <b>Agent versions less than or equal to 1.1.0:</b> 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 2 CPU shares. * <b>Agent versions greater than or
--   equal to 1.2.0:</b> 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 is described in the task
--   definition.</li>
--   <li><a>cdMemoryReservation</a> - 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 <tt>memory</tt>
--   parameter (if applicable), or all of the available memory on the
--   container instance, whichever comes first. This parameter maps to
--   <tt>MemoryReservation</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--memory-reservation</tt>
--   option to <a>docker run</a> . You must specify a non-zero integer for
--   one or both of <tt>memory</tt> or <tt>memoryReservation</tt> in
--   container definitions. If you specify both, <tt>memory</tt> must be
--   greater than <tt>memoryReservation</tt> . If you specify
--   <tt>memoryReservation</tt> , then that value is subtracted from the
--   available memory resources for the container instance on which the
--   container is placed; otherwise, the value of <tt>memory</tt> 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 <tt>memoryReservation</tt> of 128 MiB, and a
--   <tt>memory</tt> 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 daemon reserves
--   a minimum of 4 MiB of memory for a container, so you should not
--   specify fewer than 4 MiB of memory for your containers.</li>
--   </ul>
containerDefinition :: ContainerDefinition

-- | 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 either
--   <tt><i>repository-url</i> /<i>image</i> :<i>tag</i> </tt> or
--   <tt><i>repository-url</i> /<i>image</i> </tt><i>digest</i> <tt> . Up
--   to 255 letters (uppercase and lowercase), numbers, hyphens,
--   underscores, colons, periods, forward slashes, and number signs are
--   allowed. This parameter maps to </tt>Image<tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   </tt>IMAGE<tt> parameter of <a>docker run</a> . * 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 are not propagated to already running
--   tasks. * Images in Amazon ECR repositories can be specified by either
--   using the full </tt>registry<i>repository:tag<tt> or
--   </tt>registry</i>repository<tt>digest</tt> . For example,
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a>:latest</tt>
--   or
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a></tt>sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE<tt>
--   . * Images in official repositories on Docker Hub use a single name
--   (for example, </tt>ubuntu<tt> or </tt>mongo<tt> ). * Images in other
--   repositories on Docker Hub are qualified with an organization name
--   (for example, </tt>amazon<i>amazon-ecs-agent<tt> ). * Images in other
--   online repositories are qualified further by a domain name (for
--   example, </tt>quay.io</i>assemblyline/ubuntu@ ).
cdImage :: Lens' ContainerDefinition (Maybe Text)

-- | The command that is passed to the container. This parameter maps to
--   <tt>Cmd</tt> in the <a>Create a container</a> section of the <a>Docker
--   Remote API</a> and the <tt>COMMAND</tt> parameter to <a>docker run</a>
--   . For more information, see
--   <a>https://docs.docker.com/engine/reference/builder/#cmd</a> .
cdCommand :: Lens' ContainerDefinition [Text]

-- | The hostname to use for your container. This parameter maps to
--   <tt>Hostname</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--hostname</tt> option to
--   <a>docker run</a> .
cdHostname :: Lens' ContainerDefinition (Maybe Text)

-- | A list of strings to provide custom labels for SELinux and AppArmor
--   multi-level security systems. This field is not valid for containers
--   in tasks using the Fargate launch type. This parameter maps to
--   <tt>SecurityOpt</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--security-opt</tt> option to
--   <a>docker run</a> .
cdDockerSecurityOptions :: Lens' ContainerDefinition [Text]

-- | The health check command and associated configuration parameters for
--   the container. This parameter maps to <tt>HealthCheck</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>HEALTHCHECK</tt> parameter of <a>docker run</a> .
cdHealthCheck :: Lens' ContainerDefinition (Maybe HealthCheck)

-- | When this parameter is true, networking is disabled within the
--   container. This parameter maps to <tt>NetworkDisabled</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> .
cdDisableNetworking :: Lens' ContainerDefinition (Maybe Bool)

-- | Data volumes to mount from another container. This parameter maps to
--   <tt>VolumesFrom</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--volumes-from</tt> option to
--   <a>docker run</a> .
cdVolumesFrom :: Lens' ContainerDefinition [VolumeFrom]

-- | The environment variables to pass to a container. This parameter maps
--   to <tt>Env</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--env</tt> option to <a>docker
--   run</a> . <i>Important:</i> We do not recommend using plaintext
--   environment variables for sensitive information, such as credential
--   data.
cdEnvironment :: Lens' ContainerDefinition [KeyValuePair]

-- | <i>Important:</i> Early versions of the Amazon ECS container agent do
--   not properly handle <tt>entryPoint</tt> parameters. If you have
--   problems using <tt>entryPoint</tt> , update your container agent or
--   enter your commands and arguments as <tt>command</tt> array items
--   instead. The entry point that is passed to the container. This
--   parameter maps to <tt>Entrypoint</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--entrypoint</tt>
--   option to <a>docker run</a> . For more information, see
--   <a>https://docs.docker.com/engine/reference/builder/#entrypoint</a> .
cdEntryPoint :: Lens' ContainerDefinition [Text]

-- | The working directory in which to run commands inside the container.
--   This parameter maps to <tt>WorkingDir</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--workdir</tt> option to <a>docker run</a> .
cdWorkingDirectory :: Lens' ContainerDefinition (Maybe Text)

-- | A list of <tt>ulimits</tt> to set in the container. This parameter
--   maps to <tt>Ulimits</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--ulimit</tt> option to
--   <a>docker run</a> . Valid naming values are displayed in the
--   <a>Ulimit</a> 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: <tt>sudo docker
--   version | grep "Server API version"</tt>
cdUlimits :: Lens' ContainerDefinition [Ulimit]

-- | When this parameter is true, the container is given elevated
--   privileges on the host container instance (similar to the
--   <tt>root</tt> user). This parameter maps to <tt>Privileged</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--privileged</tt> option to <a>docker run</a> .
cdPrivileged :: Lens' ContainerDefinition (Maybe Bool)

-- | 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 <tt>awsvpc</tt>
--   network mode, you should only specify the <tt>containerPort</tt> . The
--   <tt>hostPort</tt> can be left blank or it must be the same value as
--   the <tt>containerPort</tt> . Port mappings on Windows use the
--   <tt>NetNAT</tt> gateway address rather than <tt>localhost</tt> . There
--   is no loopback for port mappings on Windows, so you cannot access a
--   container's mapped port from the host itself. This parameter maps to
--   <tt>PortBindings</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--publish</tt> option to
--   <a>docker run</a> . If the network mode of a task definition is set to
--   <tt>none</tt> , then you can't specify port mappings. If the network
--   mode of a task definition is set to <tt>host</tt> , then host ports
--   must either be undefined or they must match the container port in the
--   port mapping.
cdPortMappings :: Lens' ContainerDefinition [PortMapping]

-- | A key<i>value map of labels to add to the container. This parameter
--   maps to <tt>Labels</tt> in the
--   &lt;https:</i><i>docs.docker.com</i>engine<i>reference</i>api<i>docker_remote_api_v1.27</i>#create-a-container
--   Create a container&gt; section of the <a>Docker Remote API</a> and the
--   <tt>--label</tt> option to <a>docker run</a> . 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: <tt>sudo docker version | grep "Server API version"</tt>
cdDockerLabels :: Lens' ContainerDefinition (HashMap Text Text)

-- | A list of hostnames and IP address mappings to append to the
--   <tt><i>etc</i>hosts</tt> file on the container. If using the Fargate
--   launch type, this may be used to list non-Fargate hosts you want the
--   container to talk to. This parameter maps to <tt>ExtraHosts</tt> in
--   the <a>Create a container</a> section of the <a>Docker Remote API</a>
--   and the <tt>--add-host</tt> option to <a>docker run</a> .
cdExtraHosts :: Lens' ContainerDefinition [HostEntry]

-- | The hard limit (in MiB) of memory to present to the container. If your
--   container attempts to exceed the memory specified here, the container
--   is killed. This parameter maps to <tt>Memory</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--memory</tt> option to <a>docker run</a> . If your containers are
--   part of a task using the Fargate launch type, this field is optional
--   and the only requirement is that the total amount of memory reserved
--   for all containers within a task be lower than the task
--   <tt>memory</tt> value. For containers that are part of a task using
--   the EC2 launch type, you must specify a non-zero integer for one or
--   both of <tt>memory</tt> or <tt>memoryReservation</tt> in container
--   definitions. If you specify both, <tt>memory</tt> must be greater than
--   <tt>memoryReservation</tt> . If you specify <tt>memoryReservation</tt>
--   , then that value is subtracted from the available memory resources
--   for the container instance on which the container is placed;
--   otherwise, the value of <tt>memory</tt> is used. The Docker daemon
--   reserves a minimum of 4 MiB of memory for a container, so you should
--   not specify fewer than 4 MiB of memory for your containers.
cdMemory :: Lens' ContainerDefinition (Maybe Int)

-- | The user name to use inside the container. This parameter maps to
--   <tt>User</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--user</tt> option to <a>docker
--   run</a> .
cdUser :: Lens' ContainerDefinition (Maybe Text)

-- | A list of DNS search domains that are presented to the container. This
--   parameter maps to <tt>DnsSearch</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--dns-search</tt>
--   option to <a>docker run</a> .
cdDnsSearchDomains :: Lens' ContainerDefinition [Text]

-- | The log configuration specification for the container. If using the
--   Fargate launch type, the only supported value is <tt>awslogs</tt> .
--   This parameter maps to <tt>LogConfig</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--log-driver</tt> option to <a>docker run</a> . By default,
--   containers use the same logging driver that the Docker daemon uses;
--   however the container may 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 <a>Configure logging drivers</a> in the Docker
--   documentation. 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: <tt>sudo docker
--   version | grep "Server API version"</tt>
cdLogConfiguration :: Lens' ContainerDefinition (Maybe LogConfiguration)

-- | Linux-specific modifications that are applied to the container, such
--   as Linux <a>KernelCapabilities</a> .
cdLinuxParameters :: Lens' ContainerDefinition (Maybe LinuxParameters)

-- | The name of a container. If you are linking multiple containers
--   together in a task definition, the <tt>name</tt> of one container can
--   be entered in the <tt>links</tt> of another container to connect the
--   containers. Up to 255 letters (uppercase and lowercase), numbers,
--   hyphens, and underscores are allowed. This parameter maps to
--   <tt>name</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--name</tt> option to <a>docker
--   run</a> .
cdName :: Lens' ContainerDefinition (Maybe Text)

-- | A list of DNS servers that are presented to the container. This
--   parameter maps to <tt>Dns</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--dns</tt> option
--   to <a>docker run</a> .
cdDnsServers :: Lens' ContainerDefinition [Text]

-- | The mount points for data volumes in your container. This parameter
--   maps to <tt>Volumes</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--volume</tt> option to
--   <a>docker run</a> . Windows containers can mount whole directories on
--   the same drive as <tt>&gt; env:ProgramData</tt> . Windows containers
--   cannot mount directories on a different drive, and mount point cannot
--   be across drives.
cdMountPoints :: Lens' ContainerDefinition [MountPoint]

-- | The <tt>link</tt> parameter allows containers to communicate with each
--   other without the need for port mappings. Only supported if the
--   network mode of a task definition is set to <tt>bridge</tt> . The
--   <tt>name:internalName</tt> construct is analogous to
--   <tt>name:alias</tt> in Docker links. Up to 255 letters (uppercase and
--   lowercase), numbers, hyphens, and underscores are allowed. For more
--   information about linking Docker containers, go to
--   <a>https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/</a>
--   . This parameter maps to <tt>Links</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--link</tt> option to <a>@docker run@</a> . <i>Important:</i>
--   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.
cdLinks :: Lens' ContainerDefinition [Text]

-- | When this parameter is true, the container is given read-only access
--   to its root file system. This parameter maps to
--   <tt>ReadonlyRootfs</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--read-only</tt> option to
--   <tt>docker run</tt> .
cdReadonlyRootFilesystem :: Lens' ContainerDefinition (Maybe Bool)

-- | If the <tt>essential</tt> parameter of a container is marked as
--   <tt>true</tt> , and that container fails or stops for any reason, all
--   other containers that are part of the task are stopped. If the
--   <tt>essential</tt> parameter of a container is marked as
--   <tt>false</tt> , then its failure does not 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 is composed of multiple
--   containers, you should group containers that are used for a common
--   purpose into components, and separate the different components into
--   multiple task definitions. For more information, see <a>Application
--   Architecture</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
cdEssential :: Lens' ContainerDefinition (Maybe Bool)

-- | The number of <tt>cpu</tt> units reserved for the container. This
--   parameter maps to <tt>CpuShares</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--cpu-shares</tt>
--   option to <a>docker run</a> . 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 <tt>cpu</tt> value. 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 is 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 would be
--   guaranteed a minimum of 512 CPU units when needed, and each container
--   could float to higher CPU usage if the other container was not using
--   it, but if both tasks were 100% active all of the time, they would be
--   limited to 512 CPU units. 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 is 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 would be guaranteed a minimum of
--   512 CPU units when needed, and each container could float to higher
--   CPU usage if the other container was not using it, but 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 <a>CPU
--   share constraint</a> in the Docker documentation. The minimum valid
--   CPU share value that the Linux kernel allows is 2; however, the CPU
--   parameter is not 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: *
--   <b>Agent versions less than or equal to 1.1.0:</b> 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 2 CPU shares. * <b>Agent versions greater than or
--   equal to 1.2.0:</b> 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 is described in the task
--   definition.
cdCpu :: Lens' ContainerDefinition (Maybe Int)

-- | 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 <tt>memory</tt> parameter (if applicable), or all
--   of the available memory on the container instance, whichever comes
--   first. This parameter maps to <tt>MemoryReservation</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--memory-reservation</tt> option to <a>docker run</a> . You
--   must specify a non-zero integer for one or both of <tt>memory</tt> or
--   <tt>memoryReservation</tt> in container definitions. If you specify
--   both, <tt>memory</tt> must be greater than <tt>memoryReservation</tt>
--   . If you specify <tt>memoryReservation</tt> , then that value is
--   subtracted from the available memory resources for the container
--   instance on which the container is placed; otherwise, the value of
--   <tt>memory</tt> 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 <tt>memoryReservation</tt> of 128
--   MiB, and a <tt>memory</tt> 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
--   daemon reserves a minimum of 4 MiB of memory for a container, so you
--   should not specify fewer than 4 MiB of memory for your containers.
cdMemoryReservation :: Lens' ContainerDefinition (Maybe Int)

-- | An EC2 instance that is running the Amazon ECS agent and has been
--   registered with a cluster.
--   
--   <i>See:</i> <a>containerInstance</a> smart constructor.
data ContainerInstance

-- | Creates a value of <a>ContainerInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ciStatus</a> - The status of the container instance. The valid
--   values are <tt>ACTIVE</tt> , <tt>INACTIVE</tt> , or <tt>DRAINING</tt>
--   . <tt>ACTIVE</tt> indicates that the container instance can accept
--   tasks. <tt>DRAINING</tt> indicates that new tasks are not placed on
--   the container instance and any service tasks running on the container
--   instance are removed if possible. For more information, see
--   <a>Container Instance Draining</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .</li>
--   <li><a>ciAttachments</a> - The Elastic Network Interfaces associated
--   with the container instance.</li>
--   <li><a>ciRunningTasksCount</a> - The number of tasks on the container
--   instance that are in the <tt>RUNNING</tt> status.</li>
--   <li><a>ciRemainingResources</a> - For CPU and memory resource types,
--   this parameter describes the remaining CPU and memory on the that has
--   not already been allocated to tasks (and is therefore available for
--   new tasks). For port resource types, this parameter describes the
--   ports that were reserved by the Amazon ECS container agent (at
--   instance registration time) and any task containers that have reserved
--   port mappings on the host (with the <tt>host</tt> or <tt>bridge</tt>
--   network mode). Any port that is not specified here is available for
--   new tasks.</li>
--   <li><a>ciEc2InstanceId</a> - The EC2 instance ID of the container
--   instance.</li>
--   <li><a>ciContainerInstanceARN</a> - The Amazon Resource Name (ARN) of
--   the container instance. The ARN contains the <tt>arn:aws:ecs</tt>
--   namespace, followed by the region of the container instance, the AWS
--   account ID of the container instance owner, the
--   <tt>container-instance</tt> namespace, and then the container instance
--   ID. For example, <tt>arn:aws:ecs:<i>region</i> :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .</li>
--   <li><a>ciAgentConnected</a> - This parameter returns <tt>true</tt> if
--   the agent is connected to Amazon ECS. Registered instances with an
--   agent that may be unhealthy or stopped return <tt>false</tt> .
--   Instances without a connected agent can't accept placement
--   requests.</li>
--   <li><a>ciVersionInfo</a> - The version information for the Amazon ECS
--   container agent and Docker daemon running on the container
--   instance.</li>
--   <li><a>ciAgentUpdateStatus</a> - The status of the most recent agent
--   update. If an update has never been requested, this value is
--   <tt>NULL</tt> .</li>
--   <li><a>ciAttributes</a> - The attributes set for the container
--   instance, either by the Amazon ECS container agent at instance
--   registration or manually with the <tt>PutAttributes</tt>
--   operation.</li>
--   <li><a>ciVersion</a> - The version counter for the container instance.
--   Every time a container instance experiences a change that triggers a
--   CloudWatch event, the version counter is incremented. If you are
--   replicating your Amazon ECS container instance state with CloudWatch
--   Events, you can compare the version of a container instance reported
--   by the Amazon ECS APIs with the version reported in CloudWatch Events
--   for the container instance (inside the <tt>detail</tt> object) to
--   verify that the version in your event stream is current.</li>
--   <li><a>ciPendingTasksCount</a> - The number of tasks on the container
--   instance that are in the <tt>PENDING</tt> status.</li>
--   <li><a>ciRegisteredAt</a> - The Unix time stamp for when the container
--   instance was registered.</li>
--   <li><a>ciRegisteredResources</a> - For CPU and memory resource types,
--   this parameter describes the amount of each resource that was
--   available on the container instance when the container agent
--   registered it with Amazon ECS; this value represents the total amount
--   of CPU and memory that can be allocated on this container instance to
--   tasks. For port resource types, this parameter describes the ports
--   that were reserved by the Amazon ECS container agent when it
--   registered the container instance with Amazon ECS.</li>
--   </ul>
containerInstance :: ContainerInstance

-- | The status of the container instance. The valid values are
--   <tt>ACTIVE</tt> , <tt>INACTIVE</tt> , or <tt>DRAINING</tt> .
--   <tt>ACTIVE</tt> indicates that the container instance can accept
--   tasks. <tt>DRAINING</tt> indicates that new tasks are not placed on
--   the container instance and any service tasks running on the container
--   instance are removed if possible. For more information, see
--   <a>Container Instance Draining</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .
ciStatus :: Lens' ContainerInstance (Maybe Text)

-- | The Elastic Network Interfaces associated with the container instance.
ciAttachments :: Lens' ContainerInstance [Attachment]

-- | The number of tasks on the container instance that are in the
--   <tt>RUNNING</tt> status.
ciRunningTasksCount :: Lens' ContainerInstance (Maybe Int)

-- | For CPU and memory resource types, this parameter describes the
--   remaining CPU and memory on the that has not already been allocated to
--   tasks (and is therefore available for new tasks). For port resource
--   types, this parameter describes the ports that were reserved by the
--   Amazon ECS container agent (at instance registration time) and any
--   task containers that have reserved port mappings on the host (with the
--   <tt>host</tt> or <tt>bridge</tt> network mode). Any port that is not
--   specified here is available for new tasks.
ciRemainingResources :: Lens' ContainerInstance [Resource]

-- | The EC2 instance ID of the container instance.
ciEc2InstanceId :: Lens' ContainerInstance (Maybe Text)

-- | The Amazon Resource Name (ARN) of the container instance. The ARN
--   contains the <tt>arn:aws:ecs</tt> namespace, followed by the region of
--   the container instance, the AWS account ID of the container instance
--   owner, the <tt>container-instance</tt> namespace, and then the
--   container instance ID. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .
ciContainerInstanceARN :: Lens' ContainerInstance (Maybe Text)

-- | This parameter returns <tt>true</tt> if the agent is connected to
--   Amazon ECS. Registered instances with an agent that may be unhealthy
--   or stopped return <tt>false</tt> . Instances without a connected agent
--   can't accept placement requests.
ciAgentConnected :: Lens' ContainerInstance (Maybe Bool)

-- | The version information for the Amazon ECS container agent and Docker
--   daemon running on the container instance.
ciVersionInfo :: Lens' ContainerInstance (Maybe VersionInfo)

-- | The status of the most recent agent update. If an update has never
--   been requested, this value is <tt>NULL</tt> .
ciAgentUpdateStatus :: Lens' ContainerInstance (Maybe AgentUpdateStatus)

-- | The attributes set for the container instance, either by the Amazon
--   ECS container agent at instance registration or manually with the
--   <tt>PutAttributes</tt> operation.
ciAttributes :: Lens' ContainerInstance [Attribute]

-- | The version counter for the container instance. Every time a container
--   instance experiences a change that triggers a CloudWatch event, the
--   version counter is incremented. If you are replicating your Amazon ECS
--   container instance state with CloudWatch Events, you can compare the
--   version of a container instance reported by the Amazon ECS APIs with
--   the version reported in CloudWatch Events for the container instance
--   (inside the <tt>detail</tt> object) to verify that the version in your
--   event stream is current.
ciVersion :: Lens' ContainerInstance (Maybe Integer)

-- | The number of tasks on the container instance that are in the
--   <tt>PENDING</tt> status.
ciPendingTasksCount :: Lens' ContainerInstance (Maybe Int)

-- | The Unix time stamp for when the container instance was registered.
ciRegisteredAt :: Lens' ContainerInstance (Maybe UTCTime)

-- | For CPU and memory resource types, this parameter describes the amount
--   of each resource that was available on the container instance when the
--   container agent registered it with Amazon ECS; this value represents
--   the total amount of CPU and memory that can be allocated on this
--   container instance to tasks. For port resource types, this parameter
--   describes the ports that were reserved by the Amazon ECS container
--   agent when it registered the container instance with Amazon ECS.
ciRegisteredResources :: Lens' ContainerInstance [Resource]

-- | The overrides that should be sent to a container.
--   
--   <i>See:</i> <a>containerOverride</a> smart constructor.
data ContainerOverride

-- | Creates a value of <a>ContainerOverride</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>coCommand</a> - The command to send to the container that
--   overrides the default command from the Docker image or the task
--   definition. You must also specify a container name.</li>
--   <li><a>coEnvironment</a> - The environment variables to send to the
--   container. You can add new environment variables, which are added to
--   the container at launch, or you can override the existing environment
--   variables from the Docker image or the task definition. You must also
--   specify a container name.</li>
--   <li><a>coMemory</a> - The hard limit (in MiB) of memory to present to
--   the container, instead of the default value from the task definition.
--   If your container attempts to exceed the memory specified here, the
--   container is killed. You must also specify a container name.</li>
--   <li><a>coName</a> - The name of the container that receives the
--   override. This parameter is required if any override is
--   specified.</li>
--   <li><a>coCpu</a> - The number of <tt>cpu</tt> units reserved for the
--   container, instead of the default value from the task definition. You
--   must also specify a container name.</li>
--   <li><a>coMemoryReservation</a> - The soft limit (in MiB) of memory to
--   reserve for the container, instead of the default value from the task
--   definition. You must also specify a container name.</li>
--   </ul>
containerOverride :: ContainerOverride

-- | The command to send to the container that overrides the default
--   command from the Docker image or the task definition. You must also
--   specify a container name.
coCommand :: Lens' ContainerOverride [Text]

-- | The environment variables to send to the container. You can add new
--   environment variables, which are added to the container at launch, or
--   you can override the existing environment variables from the Docker
--   image or the task definition. You must also specify a container name.
coEnvironment :: Lens' ContainerOverride [KeyValuePair]

-- | The hard limit (in MiB) of memory to present to the container, instead
--   of the default value from the task definition. If your container
--   attempts to exceed the memory specified here, the container is killed.
--   You must also specify a container name.
coMemory :: Lens' ContainerOverride (Maybe Int)

-- | The name of the container that receives the override. This parameter
--   is required if any override is specified.
coName :: Lens' ContainerOverride (Maybe Text)

-- | The number of <tt>cpu</tt> units reserved for the container, instead
--   of the default value from the task definition. You must also specify a
--   container name.
coCpu :: Lens' ContainerOverride (Maybe Int)

-- | The soft limit (in MiB) of memory to reserve for the container,
--   instead of the default value from the task definition. You must also
--   specify a container name.
coMemoryReservation :: Lens' ContainerOverride (Maybe Int)

-- | Details on a service within a cluster
--   
--   <i>See:</i> <a>containerService</a> smart constructor.
data ContainerService

-- | Creates a value of <a>ContainerService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csRunningCount</a> - The number of tasks in the cluster that
--   are in the <tt>RUNNING</tt> state.</li>
--   <li><a>csStatus</a> - The status of the service. The valid values are
--   <tt>ACTIVE</tt> , <tt>DRAINING</tt> , or <tt>INACTIVE</tt> .</li>
--   <li><a>csClusterARN</a> - The Amazon Resource Name (ARN) of the
--   cluster that hosts the service.</li>
--   <li><a>csCreatedAt</a> - The Unix time stamp for when the service was
--   created.</li>
--   <li><a>csPlatformVersion</a> - The platform version on which your task
--   is running. For more information, see <a>AWS Fargate Platform
--   Versions</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>csDesiredCount</a> - The desired number of instantiations of
--   the task definition to keep running on the service. This value is
--   specified when the service is created with <tt>CreateService</tt> ,
--   and it can be modified with <tt>UpdateService</tt> .</li>
--   <li><a>csLoadBalancers</a> - A list of Elastic Load Balancing load
--   balancer objects, containing the load balancer name, the container
--   name (as it appears in a container definition), and the container port
--   to access from the load balancer.</li>
--   <li><a>csPendingCount</a> - The number of tasks in the cluster that
--   are in the <tt>PENDING</tt> state.</li>
--   <li><a>csPlacementConstraints</a> - The placement constraints for the
--   tasks in the service.</li>
--   <li><a>csEvents</a> - The event stream for your service. A maximum of
--   100 of the latest events are displayed.</li>
--   <li><a>csPlacementStrategy</a> - The placement strategy that
--   determines how tasks for the service are placed.</li>
--   <li><a>csDeployments</a> - The current state of deployments for the
--   service.</li>
--   <li><a>csServiceName</a> - The name of your service. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. Service names must be unique within a cluster, but you can
--   have similarly named services in multiple clusters within a region or
--   across multiple regions.</li>
--   <li><a>csLaunchType</a> - The launch type on which your service is
--   running.</li>
--   <li><a>csServiceARN</a> - The ARN that identifies the service. The ARN
--   contains the <tt>arn:aws:ecs</tt> namespace, followed by the region of
--   the service, the AWS account ID of the service owner, the
--   <tt>service</tt> namespace, and then the service name. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>012345678910</i>
--   :service/<i>my-service</i> </tt> .</li>
--   <li><a>csTaskDefinition</a> - The task definition to use for tasks in
--   the service. This value is specified when the service is created with
--   <tt>CreateService</tt> , and it can be modified with
--   <tt>UpdateService</tt> .</li>
--   <li><a>csHealthCheckGracePeriodSeconds</a> - The period of time, in
--   seconds, that the Amazon ECS service scheduler ignores unhealthy
--   Elastic Load Balancing target health checks after a task has first
--   started.</li>
--   <li><a>csNetworkConfiguration</a> - The VPC subnet and security group
--   configuration for tasks that receive their own Elastic Network
--   Interface by using the <tt>awsvpc</tt> networking mode.</li>
--   <li><a>csServiceRegistries</a> -</li>
--   <li><a>csRoleARN</a> - The ARN of the IAM role associated with the
--   service that allows the Amazon ECS container agent to register
--   container instances with an Elastic Load Balancing load balancer.</li>
--   <li><a>csDeploymentConfiguration</a> - Optional deployment parameters
--   that control how many tasks run during the deployment and the ordering
--   of stopping and starting tasks.</li>
--   </ul>
containerService :: ContainerService

-- | The number of tasks in the cluster that are in the <tt>RUNNING</tt>
--   state.
csRunningCount :: Lens' ContainerService (Maybe Int)

-- | The status of the service. The valid values are <tt>ACTIVE</tt> ,
--   <tt>DRAINING</tt> , or <tt>INACTIVE</tt> .
csStatus :: Lens' ContainerService (Maybe Text)

-- | The Amazon Resource Name (ARN) of the cluster that hosts the service.
csClusterARN :: Lens' ContainerService (Maybe Text)

-- | The Unix time stamp for when the service was created.
csCreatedAt :: Lens' ContainerService (Maybe UTCTime)

-- | The platform version on which your task is running. For more
--   information, see <a>AWS Fargate Platform Versions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
csPlatformVersion :: Lens' ContainerService (Maybe Text)

-- | The desired number of instantiations of the task definition to keep
--   running on the service. This value is specified when the service is
--   created with <tt>CreateService</tt> , and it can be modified with
--   <tt>UpdateService</tt> .
csDesiredCount :: Lens' ContainerService (Maybe Int)

-- | A list of Elastic Load Balancing load balancer objects, containing the
--   load balancer name, the container name (as it appears in a container
--   definition), and the container port to access from the load balancer.
csLoadBalancers :: Lens' ContainerService [LoadBalancer]

-- | The number of tasks in the cluster that are in the <tt>PENDING</tt>
--   state.
csPendingCount :: Lens' ContainerService (Maybe Int)

-- | The placement constraints for the tasks in the service.
csPlacementConstraints :: Lens' ContainerService [PlacementConstraint]

-- | The event stream for your service. A maximum of 100 of the latest
--   events are displayed.
csEvents :: Lens' ContainerService [ServiceEvent]

-- | The placement strategy that determines how tasks for the service are
--   placed.
csPlacementStrategy :: Lens' ContainerService [PlacementStrategy]

-- | The current state of deployments for the service.
csDeployments :: Lens' ContainerService [Deployment]

-- | The name of your service. Up to 255 letters (uppercase and lowercase),
--   numbers, hyphens, and underscores are allowed. Service names must be
--   unique within a cluster, but you can have similarly named services in
--   multiple clusters within a region or across multiple regions.
csServiceName :: Lens' ContainerService (Maybe Text)

-- | The launch type on which your service is running.
csLaunchType :: Lens' ContainerService (Maybe LaunchType)

-- | The ARN that identifies the service. The ARN contains the
--   <tt>arn:aws:ecs</tt> namespace, followed by the region of the service,
--   the AWS account ID of the service owner, the <tt>service</tt>
--   namespace, and then the service name. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>012345678910</i>
--   :service/<i>my-service</i> </tt> .
csServiceARN :: Lens' ContainerService (Maybe Text)

-- | The task definition to use for tasks in the service. This value is
--   specified when the service is created with <tt>CreateService</tt> ,
--   and it can be modified with <tt>UpdateService</tt> .
csTaskDefinition :: Lens' ContainerService (Maybe Text)

-- | The period of time, in seconds, that the Amazon ECS service scheduler
--   ignores unhealthy Elastic Load Balancing target health checks after a
--   task has first started.
csHealthCheckGracePeriodSeconds :: Lens' ContainerService (Maybe Int)

-- | The VPC subnet and security group configuration for tasks that receive
--   their own Elastic Network Interface by using the <tt>awsvpc</tt>
--   networking mode.
csNetworkConfiguration :: Lens' ContainerService (Maybe NetworkConfiguration)

csServiceRegistries :: Lens' ContainerService [ServiceRegistry]

-- | The ARN of the IAM role associated with the service that allows the
--   Amazon ECS container agent to register container instances with an
--   Elastic Load Balancing load balancer.
csRoleARN :: Lens' ContainerService (Maybe Text)

-- | Optional deployment parameters that control how many tasks run during
--   the deployment and the ordering of stopping and starting tasks.
csDeploymentConfiguration :: Lens' ContainerService (Maybe DeploymentConfiguration)

-- | An object representing a change in state for a container.
--   
--   <i>See:</i> <a>containerStateChange</a> smart constructor.
data ContainerStateChange

-- | Creates a value of <a>ContainerStateChange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscNetworkBindings</a> - Any network bindings associated with
--   the container.</li>
--   <li><a>cscStatus</a> - The status of the container.</li>
--   <li><a>cscContainerName</a> - The name of the container.</li>
--   <li><a>cscReason</a> - The reason for the state change.</li>
--   <li><a>cscExitCode</a> - The exit code for the container, if the state
--   change is a result of the container exiting.</li>
--   </ul>
containerStateChange :: ContainerStateChange

-- | Any network bindings associated with the container.
cscNetworkBindings :: Lens' ContainerStateChange [NetworkBinding]

-- | The status of the container.
cscStatus :: Lens' ContainerStateChange (Maybe Text)

-- | The name of the container.
cscContainerName :: Lens' ContainerStateChange (Maybe Text)

-- | The reason for the state change.
cscReason :: Lens' ContainerStateChange (Maybe Text)

-- | The exit code for the container, if the state change is a result of
--   the container exiting.
cscExitCode :: Lens' ContainerStateChange (Maybe Int)

-- | The details of an Amazon ECS service deployment.
--   
--   <i>See:</i> <a>deployment</a> smart constructor.
data Deployment

-- | Creates a value of <a>Deployment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dRunningCount</a> - The number of tasks in the deployment that
--   are in the <tt>RUNNING</tt> status.</li>
--   <li><a>dStatus</a> - The status of the deployment. Valid values are
--   <tt>PRIMARY</tt> (for the most recent deployment), <tt>ACTIVE</tt>
--   (for previous deployments that still have tasks running, but are being
--   replaced with the <tt>PRIMARY</tt> deployment), and <tt>INACTIVE</tt>
--   (for deployments that have been completely replaced).</li>
--   <li><a>dCreatedAt</a> - The Unix time stamp for when the service was
--   created.</li>
--   <li><a>dPlatformVersion</a> - The platform version on which your
--   service is running.</li>
--   <li><a>dDesiredCount</a> - The most recent desired count of tasks that
--   was specified for the service to deploy or maintain.</li>
--   <li><a>dPendingCount</a> - The number of tasks in the deployment that
--   are in the <tt>PENDING</tt> status.</li>
--   <li><a>dId</a> - The ID of the deployment.</li>
--   <li><a>dLaunchType</a> - The launch type on which your service is
--   running.</li>
--   <li><a>dUpdatedAt</a> - The Unix time stamp for when the service was
--   last updated.</li>
--   <li><a>dTaskDefinition</a> - The most recent task definition that was
--   specified for the service to use.</li>
--   <li><a>dNetworkConfiguration</a> - The VPC subnet and security group
--   configuration for tasks that receive their own Elastic Network
--   Interface by using the <tt>awsvpc</tt> networking mode.</li>
--   </ul>
deployment :: Deployment

-- | The number of tasks in the deployment that are in the <tt>RUNNING</tt>
--   status.
dRunningCount :: Lens' Deployment (Maybe Int)

-- | The status of the deployment. Valid values are <tt>PRIMARY</tt> (for
--   the most recent deployment), <tt>ACTIVE</tt> (for previous deployments
--   that still have tasks running, but are being replaced with the
--   <tt>PRIMARY</tt> deployment), and <tt>INACTIVE</tt> (for deployments
--   that have been completely replaced).
dStatus :: Lens' Deployment (Maybe Text)

-- | The Unix time stamp for when the service was created.
dCreatedAt :: Lens' Deployment (Maybe UTCTime)

-- | The platform version on which your service is running.
dPlatformVersion :: Lens' Deployment (Maybe Text)

-- | The most recent desired count of tasks that was specified for the
--   service to deploy or maintain.
dDesiredCount :: Lens' Deployment (Maybe Int)

-- | The number of tasks in the deployment that are in the <tt>PENDING</tt>
--   status.
dPendingCount :: Lens' Deployment (Maybe Int)

-- | The ID of the deployment.
dId :: Lens' Deployment (Maybe Text)

-- | The launch type on which your service is running.
dLaunchType :: Lens' Deployment (Maybe LaunchType)

-- | The Unix time stamp for when the service was last updated.
dUpdatedAt :: Lens' Deployment (Maybe UTCTime)

-- | The most recent task definition that was specified for the service to
--   use.
dTaskDefinition :: Lens' Deployment (Maybe Text)

-- | The VPC subnet and security group configuration for tasks that receive
--   their own Elastic Network Interface by using the <tt>awsvpc</tt>
--   networking mode.
dNetworkConfiguration :: Lens' Deployment (Maybe NetworkConfiguration)

-- | Optional deployment parameters that control how many tasks run during
--   the deployment and the ordering of stopping and starting tasks.
--   
--   <i>See:</i> <a>deploymentConfiguration</a> smart constructor.
data DeploymentConfiguration

-- | Creates a value of <a>DeploymentConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcMinimumHealthyPercent</a> - The lower limit (as a percentage
--   of the service's <tt>desiredCount</tt> ) of the number of running
--   tasks that must remain in the <tt>RUNNING</tt> state in a service
--   during a deployment. The minimum number of healthy tasks during a
--   deployment is the <tt>desiredCount</tt> multiplied by
--   <tt>minimumHealthyPercent</tt> /100, rounded up to the nearest integer
--   value.</li>
--   <li><a>dcMaximumPercent</a> - The upper limit (as a percentage of the
--   service's <tt>desiredCount</tt> ) of the number of tasks that are
--   allowed in the <tt>RUNNING</tt> or <tt>PENDING</tt> state in a service
--   during a deployment. The maximum number of tasks during a deployment
--   is the <tt>desiredCount</tt> multiplied by <tt>maximumPercent</tt>
--   /100, rounded down to the nearest integer value.</li>
--   </ul>
deploymentConfiguration :: DeploymentConfiguration

-- | The lower limit (as a percentage of the service's
--   <tt>desiredCount</tt> ) of the number of running tasks that must
--   remain in the <tt>RUNNING</tt> state in a service during a deployment.
--   The minimum number of healthy tasks during a deployment is the
--   <tt>desiredCount</tt> multiplied by <tt>minimumHealthyPercent</tt>
--   /100, rounded up to the nearest integer value.
dcMinimumHealthyPercent :: Lens' DeploymentConfiguration (Maybe Int)

-- | The upper limit (as a percentage of the service's
--   <tt>desiredCount</tt> ) of the number of tasks that are allowed in the
--   <tt>RUNNING</tt> or <tt>PENDING</tt> state in a service during a
--   deployment. The maximum number of tasks during a deployment is the
--   <tt>desiredCount</tt> multiplied by <tt>maximumPercent</tt> /100,
--   rounded down to the nearest integer value.
dcMaximumPercent :: Lens' DeploymentConfiguration (Maybe Int)

-- | An object representing a container instance host device.
--   
--   <i>See:</i> <a>device</a> smart constructor.
data Device

-- | Creates a value of <a>Device</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dContainerPath</a> - The path inside the container at which to
--   expose the host device.</li>
--   <li><a>dPermissions</a> - The explicit permissions to provide to the
--   container for the device. By default, the container has permissions
--   for <tt>read</tt> , <tt>write</tt> , and <tt>mknod</tt> for the
--   device.</li>
--   <li><a>dHostPath</a> - The path for the device on the host container
--   instance.</li>
--   </ul>
device :: Text -> Device

-- | The path inside the container at which to expose the host device.
dContainerPath :: Lens' Device (Maybe Text)

-- | The explicit permissions to provide to the container for the device.
--   By default, the container has permissions for <tt>read</tt> ,
--   <tt>write</tt> , and <tt>mknod</tt> for the device.
dPermissions :: Lens' Device [DeviceCgroupPermission]

-- | The path for the device on the host container instance.
dHostPath :: Lens' Device Text

-- | A failed resource.
--   
--   <i>See:</i> <a>failure</a> smart constructor.
data Failure

-- | Creates a value of <a>Failure</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fArn</a> - The Amazon Resource Name (ARN) of the failed
--   resource.</li>
--   <li><a>fReason</a> - The reason for the failure.</li>
--   </ul>
failure :: Failure

-- | The Amazon Resource Name (ARN) of the failed resource.
fArn :: Lens' Failure (Maybe Text)

-- | The reason for the failure.
fReason :: Lens' Failure (Maybe Text)

-- | An object representing a container health check. Health check
--   parameters that are specified in a container definition override any
--   Docker health checks that exist in the container image (such as those
--   specified in a parent image or from the image's Dockerfile).
--   
--   <i>See:</i> <a>healthCheck</a> smart constructor.
data HealthCheck

-- | Creates a value of <a>HealthCheck</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcStartPeriod</a> - The optional grace period within which to
--   provide containers time to bootstrap before failed health checks count
--   towards the maximum number of retries. You may specify between 0 and
--   300 seconds. The <tt>startPeriod</tt> is disabled by default.</li>
--   <li><a>hcRetries</a> - The number of times to retry a failed health
--   check before the container is considered unhealthy. You may specify
--   between 1 and 10 retries. The default value is 3 retries.</li>
--   <li><a>hcInterval</a> - The time period in seconds between each health
--   check execution. You may specify between 5 and 300 seconds. The
--   default value is 30 seconds.</li>
--   <li><a>hcTimeout</a> - The time period in seconds to wait for a health
--   check to succeed before it is considered a failure. You may specify
--   between 2 and 60 seconds. The default value is 5 seconds.</li>
--   <li><a>hcCommand</a> - A string array representing the command that
--   the container runs to determine if it is healthy. The string array
--   must start with <tt>CMD</tt> to execute the command arguments
--   directly, or <tt>CMD-SHELL</tt> to run the command with the
--   container's default shell. For example: <tt>[ "CMD-SHELL", "curl -f
--   <a>http://localhost/</a> || exit 1" ]</tt> An exit code of 0 indicates
--   success, and non-zero exit code indicates failure. For more
--   information, see <tt>HealthCheck</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> .</li>
--   </ul>
healthCheck :: HealthCheck

-- | The optional grace period within which to provide containers time to
--   bootstrap before failed health checks count towards the maximum number
--   of retries. You may specify between 0 and 300 seconds. The
--   <tt>startPeriod</tt> is disabled by default.
hcStartPeriod :: Lens' HealthCheck (Maybe Int)

-- | The number of times to retry a failed health check before the
--   container is considered unhealthy. You may specify between 1 and 10
--   retries. The default value is 3 retries.
hcRetries :: Lens' HealthCheck (Maybe Int)

-- | The time period in seconds between each health check execution. You
--   may specify between 5 and 300 seconds. The default value is 30
--   seconds.
hcInterval :: Lens' HealthCheck (Maybe Int)

-- | The time period in seconds to wait for a health check to succeed
--   before it is considered a failure. You may specify between 2 and 60
--   seconds. The default value is 5 seconds.
hcTimeout :: Lens' HealthCheck (Maybe Int)

-- | A string array representing the command that the container runs to
--   determine if it is healthy. The string array must start with
--   <tt>CMD</tt> to execute the command arguments directly, or
--   <tt>CMD-SHELL</tt> to run the command with the container's default
--   shell. For example: <tt>[ "CMD-SHELL", "curl -f
--   <a>http://localhost/</a> || exit 1" ]</tt> An exit code of 0 indicates
--   success, and non-zero exit code indicates failure. For more
--   information, see <tt>HealthCheck</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> .
hcCommand :: Lens' HealthCheck [Text]

-- | Hostnames and IP address entries that are added to the
--   <tt><i>etc</i>hosts</tt> file of a container via the
--   <tt>extraHosts</tt> parameter of its <a>ContainerDefinition</a> .
--   
--   <i>See:</i> <a>hostEntry</a> smart constructor.
data HostEntry

-- | Creates a value of <a>HostEntry</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>heHostname</a> - The hostname to use in the
--   <tt><i>etc</i>hosts</tt> entry.</li>
--   <li><a>heIpAddress</a> - The IP address to use in the
--   <tt><i>etc</i>hosts</tt> entry.</li>
--   </ul>
hostEntry :: Text -> Text -> HostEntry

-- | The hostname to use in the <tt><i>etc</i>hosts</tt> entry.
heHostname :: Lens' HostEntry Text

-- | The IP address to use in the <tt><i>etc</i>hosts</tt> entry.
heIpAddress :: Lens' HostEntry Text

-- | Details on a container instance host volume.
--   
--   <i>See:</i> <a>hostVolumeProperties</a> smart constructor.
data HostVolumeProperties

-- | Creates a value of <a>HostVolumeProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hvpSourcePath</a> - The path on the host container instance
--   that is presented to the container. If this parameter is empty, then
--   the Docker daemon has assigned a host path for you. If the
--   <tt>host</tt> parameter contains a <tt>sourcePath</tt> file location,
--   then the data volume persists at the specified location on the host
--   container instance until you delete it manually. If the
--   <tt>sourcePath</tt> value does not exist on the host container
--   instance, the Docker daemon creates it. If the location does exist,
--   the contents of the source path folder are exported. If you are using
--   the Fargate launch type, the <tt>sourcePath</tt> parameter is not
--   supported.</li>
--   </ul>
hostVolumeProperties :: HostVolumeProperties

-- | The path on the host container instance that is presented to the
--   container. If this parameter is empty, then the Docker daemon has
--   assigned a host path for you. If the <tt>host</tt> parameter contains
--   a <tt>sourcePath</tt> file location, then the data volume persists at
--   the specified location on the host container instance until you delete
--   it manually. If the <tt>sourcePath</tt> value does not exist on the
--   host container instance, the Docker daemon creates it. If the location
--   does exist, the contents of the source path folder are exported. If
--   you are using the Fargate launch type, the <tt>sourcePath</tt>
--   parameter is not supported.
hvpSourcePath :: Lens' HostVolumeProperties (Maybe Text)

-- | The Linux capabilities for the container that are added to or dropped
--   from the default configuration provided by Docker. For more
--   information on the default capabilities and the non-default available
--   capabilities, see <a>Runtime privilege and Linux capabilities</a> in
--   the <i>Docker run reference</i> . For more detailed information on
--   these Linux capabilities, see the <a>capabilities(7)</a> Linux manual
--   page.
--   
--   <i>See:</i> <a>kernelCapabilities</a> smart constructor.
data KernelCapabilities

-- | Creates a value of <a>KernelCapabilities</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kcDrop</a> - The Linux capabilities for the container that have
--   been removed from the default configuration provided by Docker. This
--   parameter maps to <tt>CapDrop</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--cap-drop</tt>
--   option to <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt></li>
--   <li><a>kcAdd</a> - The Linux capabilities for the container that have
--   been added to the default configuration provided by Docker. This
--   parameter maps to <tt>CapAdd</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--cap-add</tt>
--   option to <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt></li>
--   </ul>
kernelCapabilities :: KernelCapabilities

-- | The Linux capabilities for the container that have been removed from
--   the default configuration provided by Docker. This parameter maps to
--   <tt>CapDrop</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--cap-drop</tt> option to
--   <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt>
kcDrop :: Lens' KernelCapabilities [Text]

-- | The Linux capabilities for the container that have been added to the
--   default configuration provided by Docker. This parameter maps to
--   <tt>CapAdd</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--cap-add</tt> option to
--   <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt>
kcAdd :: Lens' KernelCapabilities [Text]

-- | A key and value pair object.
--   
--   <i>See:</i> <a>keyValuePair</a> smart constructor.
data KeyValuePair

-- | Creates a value of <a>KeyValuePair</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kvpValue</a> - The value of the key value pair. For environment
--   variables, this is the value of the environment variable.</li>
--   <li><a>kvpName</a> - The name of the key value pair. For environment
--   variables, this is the name of the environment variable.</li>
--   </ul>
keyValuePair :: KeyValuePair

-- | The value of the key value pair. For environment variables, this is
--   the value of the environment variable.
kvpValue :: Lens' KeyValuePair (Maybe Text)

-- | The name of the key value pair. For environment variables, this is the
--   name of the environment variable.
kvpName :: Lens' KeyValuePair (Maybe Text)

-- | Linux-specific options that are applied to the container, such as
--   Linux <a>KernelCapabilities</a> .
--   
--   <i>See:</i> <a>linuxParameters</a> smart constructor.
data LinuxParameters

-- | Creates a value of <a>LinuxParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpSharedMemorySize</a> - The value for the size of the
--   <tt><i>dev</i>shm</tt> volume. This parameter maps to the
--   <tt>--shm-size</tt> option to <a>docker run</a> .</li>
--   <li><a>lpInitProcessEnabled</a> - Run an <tt>init</tt> process inside
--   the container that forwards signals and reaps processes. This
--   parameter maps to the <tt>--init</tt> option to <a>docker run</a> .
--   This parameter requires version 1.25 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: <tt>sudo docker version | grep "Server
--   API version"</tt></li>
--   <li><a>lpTmpfs</a> - The container path, mount options, and size of
--   the tmpfs mount. This parameter maps to the <tt>--tmpfs</tt> option to
--   <a>docker run</a> .</li>
--   <li><a>lpDevices</a> - Any host devices to expose to the container.
--   This parameter maps to <tt>Devices</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--device</tt> option to <a>docker run</a> .</li>
--   <li><a>lpCapabilities</a> - The Linux capabilities for the container
--   that are added to or dropped from the default configuration provided
--   by Docker.</li>
--   </ul>
linuxParameters :: LinuxParameters

-- | The value for the size of the <tt><i>dev</i>shm</tt> volume. This
--   parameter maps to the <tt>--shm-size</tt> option to <a>docker run</a>
--   .
lpSharedMemorySize :: Lens' LinuxParameters (Maybe Int)

-- | Run an <tt>init</tt> process inside the container that forwards
--   signals and reaps processes. This parameter maps to the
--   <tt>--init</tt> option to <a>docker run</a> . This parameter requires
--   version 1.25 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: <tt>sudo docker version | grep "Server API version"</tt>
lpInitProcessEnabled :: Lens' LinuxParameters (Maybe Bool)

-- | The container path, mount options, and size of the tmpfs mount. This
--   parameter maps to the <tt>--tmpfs</tt> option to <a>docker run</a> .
lpTmpfs :: Lens' LinuxParameters [Tmpfs]

-- | Any host devices to expose to the container. This parameter maps to
--   <tt>Devices</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--device</tt> option to <a>docker
--   run</a> .
lpDevices :: Lens' LinuxParameters [Device]

-- | The Linux capabilities for the container that are added to or dropped
--   from the default configuration provided by Docker.
lpCapabilities :: Lens' LinuxParameters (Maybe KernelCapabilities)

-- | Details on a load balancer that is used with a service.
--   
--   <i>See:</i> <a>loadBalancer</a> smart constructor.
data LoadBalancer

-- | Creates a value of <a>LoadBalancer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbLoadBalancerName</a> - The name of a load balancer.</li>
--   <li><a>lbContainerName</a> - The name of the container (as it appears
--   in a container definition) to associate with the load balancer.</li>
--   <li><a>lbTargetGroupARN</a> - The full Amazon Resource Name (ARN) of
--   the Elastic Load Balancing target group associated with a
--   service.</li>
--   <li><a>lbContainerPort</a> - The port on the container to associate
--   with the load balancer. This port must correspond to a
--   <tt>containerPort</tt> in the service's task definition. Your
--   container instances must allow ingress traffic on the
--   <tt>hostPort</tt> of the port mapping.</li>
--   </ul>
loadBalancer :: LoadBalancer

-- | The name of a load balancer.
lbLoadBalancerName :: Lens' LoadBalancer (Maybe Text)

-- | The name of the container (as it appears in a container definition) to
--   associate with the load balancer.
lbContainerName :: Lens' LoadBalancer (Maybe Text)

-- | The full Amazon Resource Name (ARN) of the Elastic Load Balancing
--   target group associated with a service.
lbTargetGroupARN :: Lens' LoadBalancer (Maybe Text)

-- | The port on the container to associate with the load balancer. This
--   port must correspond to a <tt>containerPort</tt> in the service's task
--   definition. Your container instances must allow ingress traffic on the
--   <tt>hostPort</tt> of the port mapping.
lbContainerPort :: Lens' LoadBalancer (Maybe Int)

-- | Log configuration options to send to a custom log driver for the
--   container.
--   
--   <i>See:</i> <a>logConfiguration</a> smart constructor.
data LogConfiguration

-- | Creates a value of <a>LogConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcOptions</a> - The configuration options to send to the log
--   driver. This parameter requires version 1.19 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: <tt>sudo docker version | grep "Server
--   API version"</tt></li>
--   <li><a>lcLogDriver</a> - The log driver to use for the container. The
--   valid values listed for this parameter are log drivers that the Amazon
--   ECS container agent can communicate with by default. If using the
--   Fargate launch type, the only supported value is <tt>awslogs</tt> .
--   For more information about using the <tt>awslogs</tt> driver, see
--   <a>Using the awslogs Log Driver</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> . 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: <tt>sudo docker
--   version | grep "Server API version"</tt></li>
--   </ul>
logConfiguration :: LogDriver -> LogConfiguration

-- | The configuration options to send to the log driver. This parameter
--   requires version 1.19 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: <tt>sudo docker version | grep "Server API
--   version"</tt>
lcOptions :: Lens' LogConfiguration (HashMap Text Text)

-- | The log driver to use for the container. The valid values listed for
--   this parameter are log drivers that the Amazon ECS container agent can
--   communicate with by default. If using the Fargate launch type, the
--   only supported value is <tt>awslogs</tt> . For more information about
--   using the <tt>awslogs</tt> driver, see <a>Using the awslogs Log
--   Driver</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> . 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: <tt>sudo docker version | grep
--   "Server API version"</tt>
lcLogDriver :: Lens' LogConfiguration LogDriver

-- | Details on a volume mount point that is used in a container
--   definition.
--   
--   <i>See:</i> <a>mountPoint</a> smart constructor.
data MountPoint

-- | Creates a value of <a>MountPoint</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mpContainerPath</a> - The path on the container to mount the
--   host volume at.</li>
--   <li><a>mpSourceVolume</a> - The name of the volume to mount.</li>
--   <li><a>mpReadOnly</a> - If this value is <tt>true</tt> , the container
--   has read-only access to the volume. If this value is <tt>false</tt> ,
--   then the container can write to the volume. The default value is
--   <tt>false</tt> .</li>
--   </ul>
mountPoint :: MountPoint

-- | The path on the container to mount the host volume at.
mpContainerPath :: Lens' MountPoint (Maybe Text)

-- | The name of the volume to mount.
mpSourceVolume :: Lens' MountPoint (Maybe Text)

-- | If this value is <tt>true</tt> , the container has read-only access to
--   the volume. If this value is <tt>false</tt> , then the container can
--   write to the volume. The default value is <tt>false</tt> .
mpReadOnly :: Lens' MountPoint (Maybe Bool)

-- | Details on the network bindings between a container and its host
--   container instance. After a task reaches the <tt>RUNNING</tt> status,
--   manual and automatic host and container port assignments are visible
--   in the <tt>networkBindings</tt> section of <tt>DescribeTasks</tt> API
--   responses.
--   
--   <i>See:</i> <a>networkBinding</a> smart constructor.
data NetworkBinding

-- | Creates a value of <a>NetworkBinding</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nbBindIP</a> - The IP address that the container is bound to on
--   the container instance.</li>
--   <li><a>nbProtocol</a> - The protocol used for the network
--   binding.</li>
--   <li><a>nbHostPort</a> - The port number on the host that is used with
--   the network binding.</li>
--   <li><a>nbContainerPort</a> - The port number on the container that is
--   used with the network binding.</li>
--   </ul>
networkBinding :: NetworkBinding

-- | The IP address that the container is bound to on the container
--   instance.
nbBindIP :: Lens' NetworkBinding (Maybe Text)

-- | The protocol used for the network binding.
nbProtocol :: Lens' NetworkBinding (Maybe TransportProtocol)

-- | The port number on the host that is used with the network binding.
nbHostPort :: Lens' NetworkBinding (Maybe Int)

-- | The port number on the container that is used with the network
--   binding.
nbContainerPort :: Lens' NetworkBinding (Maybe Int)

-- | An object representing the network configuration for a task or
--   service.
--   
--   <i>See:</i> <a>networkConfiguration</a> smart constructor.
data NetworkConfiguration

-- | Creates a value of <a>NetworkConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ncAwsvpcConfiguration</a> - The VPC subnets and security groups
--   associated with a task.</li>
--   </ul>
networkConfiguration :: NetworkConfiguration

-- | The VPC subnets and security groups associated with a task.
ncAwsvpcConfiguration :: Lens' NetworkConfiguration (Maybe AWSVPCConfiguration)

-- | An object representing the Elastic Network Interface for tasks that
--   use the <tt>awsvpc</tt> network mode.
--   
--   <i>See:</i> <a>networkInterface</a> smart constructor.
data NetworkInterface

-- | Creates a value of <a>NetworkInterface</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>niIpv6Address</a> - The private IPv6 address for the network
--   interface.</li>
--   <li><a>niPrivateIPv4Address</a> - The private IPv4 address for the
--   network interface.</li>
--   <li><a>niAttachmentId</a> - The attachment ID for the network
--   interface.</li>
--   </ul>
networkInterface :: NetworkInterface

-- | The private IPv6 address for the network interface.
niIpv6Address :: Lens' NetworkInterface (Maybe Text)

-- | The private IPv4 address for the network interface.
niPrivateIPv4Address :: Lens' NetworkInterface (Maybe Text)

-- | The attachment ID for the network interface.
niAttachmentId :: Lens' NetworkInterface (Maybe Text)

-- | An object representing a constraint on task placement. For more
--   information, see <a>Task Placement Constraints</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
--   
--   <i>See:</i> <a>placementConstraint</a> smart constructor.
data PlacementConstraint

-- | Creates a value of <a>PlacementConstraint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcExpression</a> - A cluster query language expression to apply
--   to the constraint. Note you cannot specify an expression if the
--   constraint type is <tt>distinctInstance</tt> . For more information,
--   see <a>Cluster Query Language</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .</li>
--   <li><a>pcType</a> - The type of constraint. Use
--   <tt>distinctInstance</tt> to ensure that each task in a particular
--   group is running on a different container instance. Use
--   <tt>memberOf</tt> to restrict the selection to a group of valid
--   candidates. The value <tt>distinctInstance</tt> is not supported in
--   task definitions.</li>
--   </ul>
placementConstraint :: PlacementConstraint

-- | A cluster query language expression to apply to the constraint. Note
--   you cannot specify an expression if the constraint type is
--   <tt>distinctInstance</tt> . For more information, see <a>Cluster Query
--   Language</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
pcExpression :: Lens' PlacementConstraint (Maybe Text)

-- | The type of constraint. Use <tt>distinctInstance</tt> to ensure that
--   each task in a particular group is running on a different container
--   instance. Use <tt>memberOf</tt> to restrict the selection to a group
--   of valid candidates. The value <tt>distinctInstance</tt> is not
--   supported in task definitions.
pcType :: Lens' PlacementConstraint (Maybe PlacementConstraintType)

-- | The task placement strategy for a task or service. For more
--   information, see <a>Task Placement Strategies</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
--   
--   <i>See:</i> <a>placementStrategy</a> smart constructor.
data PlacementStrategy

-- | Creates a value of <a>PlacementStrategy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psField</a> - The field to apply the placement strategy
--   against. For the <tt>spread</tt> placement strategy, valid values are
--   <tt>instanceId</tt> (or <tt>host</tt> , which has the same effect), or
--   any platform or custom attribute that is applied to a container
--   instance, such as <tt>attribute:ecs.availability-zone</tt> . For the
--   <tt>binpack</tt> placement strategy, valid values are <tt>cpu</tt> and
--   <tt>memory</tt> . For the <tt>random</tt> placement strategy, this
--   field is not used.</li>
--   <li><a>psType</a> - The type of placement strategy. The
--   <tt>random</tt> placement strategy randomly places tasks on available
--   candidates. The <tt>spread</tt> placement strategy spreads placement
--   across available candidates evenly based on the <tt>field</tt>
--   parameter. The <tt>binpack</tt> strategy places tasks on available
--   candidates that have the least available amount of the resource that
--   is specified with the <tt>field</tt> parameter. For example, if you
--   binpack on memory, a task is placed on the instance with the least
--   amount of remaining memory (but still enough to run the task).</li>
--   </ul>
placementStrategy :: PlacementStrategy

-- | The field to apply the placement strategy against. For the
--   <tt>spread</tt> placement strategy, valid values are
--   <tt>instanceId</tt> (or <tt>host</tt> , which has the same effect), or
--   any platform or custom attribute that is applied to a container
--   instance, such as <tt>attribute:ecs.availability-zone</tt> . For the
--   <tt>binpack</tt> placement strategy, valid values are <tt>cpu</tt> and
--   <tt>memory</tt> . For the <tt>random</tt> placement strategy, this
--   field is not used.
psField :: Lens' PlacementStrategy (Maybe Text)

-- | The type of placement strategy. The <tt>random</tt> placement strategy
--   randomly places tasks on available candidates. The <tt>spread</tt>
--   placement strategy spreads placement across available candidates
--   evenly based on the <tt>field</tt> parameter. The <tt>binpack</tt>
--   strategy places tasks on available candidates that have the least
--   available amount of the resource that is specified with the
--   <tt>field</tt> parameter. For example, if you binpack on memory, a
--   task is placed on the instance with the least amount of remaining
--   memory (but still enough to run the task).
psType :: Lens' PlacementStrategy (Maybe PlacementStrategyType)

-- | Port mappings allow containers to access ports on the host container
--   instance to send or receive traffic. Port mappings are specified as
--   part of the container definition.
--   
--   If using containers in a task with the <tt>awsvpc</tt> or
--   <tt>host</tt> network mode, exposed ports should be specified using
--   <tt>containerPort</tt> . The <tt>hostPort</tt> can be left blank or it
--   must be the same value as the <tt>containerPort</tt> .
--   
--   After a task reaches the <tt>RUNNING</tt> status, manual and automatic
--   host and container port assignments are visible in the
--   <tt>networkBindings</tt> section of <tt>DescribeTasks</tt> API
--   responses.
--   
--   <i>See:</i> <a>portMapping</a> smart constructor.
data PortMapping

-- | Creates a value of <a>PortMapping</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmProtocol</a> - The protocol used for the port mapping. Valid
--   values are <tt>tcp</tt> and <tt>udp</tt> . The default is <tt>tcp</tt>
--   .</li>
--   <li><a>pmHostPort</a> - The port number on the container instance to
--   reserve for your container. If using containers in a task with the
--   <tt>awsvpc</tt> or <tt>host</tt> network mode, the <tt>hostPort</tt>
--   can either be left blank or set to the same value as the
--   <tt>containerPort</tt> . If using containers in a task with the
--   <tt>bridge</tt> network mode, you can specify a non-reserved host port
--   for your container port mapping, or you can omit the <tt>hostPort</tt>
--   (or set it to <tt>0</tt> ) while specifying a <tt>containerPort</tt>
--   and your container automatically receives a port in the ephemeral port
--   range for your container instance operating system and Docker version.
--   The default ephemeral port range for Docker version 1.6.0 and later is
--   listed on the instance under
--   <tt><i>proc</i>sys<i>net</i>ipv4/ip_local_port_range</tt> ; if this
--   kernel parameter is unavailable, the default ephemeral port range from
--   49153 through 65535 is used. You should not attempt to specify a host
--   port in the ephemeral port range as these are reserved for automatic
--   assignment. In general, ports below 32768 are outside of the ephemeral
--   port range. The default reserved ports are 22 for SSH, the Docker
--   ports 2375 and 2376, and the Amazon ECS container agent ports 51678
--   and 51679. Any host port that was previously specified in a running
--   task is also reserved while the task is running (after a task stops,
--   the host port is released). The current reserved ports are displayed
--   in the <tt>remainingResources</tt> of
--   <tt>DescribeContainerInstances</tt> output, and a container instance
--   may have up to 100 reserved ports at a time, including the default
--   reserved ports (automatically assigned ports do not count toward the
--   100 reserved ports limit).</li>
--   <li><a>pmContainerPort</a> - The port number on the container that is
--   bound to the user-specified or automatically assigned host port. If
--   using containers in a task with the <tt>awsvpc</tt> or <tt>host</tt>
--   network mode, exposed ports should be specified using
--   <tt>containerPort</tt> . If using containers in a task with the
--   <tt>bridge</tt> network mode and you specify a container port and not
--   a host port, your container automatically receives a host port in the
--   ephemeral port range (for more information, see <tt>hostPort</tt> ).
--   Port mappings that are automatically assigned in this way do not count
--   toward the 100 reserved ports limit of a container instance.</li>
--   </ul>
portMapping :: PortMapping

-- | The protocol used for the port mapping. Valid values are <tt>tcp</tt>
--   and <tt>udp</tt> . The default is <tt>tcp</tt> .
pmProtocol :: Lens' PortMapping (Maybe TransportProtocol)

-- | The port number on the container instance to reserve for your
--   container. If using containers in a task with the <tt>awsvpc</tt> or
--   <tt>host</tt> network mode, the <tt>hostPort</tt> can either be left
--   blank or set to the same value as the <tt>containerPort</tt> . If
--   using containers in a task with the <tt>bridge</tt> network mode, you
--   can specify a non-reserved host port for your container port mapping,
--   or you can omit the <tt>hostPort</tt> (or set it to <tt>0</tt> ) while
--   specifying a <tt>containerPort</tt> and your container automatically
--   receives a port in the ephemeral port range for your container
--   instance operating system and Docker version. The default ephemeral
--   port range for Docker version 1.6.0 and later is listed on the
--   instance under
--   <tt><i>proc</i>sys<i>net</i>ipv4/ip_local_port_range</tt> ; if this
--   kernel parameter is unavailable, the default ephemeral port range from
--   49153 through 65535 is used. You should not attempt to specify a host
--   port in the ephemeral port range as these are reserved for automatic
--   assignment. In general, ports below 32768 are outside of the ephemeral
--   port range. The default reserved ports are 22 for SSH, the Docker
--   ports 2375 and 2376, and the Amazon ECS container agent ports 51678
--   and 51679. Any host port that was previously specified in a running
--   task is also reserved while the task is running (after a task stops,
--   the host port is released). The current reserved ports are displayed
--   in the <tt>remainingResources</tt> of
--   <tt>DescribeContainerInstances</tt> output, and a container instance
--   may have up to 100 reserved ports at a time, including the default
--   reserved ports (automatically assigned ports do not count toward the
--   100 reserved ports limit).
pmHostPort :: Lens' PortMapping (Maybe Int)

-- | The port number on the container that is bound to the user-specified
--   or automatically assigned host port. If using containers in a task
--   with the <tt>awsvpc</tt> or <tt>host</tt> network mode, exposed ports
--   should be specified using <tt>containerPort</tt> . If using containers
--   in a task with the <tt>bridge</tt> network mode and you specify a
--   container port and not a host port, your container automatically
--   receives a host port in the ephemeral port range (for more
--   information, see <tt>hostPort</tt> ). Port mappings that are
--   automatically assigned in this way do not count toward the 100
--   reserved ports limit of a container instance.
pmContainerPort :: Lens' PortMapping (Maybe Int)

-- | Describes the resources available for a container instance.
--   
--   <i>See:</i> <a>resource</a> smart constructor.
data Resource

-- | Creates a value of <a>Resource</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rStringSetValue</a> - When the <tt>stringSetValue</tt> type is
--   set, the value of the resource must be a string type.</li>
--   <li><a>rIntegerValue</a> - When the <tt>integerValue</tt> type is set,
--   the value of the resource must be an integer.</li>
--   <li><a>rDoubleValue</a> - When the <tt>doubleValue</tt> type is set,
--   the value of the resource must be a double precision floating-point
--   type.</li>
--   <li><a>rLongValue</a> - When the <tt>longValue</tt> type is set, the
--   value of the resource must be an extended precision floating-point
--   type.</li>
--   <li><a>rName</a> - The name of the resource, such as <tt>cpu</tt> ,
--   <tt>memory</tt> , <tt>ports</tt> , or a user-defined resource.</li>
--   <li><a>rType</a> - The type of the resource, such as <tt>INTEGER</tt>
--   , <tt>DOUBLE</tt> , <tt>LONG</tt> , or <tt>STRINGSET</tt> .</li>
--   </ul>
resource :: Resource

-- | When the <tt>stringSetValue</tt> type is set, the value of the
--   resource must be a string type.
rStringSetValue :: Lens' Resource [Text]

-- | When the <tt>integerValue</tt> type is set, the value of the resource
--   must be an integer.
rIntegerValue :: Lens' Resource (Maybe Int)

-- | When the <tt>doubleValue</tt> type is set, the value of the resource
--   must be a double precision floating-point type.
rDoubleValue :: Lens' Resource (Maybe Double)

-- | When the <tt>longValue</tt> type is set, the value of the resource
--   must be an extended precision floating-point type.
rLongValue :: Lens' Resource (Maybe Integer)

-- | The name of the resource, such as <tt>cpu</tt> , <tt>memory</tt> ,
--   <tt>ports</tt> , or a user-defined resource.
rName :: Lens' Resource (Maybe Text)

-- | The type of the resource, such as <tt>INTEGER</tt> , <tt>DOUBLE</tt> ,
--   <tt>LONG</tt> , or <tt>STRINGSET</tt> .
rType :: Lens' Resource (Maybe Text)

-- | Details on an event associated with a service.
--   
--   <i>See:</i> <a>serviceEvent</a> smart constructor.
data ServiceEvent

-- | Creates a value of <a>ServiceEvent</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>seCreatedAt</a> - The Unix time stamp for when the event was
--   triggered.</li>
--   <li><a>seId</a> - The ID string of the event.</li>
--   <li><a>seMessage</a> - The event message.</li>
--   </ul>
serviceEvent :: ServiceEvent

-- | The Unix time stamp for when the event was triggered.
seCreatedAt :: Lens' ServiceEvent (Maybe UTCTime)

-- | The ID string of the event.
seId :: Lens' ServiceEvent (Maybe Text)

-- | The event message.
seMessage :: Lens' ServiceEvent (Maybe Text)

-- | Details of the service registry.
--   
--   <i>See:</i> <a>serviceRegistry</a> smart constructor.
data ServiceRegistry

-- | Creates a value of <a>ServiceRegistry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srRegistryARN</a> - The Amazon Resource Name (ARN) of the
--   Service Registry. The currently supported service registry is Amazon
--   Route 53 Auto Naming Service. For more information, see <a>Service</a>
--   .</li>
--   <li><a>srPort</a> - The port value used if your Service Discovery
--   service specified an SRV record.</li>
--   </ul>
serviceRegistry :: ServiceRegistry

-- | The Amazon Resource Name (ARN) of the Service Registry. The currently
--   supported service registry is Amazon Route 53 Auto Naming Service. For
--   more information, see <a>Service</a> .
srRegistryARN :: Lens' ServiceRegistry (Maybe Text)

-- | The port value used if your Service Discovery service specified an SRV
--   record.
srPort :: Lens' ServiceRegistry (Maybe Int)

-- | Details on a task in a cluster.
--   
--   <i>See:</i> <a>task</a> smart constructor.
data Task

-- | Creates a value of <a>Task</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tStoppedAt</a> - The Unix time stamp for when the task was
--   stopped (the task transitioned from the <tt>RUNNING</tt> state to the
--   <tt>STOPPED</tt> state).</li>
--   <li><a>tDesiredStatus</a> - The desired status of the task.</li>
--   <li><a>tOverrides</a> - One or more container overrides.</li>
--   <li><a>tClusterARN</a> - The ARN of the cluster that hosts the
--   task.</li>
--   <li><a>tGroup</a> - The name of the task group associated with the
--   task.</li>
--   <li><a>tAttachments</a> - The Elastic Network Adapter associated with
--   the task if the task uses the <tt>awsvpc</tt> network mode.</li>
--   <li><a>tCreatedAt</a> - The Unix time stamp for when the task was
--   created (the task entered the <tt>PENDING</tt> state).</li>
--   <li><a>tPlatformVersion</a> - The platform version on which your task
--   is running. For more information, see <a>AWS Fargate Platform
--   Versions</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tTaskARN</a> - The Amazon Resource Name (ARN) of the task.</li>
--   <li><a>tContainerInstanceARN</a> - The ARN of the container instances
--   that host the task.</li>
--   <li><a>tExecutionStoppedAt</a> - The Unix time stamp for when the task
--   execution stopped.</li>
--   <li><a>tLastStatus</a> - The last known status of the task.</li>
--   <li><a>tMemory</a> - The amount of memory (in MiB) used by the task.
--   It can be expressed as an integer using MiB, for example <tt>1024</tt>
--   , or as a string using GB, for example <tt>1GB</tt> or <tt>1 GB</tt> ,
--   in a task definition but is converted to an integer indicating the MiB
--   when the task definition is registered. If using the EC2 launch type,
--   this field is optional. If using the Fargate launch type, this field
--   is required and you must use one of the following values, which
--   determines your range of supported values for the <tt>cpu</tt>
--   parameter: * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available
--   <tt>cpu</tt> values: 256 (.25 vCPU) * 1024 (1 GB), 2048 (2 GB), 3072
--   (3 GB), 4096 (4 GB) - Available <tt>cpu</tt> values: 512 (.5 vCPU) *
--   2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168
--   (7 GB), 8192 (8 GB) - Available <tt>cpu</tt> values: 1024 (1 vCPU) *
--   Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) -
--   Available <tt>cpu</tt> values: 2048 (2 vCPU) * Between 8192 (8 GB) and
--   30720 (30 GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt>
--   values: 4096 (4 vCPU)</li>
--   <li><a>tPullStoppedAt</a> - The Unix time stamp for when the container
--   image pull completed.</li>
--   <li><a>tContainers</a> - The containers associated with the task.</li>
--   <li><a>tStartedAt</a> - The Unix time stamp for when the task started
--   (the task transitioned from the <tt>PENDING</tt> state to the
--   <tt>RUNNING</tt> state).</li>
--   <li><a>tVersion</a> - The version counter for the task. Every time a
--   task experiences a change that triggers a CloudWatch event, the
--   version counter is incremented. If you are replicating your Amazon ECS
--   task state with CloudWatch Events, you can compare the version of a
--   task reported by the Amazon ECS APIs with the version reported in
--   CloudWatch Events for the task (inside the <tt>detail</tt> object) to
--   verify that the version in your event stream is current.</li>
--   <li><a>tStartedBy</a> - The tag specified when a task is started. If
--   the task is started by an Amazon ECS service, then the
--   <tt>startedBy</tt> parameter contains the deployment ID of the service
--   that starts it.</li>
--   <li><a>tStoppedReason</a> - The reason the task was stopped.</li>
--   <li><a>tConnectivity</a> - The connectivity status of a task.</li>
--   <li><a>tStoppingAt</a> - The Unix time stamp for when the task will
--   stop (transitions from the <tt>RUNNING</tt> state to <tt>STOPPED</tt>
--   ).</li>
--   <li><a>tLaunchType</a> - The launch type on which your task is
--   running.</li>
--   <li><a>tTaskDefinitionARN</a> - The ARN of the task definition that
--   creates the task.</li>
--   <li><a>tHealthStatus</a> - The health status for the task, which is
--   determined by the health of the essential containers in the task. If
--   all essential containers in the task are reporting as <tt>HEALTHY</tt>
--   , then the task status also reports as <tt>HEALTHY</tt> . If any
--   essential containers in the task are reporting as <tt>UNHEALTHY</tt>
--   or <tt>UNKNOWN</tt> , then the task status also reports as
--   <tt>UNHEALTHY</tt> or <tt>UNKNOWN</tt> , accordingly.</li>
--   <li><a>tConnectivityAt</a> - The Unix time stamp for when the task
--   last went into <tt>CONNECTED</tt> status.</li>
--   <li><a>tCpu</a> - The number of CPU units used by the task. It can be
--   expressed as an integer using CPU units, for example <tt>1024</tt> ,
--   or as a string using vCPUs, for example <tt>1 vCPU</tt> or <tt>1
--   vcpu</tt> , in a task definition but is converted to an integer
--   indicating the CPU units when the task definition is registered. If
--   using the EC2 launch type, this field is optional. Supported values
--   are between <tt>128</tt> CPU units (<tt>0.125</tt> vCPUs) and
--   <tt>10240</tt> CPU units (<tt>10</tt> vCPUs). If using the Fargate
--   launch type, this field is required and you must use one of the
--   following values, which determines your range of supported values for
--   the <tt>memory</tt> parameter: * 256 (.25 vCPU) - Available
--   <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512
--   (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB), 2048 (2
--   GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)</li>
--   <li><a>tPullStartedAt</a> - The Unix time stamp for when the container
--   image pull began.</li>
--   </ul>
task :: Task

-- | The Unix time stamp for when the task was stopped (the task
--   transitioned from the <tt>RUNNING</tt> state to the <tt>STOPPED</tt>
--   state).
tStoppedAt :: Lens' Task (Maybe UTCTime)

-- | The desired status of the task.
tDesiredStatus :: Lens' Task (Maybe Text)

-- | One or more container overrides.
tOverrides :: Lens' Task (Maybe TaskOverride)

-- | The ARN of the cluster that hosts the task.
tClusterARN :: Lens' Task (Maybe Text)

-- | The name of the task group associated with the task.
tGroup :: Lens' Task (Maybe Text)

-- | The Elastic Network Adapter associated with the task if the task uses
--   the <tt>awsvpc</tt> network mode.
tAttachments :: Lens' Task [Attachment]

-- | The Unix time stamp for when the task was created (the task entered
--   the <tt>PENDING</tt> state).
tCreatedAt :: Lens' Task (Maybe UTCTime)

-- | The platform version on which your task is running. For more
--   information, see <a>AWS Fargate Platform Versions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tPlatformVersion :: Lens' Task (Maybe Text)

-- | The Amazon Resource Name (ARN) of the task.
tTaskARN :: Lens' Task (Maybe Text)

-- | The ARN of the container instances that host the task.
tContainerInstanceARN :: Lens' Task (Maybe Text)

-- | The Unix time stamp for when the task execution stopped.
tExecutionStoppedAt :: Lens' Task (Maybe UTCTime)

-- | The last known status of the task.
tLastStatus :: Lens' Task (Maybe Text)

-- | The amount of memory (in MiB) used by the task. It can be expressed as
--   an integer using MiB, for example <tt>1024</tt> , or as a string using
--   GB, for example <tt>1GB</tt> or <tt>1 GB</tt> , in a task definition
--   but is converted to an integer indicating the MiB when the task
--   definition is registered. If using the EC2 launch type, this field is
--   optional. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of supported values for the <tt>cpu</tt> parameter: * 512 (0.5 GB),
--   1024 (1 GB), 2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25
--   vCPU) * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available
--   <tt>cpu</tt> values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available
--   <tt>cpu</tt> values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16
--   GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048
--   (2 vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024
--   (1 GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)
tMemory :: Lens' Task (Maybe Text)

-- | The Unix time stamp for when the container image pull completed.
tPullStoppedAt :: Lens' Task (Maybe UTCTime)

-- | The containers associated with the task.
tContainers :: Lens' Task [Container]

-- | The Unix time stamp for when the task started (the task transitioned
--   from the <tt>PENDING</tt> state to the <tt>RUNNING</tt> state).
tStartedAt :: Lens' Task (Maybe UTCTime)

-- | The version counter for the task. Every time a task experiences a
--   change that triggers a CloudWatch event, the version counter is
--   incremented. If you are replicating your Amazon ECS task state with
--   CloudWatch Events, you can compare the version of a task reported by
--   the Amazon ECS APIs with the version reported in CloudWatch Events for
--   the task (inside the <tt>detail</tt> object) to verify that the
--   version in your event stream is current.
tVersion :: Lens' Task (Maybe Integer)

-- | The tag specified when a task is started. If the task is started by an
--   Amazon ECS service, then the <tt>startedBy</tt> parameter contains the
--   deployment ID of the service that starts it.
tStartedBy :: Lens' Task (Maybe Text)

-- | The reason the task was stopped.
tStoppedReason :: Lens' Task (Maybe Text)

-- | The connectivity status of a task.
tConnectivity :: Lens' Task (Maybe Connectivity)

-- | The Unix time stamp for when the task will stop (transitions from the
--   <tt>RUNNING</tt> state to <tt>STOPPED</tt> ).
tStoppingAt :: Lens' Task (Maybe UTCTime)

-- | The launch type on which your task is running.
tLaunchType :: Lens' Task (Maybe LaunchType)

-- | The ARN of the task definition that creates the task.
tTaskDefinitionARN :: Lens' Task (Maybe Text)

-- | The health status for the task, which is determined by the health of
--   the essential containers in the task. If all essential containers in
--   the task are reporting as <tt>HEALTHY</tt> , then the task status also
--   reports as <tt>HEALTHY</tt> . If any essential containers in the task
--   are reporting as <tt>UNHEALTHY</tt> or <tt>UNKNOWN</tt> , then the
--   task status also reports as <tt>UNHEALTHY</tt> or <tt>UNKNOWN</tt> ,
--   accordingly.
tHealthStatus :: Lens' Task (Maybe HealthStatus)

-- | The Unix time stamp for when the task last went into
--   <tt>CONNECTED</tt> status.
tConnectivityAt :: Lens' Task (Maybe UTCTime)

-- | The number of CPU units used by the task. It can be expressed as an
--   integer using CPU units, for example <tt>1024</tt> , or as a string
--   using vCPUs, for example <tt>1 vCPU</tt> or <tt>1 vcpu</tt> , in a
--   task definition but is converted to an integer indicating the CPU
--   units when the task definition is registered. If using the EC2 launch
--   type, this field is optional. Supported values are between
--   <tt>128</tt> CPU units (<tt>0.125</tt> vCPUs) and <tt>10240</tt> CPU
--   units (<tt>10</tt> vCPUs). If using the Fargate launch type, this
--   field is required and you must use one of the following values, which
--   determines your range of supported values for the <tt>memory</tt>
--   parameter: * 256 (.25 vCPU) - Available <tt>memory</tt> values: 512
--   (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512 (.5 vCPU) - Available
--   <tt>memory</tt> values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB) * 1024 (1 vCPU) - Available <tt>memory</tt> values: 2048 (2 GB),
--   3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192
--   (8 GB) * 2048 (2 vCPU) - Available <tt>memory</tt> values: Between
--   4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) * 4096 (4
--   vCPU) - Available <tt>memory</tt> values: Between 8192 (8 GB) and
--   30720 (30 GB) in increments of 1024 (1 GB)
tCpu :: Lens' Task (Maybe Text)

-- | The Unix time stamp for when the container image pull began.
tPullStartedAt :: Lens' Task (Maybe UTCTime)

-- | Details of a task definition.
--   
--   <i>See:</i> <a>taskDefinition</a> smart constructor.
data TaskDefinition

-- | Creates a value of <a>TaskDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdStatus</a> - The status of the task definition.</li>
--   <li><a>tdExecutionRoleARN</a> - The Amazon Resource Name (ARN) of the
--   task execution role that the Amazon ECS container agent and the Docker
--   daemon can assume.</li>
--   <li><a>tdRequiresCompatibilities</a> - The launch type the task is
--   using.</li>
--   <li><a>tdFamily</a> - The family of your task definition, used as the
--   definition name.</li>
--   <li><a>tdContainerDefinitions</a> - A list of container definitions in
--   JSON format that describe the different containers that make up your
--   task. For more information about container definition parameters and
--   defaults, see <a>Amazon ECS Task Definitions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .</li>
--   <li><a>tdMemory</a> - The amount (in MiB) of memory used by the task.
--   If using the EC2 launch type, this field is optional and any value can
--   be used. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of valid values for the <tt>cpu</tt> parameter: * 512 (0.5 GB), 1024
--   (1 GB), 2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25 vCPU) *
--   1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available
--   <tt>cpu</tt> values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available
--   <tt>cpu</tt> values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16
--   GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048
--   (2 vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024
--   (1 GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)</li>
--   <li><a>tdTaskRoleARN</a> - The ARN of the IAM role that containers in
--   this task can assume. All containers in this task are granted the
--   permissions that are specified in this role. IAM roles for tasks on
--   Windows require that the <tt>-EnableTaskIAMRole</tt> option is set
--   when you launch the Amazon ECS-optimized Windows AMI. Your containers
--   must also run some configuration code in order to take advantage of
--   the feature. For more information, see <a>Windows IAM Roles for
--   Tasks</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tdPlacementConstraints</a> - An array of placement constraint
--   objects to use for tasks. This field is not valid if using the Fargate
--   launch type for your task.</li>
--   <li><a>tdNetworkMode</a> - The Docker networking mode to use for the
--   containers in the task. The valid values are <tt>none</tt> ,
--   <tt>bridge</tt> , <tt>awsvpc</tt> , and <tt>host</tt> . The default
--   Docker network mode is <tt>bridge</tt> . If using the Fargate launch
--   type, the <tt>awsvpc</tt> network mode is required. If using the EC2
--   launch type, any network mode can be used. If the network mode is set
--   to <tt>none</tt> , you can't specify port mappings in your container
--   definitions, and the task's containers do not have external
--   connectivity. The <tt>host</tt> and <tt>awsvpc</tt> network modes
--   offer the highest networking performance for containers because they
--   use the EC2 network stack instead of the virtualized network stack
--   provided by the <tt>bridge</tt> mode. With the <tt>host</tt> and
--   <tt>awsvpc</tt> network modes, exposed container ports are mapped
--   directly to the corresponding host port (for the <tt>host</tt> network
--   mode) or the attached elastic network interface port (for the
--   <tt>awsvpc</tt> network mode), so you cannot take advantage of dynamic
--   host port mappings. If the network mode is <tt>awsvpc</tt> , the task
--   is allocated an Elastic Network Interface, and you must specify a
--   <a>NetworkConfiguration</a> when you create a service or run a task
--   with the task definition. For more information, see <a>Task
--   Networking</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> . If the network mode is <tt>host</tt> , you can't run
--   multiple instantiations of the same task on a single container
--   instance when port mappings are used. Docker for Windows uses
--   different network modes than Docker for Linux. When you register a
--   task definition with Windows containers, you must not specify a
--   network mode. If you use the console to register a task definition
--   with Windows containers, you must choose the <tt><a>default</a></tt>
--   network mode object. For more information, see <a>Network settings</a>
--   in the <i>Docker run reference</i> .</li>
--   <li><a>tdTaskDefinitionARN</a> - The full Amazon Resource Name (ARN)
--   of the task definition.</li>
--   <li><a>tdCompatibilities</a> - The launch type to use with your task.
--   For more information, see <a>Amazon ECS Launch Types</a> in the
--   <i>Amazon Elastic Container Service Developer Guide</i> .</li>
--   <li><a>tdRevision</a> - The revision of the task in a particular
--   family. The revision is a version number of a task definition in a
--   family. When you register a task definition for the first time, the
--   revision is <tt>1</tt> ; each time you register a new revision of a
--   task definition in the same family, the revision value always
--   increases by one (even if you have deregistered previous revisions in
--   this family).</li>
--   <li><a>tdVolumes</a> - The list of volumes in a task. If you are using
--   the Fargate launch type, the <tt>host</tt> and <tt>sourcePath</tt>
--   parameters are not supported. For more information about volume
--   definition parameters and defaults, see <a>Amazon ECS Task
--   Definitions</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tdCpu</a> - The number of <tt>cpu</tt> units used by the task.
--   If using the EC2 launch type, this field is optional and any value can
--   be used. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of valid values for the <tt>memory</tt> parameter: * 256 (.25 vCPU) -
--   Available <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2
--   GB) * 512 (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB),
--   2048 (2 GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)</li>
--   <li><a>tdRequiresAttributes</a> - The container instance attributes
--   required by your task. This field is not valid if using the Fargate
--   launch type for your task.</li>
--   </ul>
taskDefinition :: TaskDefinition

-- | The status of the task definition.
tdStatus :: Lens' TaskDefinition (Maybe TaskDefinitionStatus)

-- | The Amazon Resource Name (ARN) of the task execution role that the
--   Amazon ECS container agent and the Docker daemon can assume.
tdExecutionRoleARN :: Lens' TaskDefinition (Maybe Text)

-- | The launch type the task is using.
tdRequiresCompatibilities :: Lens' TaskDefinition [Compatibility]

-- | The family of your task definition, used as the definition name.
tdFamily :: Lens' TaskDefinition (Maybe Text)

-- | A list of container definitions in JSON format that describe the
--   different containers that make up your task. For more information
--   about container definition parameters and defaults, see <a>Amazon ECS
--   Task Definitions</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> .
tdContainerDefinitions :: Lens' TaskDefinition [ContainerDefinition]

-- | The amount (in MiB) of memory used by the task. If using the EC2
--   launch type, this field is optional and any value can be used. If
--   using the Fargate launch type, this field is required and you must use
--   one of the following values, which determines your range of valid
--   values for the <tt>cpu</tt> parameter: * 512 (0.5 GB), 1024 (1 GB),
--   2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25 vCPU) * 1024 (1
--   GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available <tt>cpu</tt>
--   values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available <tt>cpu</tt>
--   values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048 (2
--   vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)
tdMemory :: Lens' TaskDefinition (Maybe Text)

-- | The ARN of the IAM role that containers in this task can assume. All
--   containers in this task are granted the permissions that are specified
--   in this role. IAM roles for tasks on Windows require that the
--   <tt>-EnableTaskIAMRole</tt> option is set when you launch the Amazon
--   ECS-optimized Windows AMI. Your containers must also run some
--   configuration code in order to take advantage of the feature. For more
--   information, see <a>Windows IAM Roles for Tasks</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tdTaskRoleARN :: Lens' TaskDefinition (Maybe Text)

-- | An array of placement constraint objects to use for tasks. This field
--   is not valid if using the Fargate launch type for your task.
tdPlacementConstraints :: Lens' TaskDefinition [TaskDefinitionPlacementConstraint]

-- | The Docker networking mode to use for the containers in the task. The
--   valid values are <tt>none</tt> , <tt>bridge</tt> , <tt>awsvpc</tt> ,
--   and <tt>host</tt> . The default Docker network mode is <tt>bridge</tt>
--   . If using the Fargate launch type, the <tt>awsvpc</tt> network mode
--   is required. If using the EC2 launch type, any network mode can be
--   used. If the network mode is set to <tt>none</tt> , you can't specify
--   port mappings in your container definitions, and the task's containers
--   do not have external connectivity. The <tt>host</tt> and
--   <tt>awsvpc</tt> network modes offer the highest networking performance
--   for containers because they use the EC2 network stack instead of the
--   virtualized network stack provided by the <tt>bridge</tt> mode. With
--   the <tt>host</tt> and <tt>awsvpc</tt> network modes, exposed container
--   ports are mapped directly to the corresponding host port (for the
--   <tt>host</tt> network mode) or the attached elastic network interface
--   port (for the <tt>awsvpc</tt> network mode), so you cannot take
--   advantage of dynamic host port mappings. If the network mode is
--   <tt>awsvpc</tt> , the task is allocated an Elastic Network Interface,
--   and you must specify a <a>NetworkConfiguration</a> when you create a
--   service or run a task with the task definition. For more information,
--   see <a>Task Networking</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> . If the network mode is <tt>host</tt> , you can't
--   run multiple instantiations of the same task on a single container
--   instance when port mappings are used. Docker for Windows uses
--   different network modes than Docker for Linux. When you register a
--   task definition with Windows containers, you must not specify a
--   network mode. If you use the console to register a task definition
--   with Windows containers, you must choose the <tt><a>default</a></tt>
--   network mode object. For more information, see <a>Network settings</a>
--   in the <i>Docker run reference</i> .
tdNetworkMode :: Lens' TaskDefinition (Maybe NetworkMode)

-- | The full Amazon Resource Name (ARN) of the task definition.
tdTaskDefinitionARN :: Lens' TaskDefinition (Maybe Text)

-- | The launch type to use with your task. For more information, see
--   <a>Amazon ECS Launch Types</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .
tdCompatibilities :: Lens' TaskDefinition [Compatibility]

-- | The revision of the task in a particular family. The revision is a
--   version number of a task definition in a family. When you register a
--   task definition for the first time, the revision is <tt>1</tt> ; each
--   time you register a new revision of a task definition in the same
--   family, the revision value always increases by one (even if you have
--   deregistered previous revisions in this family).
tdRevision :: Lens' TaskDefinition (Maybe Int)

-- | The list of volumes in a task. If you are using the Fargate launch
--   type, the <tt>host</tt> and <tt>sourcePath</tt> parameters are not
--   supported. For more information about volume definition parameters and
--   defaults, see <a>Amazon ECS Task Definitions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tdVolumes :: Lens' TaskDefinition [Volume]

-- | The number of <tt>cpu</tt> units used by the task. If using the EC2
--   launch type, this field is optional and any value can be used. If
--   using the Fargate launch type, this field is required and you must use
--   one of the following values, which determines your range of valid
--   values for the <tt>memory</tt> parameter: * 256 (.25 vCPU) - Available
--   <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512
--   (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB), 2048 (2
--   GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)
tdCpu :: Lens' TaskDefinition (Maybe Text)

-- | The container instance attributes required by your task. This field is
--   not valid if using the Fargate launch type for your task.
tdRequiresAttributes :: Lens' TaskDefinition [Attribute]

-- | An object representing a constraint on task placement in the task
--   definition.
--   
--   If you are using the Fargate launch type, task placement constraints
--   are not supported.
--   
--   For more information, see <a>Task Placement Constraints</a> in the
--   <i>Amazon Elastic Container Service Developer Guide</i> .
--   
--   <i>See:</i> <a>taskDefinitionPlacementConstraint</a> smart
--   constructor.
data TaskDefinitionPlacementConstraint

-- | Creates a value of <a>TaskDefinitionPlacementConstraint</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdpcExpression</a> - A cluster query language expression to
--   apply to the constraint. For more information, see <a>Cluster Query
--   Language</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tdpcType</a> - The type of constraint. The
--   <tt>DistinctInstance</tt> constraint ensures that each task in a
--   particular group is running on a different container instance. The
--   <tt>MemberOf</tt> constraint restricts selection to be from a group of
--   valid candidates.</li>
--   </ul>
taskDefinitionPlacementConstraint :: TaskDefinitionPlacementConstraint

-- | A cluster query language expression to apply to the constraint. For
--   more information, see <a>Cluster Query Language</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tdpcExpression :: Lens' TaskDefinitionPlacementConstraint (Maybe Text)

-- | The type of constraint. The <tt>DistinctInstance</tt> constraint
--   ensures that each task in a particular group is running on a different
--   container instance. The <tt>MemberOf</tt> constraint restricts
--   selection to be from a group of valid candidates.
tdpcType :: Lens' TaskDefinitionPlacementConstraint (Maybe TaskDefinitionPlacementConstraintType)

-- | The overrides associated with a task.
--   
--   <i>See:</i> <a>taskOverride</a> smart constructor.
data TaskOverride

-- | Creates a value of <a>TaskOverride</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>toContainerOverrides</a> - One or more container overrides sent
--   to a task.</li>
--   <li><a>toExecutionRoleARN</a> - The Amazon Resource Name (ARN) of the
--   task execution role that the Amazon ECS container agent and the Docker
--   daemon can assume.</li>
--   <li><a>toTaskRoleARN</a> - The Amazon Resource Name (ARN) of the IAM
--   role that containers in this task can assume. All containers in this
--   task are granted the permissions that are specified in this role.</li>
--   </ul>
taskOverride :: TaskOverride

-- | One or more container overrides sent to a task.
toContainerOverrides :: Lens' TaskOverride [ContainerOverride]

-- | The Amazon Resource Name (ARN) of the task execution role that the
--   Amazon ECS container agent and the Docker daemon can assume.
toExecutionRoleARN :: Lens' TaskOverride (Maybe Text)

-- | The Amazon Resource Name (ARN) of the IAM role that containers in this
--   task can assume. All containers in this task are granted the
--   permissions that are specified in this role.
toTaskRoleARN :: Lens' TaskOverride (Maybe Text)

-- | The container path, mount options, and size of the tmpfs mount.
--   
--   <i>See:</i> <a>tmpfs</a> smart constructor.
data Tmpfs

-- | Creates a value of <a>Tmpfs</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tMountOptions</a> - The list of tmpfs volume mount options.
--   Valid values: <tt>"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev"
--   | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" |
--   "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" |
--   "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" |
--   "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" |
--   "relatime" | "norelatime" | "strictatime" | "nostrictatime"</tt></li>
--   <li><a>tContainerPath</a> - The absolute file path where the tmpfs
--   volume will be mounted.</li>
--   <li><a>tSize</a> - The size of the tmpfs volume.</li>
--   </ul>
tmpfs :: Text -> Int -> Tmpfs

-- | The list of tmpfs volume mount options. Valid values: <tt>"defaults" |
--   "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec"
--   | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" |
--   "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" |
--   "unbindable" | "runbindable" | "private" | "rprivate" | "shared" |
--   "rshared" | "slave" | "rslave" | "relatime" | "norelatime" |
--   "strictatime" | "nostrictatime"</tt>
tMountOptions :: Lens' Tmpfs [Text]

-- | The absolute file path where the tmpfs volume will be mounted.
tContainerPath :: Lens' Tmpfs Text

-- | The size of the tmpfs volume.
tSize :: Lens' Tmpfs Int

-- | The <tt>ulimit</tt> settings to pass to the container.
--   
--   <i>See:</i> <a>ulimit</a> smart constructor.
data Ulimit

-- | Creates a value of <a>Ulimit</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uName</a> - The <tt>type</tt> of the <tt>ulimit</tt> .</li>
--   <li><a>uSoftLimit</a> - The soft limit for the ulimit type.</li>
--   <li><a>uHardLimit</a> - The hard limit for the ulimit type.</li>
--   </ul>
ulimit :: UlimitName -> Int -> Int -> Ulimit

-- | The <tt>type</tt> of the <tt>ulimit</tt> .
uName :: Lens' Ulimit UlimitName

-- | The soft limit for the ulimit type.
uSoftLimit :: Lens' Ulimit Int

-- | The hard limit for the ulimit type.
uHardLimit :: Lens' Ulimit Int

-- | The Docker and Amazon ECS container agent version information about a
--   container instance.
--   
--   <i>See:</i> <a>versionInfo</a> smart constructor.
data VersionInfo

-- | Creates a value of <a>VersionInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>viAgentHash</a> - The Git commit hash for the Amazon ECS
--   container agent build on the <a>amazon-ecs-agent</a> GitHub
--   repository.</li>
--   <li><a>viAgentVersion</a> - The version number of the Amazon ECS
--   container agent.</li>
--   <li><a>viDockerVersion</a> - The Docker version running on the
--   container instance.</li>
--   </ul>
versionInfo :: VersionInfo

-- | The Git commit hash for the Amazon ECS container agent build on the
--   <a>amazon-ecs-agent</a> GitHub repository.
viAgentHash :: Lens' VersionInfo (Maybe Text)

-- | The version number of the Amazon ECS container agent.
viAgentVersion :: Lens' VersionInfo (Maybe Text)

-- | The Docker version running on the container instance.
viDockerVersion :: Lens' VersionInfo (Maybe Text)

-- | A data volume used in a task definition.
--   
--   <i>See:</i> <a>volume</a> smart constructor.
data Volume

-- | Creates a value of <a>Volume</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vName</a> - The name of the volume. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. This name is referenced in the <tt>sourceVolume</tt>
--   parameter of container definition <tt>mountPoints</tt> .</li>
--   <li><a>vHost</a> - The contents of the <tt>host</tt> parameter
--   determine whether your data volume persists on the host container
--   instance and where it is stored. If the host parameter is empty, then
--   the Docker daemon assigns a host path for your data volume, but the
--   data is not guaranteed to persist after the containers associated with
--   it stop running. Windows containers can mount whole directories on the
--   same drive as <tt>&gt; env:ProgramData</tt> . Windows containers
--   cannot mount directories on a different drive, and mount point cannot
--   be across drives. For example, you can mount
--   <tt>C:mypath:C:mypath</tt> and <tt>D::D:@ , but not
--   </tt>D:mypath:C:mypath<tt> or </tt>D::C:mypath@ .</li>
--   </ul>
volume :: Volume

-- | The name of the volume. Up to 255 letters (uppercase and lowercase),
--   numbers, hyphens, and underscores are allowed. This name is referenced
--   in the <tt>sourceVolume</tt> parameter of container definition
--   <tt>mountPoints</tt> .
vName :: Lens' Volume (Maybe Text)

-- | The contents of the <tt>host</tt> parameter determine whether your
--   data volume persists on the host container instance and where it is
--   stored. If the host parameter is empty, then the Docker daemon assigns
--   a host path for your data volume, but the data is not guaranteed to
--   persist after the containers associated with it stop running. Windows
--   containers can mount whole directories on the same drive as <tt>&gt;
--   env:ProgramData</tt> . Windows containers cannot mount directories on
--   a different drive, and mount point cannot be across drives. For
--   example, you can mount <tt>C:mypath:C:mypath</tt> and <tt>D::D:@ , but
--   not </tt>D:mypath:C:mypath<tt> or </tt>D::C:mypath@ .
vHost :: Lens' Volume (Maybe HostVolumeProperties)

-- | Details on a data volume from another container in the same task
--   definition.
--   
--   <i>See:</i> <a>volumeFrom</a> smart constructor.
data VolumeFrom

-- | Creates a value of <a>VolumeFrom</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfSourceContainer</a> - The name of another container within
--   the same task definition to mount volumes from.</li>
--   <li><a>vfReadOnly</a> - If this value is <tt>true</tt> , the container
--   has read-only access to the volume. If this value is <tt>false</tt> ,
--   then the container can write to the volume. The default value is
--   <tt>false</tt> .</li>
--   </ul>
volumeFrom :: VolumeFrom

-- | The name of another container within the same task definition to mount
--   volumes from.
vfSourceContainer :: Lens' VolumeFrom (Maybe Text)

-- | If this value is <tt>true</tt> , the container has read-only access to
--   the volume. If this value is <tt>false</tt> , then the container can
--   write to the volume. The default value is <tt>false</tt> .
vfReadOnly :: Lens' VolumeFrom (Maybe Bool)


-- | Sent to acknowledge that a task changed states.
module Network.AWS.ECS.SubmitTaskStateChange

-- | Creates a value of <a>SubmitTaskStateChange</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>stscStatus</a> - The status of the state change request.</li>
--   <li><a>stscCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the task.</li>
--   <li><a>stscAttachments</a> - Any attachments associated with the state
--   change request.</li>
--   <li><a>stscExecutionStoppedAt</a> - The Unix time stamp for when the
--   task execution stopped.</li>
--   <li><a>stscPullStoppedAt</a> - The Unix time stamp for when the
--   container image pull completed.</li>
--   <li><a>stscContainers</a> - Any containers associated with the state
--   change request.</li>
--   <li><a>stscReason</a> - The reason for the state change request.</li>
--   <li><a>stscTask</a> - The task ID or full ARN of the task in the state
--   change request.</li>
--   <li><a>stscPullStartedAt</a> - The Unix time stamp for when the
--   container image pull began.</li>
--   </ul>
submitTaskStateChange :: SubmitTaskStateChange

-- | <i>See:</i> <a>submitTaskStateChange</a> smart constructor.
data SubmitTaskStateChange

-- | The status of the state change request.
stscStatus :: Lens' SubmitTaskStateChange (Maybe Text)

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the task.
stscCluster :: Lens' SubmitTaskStateChange (Maybe Text)

-- | Any attachments associated with the state change request.
stscAttachments :: Lens' SubmitTaskStateChange [AttachmentStateChange]

-- | The Unix time stamp for when the task execution stopped.
stscExecutionStoppedAt :: Lens' SubmitTaskStateChange (Maybe UTCTime)

-- | The Unix time stamp for when the container image pull completed.
stscPullStoppedAt :: Lens' SubmitTaskStateChange (Maybe UTCTime)

-- | Any containers associated with the state change request.
stscContainers :: Lens' SubmitTaskStateChange [ContainerStateChange]

-- | The reason for the state change request.
stscReason :: Lens' SubmitTaskStateChange (Maybe Text)

-- | The task ID or full ARN of the task in the state change request.
stscTask :: Lens' SubmitTaskStateChange (Maybe Text)

-- | The Unix time stamp for when the container image pull began.
stscPullStartedAt :: Lens' SubmitTaskStateChange (Maybe UTCTime)

-- | Creates a value of <a>SubmitTaskStateChangeResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>stscrsAcknowledgment</a> - Acknowledgement of the state
--   change.</li>
--   <li><a>stscrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
submitTaskStateChangeResponse :: Int -> SubmitTaskStateChangeResponse

-- | <i>See:</i> <a>submitTaskStateChangeResponse</a> smart constructor.
data SubmitTaskStateChangeResponse

-- | Acknowledgement of the state change.
stscrsAcknowledgment :: Lens' SubmitTaskStateChangeResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
stscrsResponseStatus :: Lens' SubmitTaskStateChangeResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChangeResponse
instance Data.Data.Data Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChangeResponse
instance GHC.Show.Show Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChangeResponse
instance GHC.Read.Read Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChangeResponse
instance GHC.Classes.Eq Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChangeResponse
instance GHC.Generics.Generic Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Data.Data.Data Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance GHC.Show.Show Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance GHC.Read.Read Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance GHC.Classes.Eq Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Control.DeepSeq.NFData Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChangeResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Control.DeepSeq.NFData Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.SubmitTaskStateChange.SubmitTaskStateChange


-- | Sent to acknowledge that a container changed states.
module Network.AWS.ECS.SubmitContainerStateChange

-- | Creates a value of <a>SubmitContainerStateChange</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scscNetworkBindings</a> - The network bindings of the
--   container.</li>
--   <li><a>scscStatus</a> - The status of the state change request.</li>
--   <li><a>scscCluster</a> - The short name or full ARN of the cluster
--   that hosts the container.</li>
--   <li><a>scscContainerName</a> - The name of the container.</li>
--   <li><a>scscReason</a> - The reason for the state change request.</li>
--   <li><a>scscExitCode</a> - The exit code returned for the state change
--   request.</li>
--   <li><a>scscTask</a> - The task ID or full Amazon Resource Name (ARN)
--   of the task that hosts the container.</li>
--   </ul>
submitContainerStateChange :: SubmitContainerStateChange

-- | <i>See:</i> <a>submitContainerStateChange</a> smart constructor.
data SubmitContainerStateChange

-- | The network bindings of the container.
scscNetworkBindings :: Lens' SubmitContainerStateChange [NetworkBinding]

-- | The status of the state change request.
scscStatus :: Lens' SubmitContainerStateChange (Maybe Text)

-- | The short name or full ARN of the cluster that hosts the container.
scscCluster :: Lens' SubmitContainerStateChange (Maybe Text)

-- | The name of the container.
scscContainerName :: Lens' SubmitContainerStateChange (Maybe Text)

-- | The reason for the state change request.
scscReason :: Lens' SubmitContainerStateChange (Maybe Text)

-- | The exit code returned for the state change request.
scscExitCode :: Lens' SubmitContainerStateChange (Maybe Int)

-- | The task ID or full Amazon Resource Name (ARN) of the task that hosts
--   the container.
scscTask :: Lens' SubmitContainerStateChange (Maybe Text)

-- | Creates a value of <a>SubmitContainerStateChangeResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scscrsAcknowledgment</a> - Acknowledgement of the state
--   change.</li>
--   <li><a>scscrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
submitContainerStateChangeResponse :: Int -> SubmitContainerStateChangeResponse

-- | <i>See:</i> <a>submitContainerStateChangeResponse</a> smart
--   constructor.
data SubmitContainerStateChangeResponse

-- | Acknowledgement of the state change.
scscrsAcknowledgment :: Lens' SubmitContainerStateChangeResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
scscrsResponseStatus :: Lens' SubmitContainerStateChangeResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChangeResponse
instance Data.Data.Data Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChangeResponse
instance GHC.Show.Show Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChangeResponse
instance GHC.Read.Read Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChangeResponse
instance GHC.Classes.Eq Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChangeResponse
instance GHC.Generics.Generic Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Data.Data.Data Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance GHC.Show.Show Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance GHC.Read.Read Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance GHC.Classes.Eq Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Control.DeepSeq.NFData Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChangeResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Control.DeepSeq.NFData Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.SubmitContainerStateChange.SubmitContainerStateChange


-- | Stops a running task.
--   
--   When <a>StopTask</a> is called on a task, the equivalent of <tt>docker
--   stop</tt> is issued to the containers running in the task. This
--   results in a <tt>SIGTERM</tt> and a default 30-second timeout, after
--   which <tt>SIGKILL</tt> is sent and the containers are forcibly
--   stopped. If the container handles the <tt>SIGTERM</tt> gracefully and
--   exits within 30 seconds from receiving it, no <tt>SIGKILL</tt> is
--   sent.
module Network.AWS.ECS.StopTask

-- | Creates a value of <a>StopTask</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>stCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the task to stop. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>stReason</a> - An optional message specified when a task is
--   stopped. For example, if you are using a custom scheduler, you can use
--   this parameter to specify the reason for stopping the task here, and
--   the message appears in subsequent <tt>DescribeTasks</tt> API
--   operations on this task. Up to 255 characters are allowed in this
--   message.</li>
--   <li><a>stTask</a> - The task ID or full ARN entry of the task to
--   stop.</li>
--   </ul>
stopTask :: Text -> StopTask

-- | <i>See:</i> <a>stopTask</a> smart constructor.
data StopTask

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the task to stop. If you do not specify a cluster, the default
--   cluster is assumed.
stCluster :: Lens' StopTask (Maybe Text)

-- | An optional message specified when a task is stopped. For example, if
--   you are using a custom scheduler, you can use this parameter to
--   specify the reason for stopping the task here, and the message appears
--   in subsequent <tt>DescribeTasks</tt> API operations on this task. Up
--   to 255 characters are allowed in this message.
stReason :: Lens' StopTask (Maybe Text)

-- | The task ID or full ARN entry of the task to stop.
stTask :: Lens' StopTask Text

-- | Creates a value of <a>StopTaskResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srsTask</a> - The task that was stopped.</li>
--   <li><a>srsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
stopTaskResponse :: Int -> StopTaskResponse

-- | <i>See:</i> <a>stopTaskResponse</a> smart constructor.
data StopTaskResponse

-- | The task that was stopped.
srsTask :: Lens' StopTaskResponse (Maybe Task)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
srsResponseStatus :: Lens' StopTaskResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.StopTask.StopTaskResponse
instance Data.Data.Data Network.AWS.ECS.StopTask.StopTaskResponse
instance GHC.Show.Show Network.AWS.ECS.StopTask.StopTaskResponse
instance GHC.Read.Read Network.AWS.ECS.StopTask.StopTaskResponse
instance GHC.Classes.Eq Network.AWS.ECS.StopTask.StopTaskResponse
instance GHC.Generics.Generic Network.AWS.ECS.StopTask.StopTask
instance Data.Data.Data Network.AWS.ECS.StopTask.StopTask
instance GHC.Show.Show Network.AWS.ECS.StopTask.StopTask
instance GHC.Read.Read Network.AWS.ECS.StopTask.StopTask
instance GHC.Classes.Eq Network.AWS.ECS.StopTask.StopTask
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.StopTask.StopTask
instance Control.DeepSeq.NFData Network.AWS.ECS.StopTask.StopTaskResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.StopTask.StopTask
instance Control.DeepSeq.NFData Network.AWS.ECS.StopTask.StopTask
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.StopTask.StopTask
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.StopTask.StopTask
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.StopTask.StopTask
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.StopTask.StopTask


-- | Starts a new task from the specified task definition on the specified
--   container instance or instances.
--   
--   Alternatively, you can use <tt>RunTask</tt> to place tasks for you.
--   For more information, see <a>Scheduling Tasks</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
module Network.AWS.ECS.StartTask

-- | Creates a value of <a>StartTask</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sOverrides</a> - A list of container overrides in JSON format
--   that specify the name of a container in the specified task definition
--   and the overrides it should receive. You can override the default
--   command for a container (that is specified in the task definition or
--   Docker image) with a <tt>command</tt> override. You can also override
--   existing environment variables (that are specified in the task
--   definition or Docker image) on a container or add new environment
--   variables to it with an <tt>environment</tt> override.</li>
--   <li><a>sGroup</a> - The name of the task group to associate with the
--   task. The default value is the family name of the task definition (for
--   example, family:my-family-name).</li>
--   <li><a>sCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster on which to start your task. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>sStartedBy</a> - An optional tag specified when a task is
--   started. For example if you automatically trigger a task to run a
--   batch process job, you could apply a unique identifier for that job to
--   your task with the <tt>startedBy</tt> parameter. You can then identify
--   which tasks belong to that job by filtering the results of a
--   <tt>ListTasks</tt> call with the <tt>startedBy</tt> value. Up to 36
--   letters (uppercase and lowercase), numbers, hyphens, and underscores
--   are allowed. If a task is started by an Amazon ECS service, then the
--   <tt>startedBy</tt> parameter contains the deployment ID of the service
--   that starts it.</li>
--   <li><a>sNetworkConfiguration</a> - The VPC subnet and security group
--   configuration for tasks that receive their own Elastic Network
--   Interface by using the <tt>awsvpc</tt> networking mode.</li>
--   <li><a>sTaskDefinition</a> - The <tt>family</tt> and <tt>revision</tt>
--   (<tt>family:revision</tt> ) or full ARN of the task definition to
--   start. If a <tt>revision</tt> is not specified, the latest
--   <tt>ACTIVE</tt> revision is used.</li>
--   <li><a>sContainerInstances</a> - The container instance IDs or full
--   ARN entries for the container instances on which you would like to
--   place your task. You can specify up to 10 container instances.</li>
--   </ul>
startTask :: Text -> StartTask

-- | <i>See:</i> <a>startTask</a> smart constructor.
data StartTask

-- | A list of container overrides in JSON format that specify the name of
--   a container in the specified task definition and the overrides it
--   should receive. You can override the default command for a container
--   (that is specified in the task definition or Docker image) with a
--   <tt>command</tt> override. You can also override existing environment
--   variables (that are specified in the task definition or Docker image)
--   on a container or add new environment variables to it with an
--   <tt>environment</tt> override.
sOverrides :: Lens' StartTask (Maybe TaskOverride)

-- | The name of the task group to associate with the task. The default
--   value is the family name of the task definition (for example,
--   family:my-family-name).
sGroup :: Lens' StartTask (Maybe Text)

-- | The short name or full Amazon Resource Name (ARN) of the cluster on
--   which to start your task. If you do not specify a cluster, the default
--   cluster is assumed.
sCluster :: Lens' StartTask (Maybe Text)

-- | An optional tag specified when a task is started. For example if you
--   automatically trigger a task to run a batch process job, you could
--   apply a unique identifier for that job to your task with the
--   <tt>startedBy</tt> parameter. You can then identify which tasks belong
--   to that job by filtering the results of a <tt>ListTasks</tt> call with
--   the <tt>startedBy</tt> value. Up to 36 letters (uppercase and
--   lowercase), numbers, hyphens, and underscores are allowed. If a task
--   is started by an Amazon ECS service, then the <tt>startedBy</tt>
--   parameter contains the deployment ID of the service that starts it.
sStartedBy :: Lens' StartTask (Maybe Text)

-- | The VPC subnet and security group configuration for tasks that receive
--   their own Elastic Network Interface by using the <tt>awsvpc</tt>
--   networking mode.
sNetworkConfiguration :: Lens' StartTask (Maybe NetworkConfiguration)

-- | The <tt>family</tt> and <tt>revision</tt> (<tt>family:revision</tt> )
--   or full ARN of the task definition to start. If a <tt>revision</tt> is
--   not specified, the latest <tt>ACTIVE</tt> revision is used.
sTaskDefinition :: Lens' StartTask Text

-- | The container instance IDs or full ARN entries for the container
--   instances on which you would like to place your task. You can specify
--   up to 10 container instances.
sContainerInstances :: Lens' StartTask [Text]

-- | Creates a value of <a>StartTaskResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>strsFailures</a> - Any failures associated with the call.</li>
--   <li><a>strsTasks</a> - A full description of the tasks that were
--   started. Each task that was successfully placed on your container
--   instances is described.</li>
--   <li><a>strsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
startTaskResponse :: Int -> StartTaskResponse

-- | <i>See:</i> <a>startTaskResponse</a> smart constructor.
data StartTaskResponse

-- | Any failures associated with the call.
strsFailures :: Lens' StartTaskResponse [Failure]

-- | A full description of the tasks that were started. Each task that was
--   successfully placed on your container instances is described.
strsTasks :: Lens' StartTaskResponse [Task]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
strsResponseStatus :: Lens' StartTaskResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.StartTask.StartTaskResponse
instance Data.Data.Data Network.AWS.ECS.StartTask.StartTaskResponse
instance GHC.Show.Show Network.AWS.ECS.StartTask.StartTaskResponse
instance GHC.Read.Read Network.AWS.ECS.StartTask.StartTaskResponse
instance GHC.Classes.Eq Network.AWS.ECS.StartTask.StartTaskResponse
instance GHC.Generics.Generic Network.AWS.ECS.StartTask.StartTask
instance Data.Data.Data Network.AWS.ECS.StartTask.StartTask
instance GHC.Show.Show Network.AWS.ECS.StartTask.StartTask
instance GHC.Read.Read Network.AWS.ECS.StartTask.StartTask
instance GHC.Classes.Eq Network.AWS.ECS.StartTask.StartTask
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.StartTask.StartTask
instance Control.DeepSeq.NFData Network.AWS.ECS.StartTask.StartTaskResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.StartTask.StartTask
instance Control.DeepSeq.NFData Network.AWS.ECS.StartTask.StartTask
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.StartTask.StartTask
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.StartTask.StartTask
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.StartTask.StartTask
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.StartTask.StartTask


-- | Starts a new task using the specified task definition.
--   
--   You can allow Amazon ECS to place tasks for you, or you can customize
--   how Amazon ECS places tasks using placement constraints and placement
--   strategies. For more information, see <a>Scheduling Tasks</a> in the
--   <i>Amazon Elastic Container Service Developer Guide</i> .
--   
--   Alternatively, you can use <tt>StartTask</tt> to use your own
--   scheduler or place tasks manually on specific container instances.
--   
--   The Amazon ECS API follows an eventual consistency model, due to the
--   distributed nature of the system supporting the API. This means that
--   the result of an API command you run that affects your Amazon ECS
--   resources might not be immediately visible to all subsequent commands
--   you run. You should keep this in mind when you carry out an API
--   command that immediately follows a previous API command.
--   
--   To manage eventual consistency, you can do the following:
--   
--   <ul>
--   <li>Confirm the state of the resource before you run a command to
--   modify it. Run the DescribeTasks command using an exponential backoff
--   algorithm to ensure that you allow enough time for the previous
--   command to propagate through the system. To do this, run the
--   DescribeTasks command repeatedly, starting with a couple of seconds of
--   wait time, and increasing gradually up to five minutes of wait
--   time.</li>
--   <li>Add wait time between subsequent commands, even if the
--   DescribeTasks command returns an accurate response. Apply an
--   exponential backoff algorithm starting with a couple of seconds of
--   wait time, and increase gradually up to about five minutes of wait
--   time.</li>
--   </ul>
module Network.AWS.ECS.RunTask

-- | Creates a value of <a>RunTask</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtOverrides</a> - A list of container overrides in JSON format
--   that specify the name of a container in the specified task definition
--   and the overrides it should receive. You can override the default
--   command for a container (that is specified in the task definition or
--   Docker image) with a <tt>command</tt> override. You can also override
--   existing environment variables (that are specified in the task
--   definition or Docker image) on a container or add new environment
--   variables to it with an <tt>environment</tt> override.</li>
--   <li><a>rtGroup</a> - The name of the task group to associate with the
--   task. The default value is the family name of the task definition (for
--   example, family:my-family-name).</li>
--   <li><a>rtCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster on which to run your task. If you do not specify
--   a cluster, the default cluster is assumed.</li>
--   <li><a>rtPlatformVersion</a> - The platform version on which to run
--   your task. If one is not specified, the latest version is used by
--   default.</li>
--   <li><a>rtCount</a> - The number of instantiations of the specified
--   task to place on your cluster. You can specify up to 10 tasks per
--   call.</li>
--   <li><a>rtPlacementConstraints</a> - An array of placement constraint
--   objects to use for the task. You can specify up to 10 constraints per
--   task (including constraints in the task definition and those specified
--   at run time).</li>
--   <li><a>rtPlacementStrategy</a> - The placement strategy objects to use
--   for the task. You can specify a maximum of five strategy rules per
--   task.</li>
--   <li><a>rtStartedBy</a> - An optional tag specified when a task is
--   started. For example if you automatically trigger a task to run a
--   batch process job, you could apply a unique identifier for that job to
--   your task with the <tt>startedBy</tt> parameter. You can then identify
--   which tasks belong to that job by filtering the results of a
--   <tt>ListTasks</tt> call with the <tt>startedBy</tt> value. Up to 36
--   letters (uppercase and lowercase), numbers, hyphens, and underscores
--   are allowed. If a task is started by an Amazon ECS service, then the
--   <tt>startedBy</tt> parameter contains the deployment ID of the service
--   that starts it.</li>
--   <li><a>rtLaunchType</a> - The launch type on which to run your
--   task.</li>
--   <li><a>rtNetworkConfiguration</a> - The network configuration for the
--   task. This parameter is required for task definitions that use the
--   <tt>awsvpc</tt> network mode to receive their own Elastic Network
--   Interface, and it is not supported for other network modes. For more
--   information, see <a>Task Networking</a> in the <i>Amazon Elastic
--   Container Service Developer Guide</i> .</li>
--   <li><a>rtTaskDefinition</a> - The <tt>family</tt> and
--   <tt>revision</tt> (<tt>family:revision</tt> ) or full ARN of the task
--   definition to run. If a <tt>revision</tt> is not specified, the latest
--   <tt>ACTIVE</tt> revision is used.</li>
--   </ul>
runTask :: Text -> RunTask

-- | <i>See:</i> <a>runTask</a> smart constructor.
data RunTask

-- | A list of container overrides in JSON format that specify the name of
--   a container in the specified task definition and the overrides it
--   should receive. You can override the default command for a container
--   (that is specified in the task definition or Docker image) with a
--   <tt>command</tt> override. You can also override existing environment
--   variables (that are specified in the task definition or Docker image)
--   on a container or add new environment variables to it with an
--   <tt>environment</tt> override.
rtOverrides :: Lens' RunTask (Maybe TaskOverride)

-- | The name of the task group to associate with the task. The default
--   value is the family name of the task definition (for example,
--   family:my-family-name).
rtGroup :: Lens' RunTask (Maybe Text)

-- | The short name or full Amazon Resource Name (ARN) of the cluster on
--   which to run your task. If you do not specify a cluster, the default
--   cluster is assumed.
rtCluster :: Lens' RunTask (Maybe Text)

-- | The platform version on which to run your task. If one is not
--   specified, the latest version is used by default.
rtPlatformVersion :: Lens' RunTask (Maybe Text)

-- | The number of instantiations of the specified task to place on your
--   cluster. You can specify up to 10 tasks per call.
rtCount :: Lens' RunTask (Maybe Int)

-- | An array of placement constraint objects to use for the task. You can
--   specify up to 10 constraints per task (including constraints in the
--   task definition and those specified at run time).
rtPlacementConstraints :: Lens' RunTask [PlacementConstraint]

-- | The placement strategy objects to use for the task. You can specify a
--   maximum of five strategy rules per task.
rtPlacementStrategy :: Lens' RunTask [PlacementStrategy]

-- | An optional tag specified when a task is started. For example if you
--   automatically trigger a task to run a batch process job, you could
--   apply a unique identifier for that job to your task with the
--   <tt>startedBy</tt> parameter. You can then identify which tasks belong
--   to that job by filtering the results of a <tt>ListTasks</tt> call with
--   the <tt>startedBy</tt> value. Up to 36 letters (uppercase and
--   lowercase), numbers, hyphens, and underscores are allowed. If a task
--   is started by an Amazon ECS service, then the <tt>startedBy</tt>
--   parameter contains the deployment ID of the service that starts it.
rtStartedBy :: Lens' RunTask (Maybe Text)

-- | The launch type on which to run your task.
rtLaunchType :: Lens' RunTask (Maybe LaunchType)

-- | The network configuration for the task. This parameter is required for
--   task definitions that use the <tt>awsvpc</tt> network mode to receive
--   their own Elastic Network Interface, and it is not supported for other
--   network modes. For more information, see <a>Task Networking</a> in the
--   <i>Amazon Elastic Container Service Developer Guide</i> .
rtNetworkConfiguration :: Lens' RunTask (Maybe NetworkConfiguration)

-- | The <tt>family</tt> and <tt>revision</tt> (<tt>family:revision</tt> )
--   or full ARN of the task definition to run. If a <tt>revision</tt> is
--   not specified, the latest <tt>ACTIVE</tt> revision is used.
rtTaskDefinition :: Lens' RunTask Text

-- | Creates a value of <a>RunTaskResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtrsFailures</a> - Any failures associated with the call.</li>
--   <li><a>rtrsTasks</a> - A full description of the tasks that were run.
--   The tasks that were successfully placed on your cluster are described
--   here.</li>
--   <li><a>rtrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
runTaskResponse :: Int -> RunTaskResponse

-- | <i>See:</i> <a>runTaskResponse</a> smart constructor.
data RunTaskResponse

-- | Any failures associated with the call.
rtrsFailures :: Lens' RunTaskResponse [Failure]

-- | A full description of the tasks that were run. The tasks that were
--   successfully placed on your cluster are described here.
rtrsTasks :: Lens' RunTaskResponse [Task]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rtrsResponseStatus :: Lens' RunTaskResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.RunTask.RunTaskResponse
instance Data.Data.Data Network.AWS.ECS.RunTask.RunTaskResponse
instance GHC.Show.Show Network.AWS.ECS.RunTask.RunTaskResponse
instance GHC.Read.Read Network.AWS.ECS.RunTask.RunTaskResponse
instance GHC.Classes.Eq Network.AWS.ECS.RunTask.RunTaskResponse
instance GHC.Generics.Generic Network.AWS.ECS.RunTask.RunTask
instance Data.Data.Data Network.AWS.ECS.RunTask.RunTask
instance GHC.Show.Show Network.AWS.ECS.RunTask.RunTask
instance GHC.Read.Read Network.AWS.ECS.RunTask.RunTask
instance GHC.Classes.Eq Network.AWS.ECS.RunTask.RunTask
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.RunTask.RunTask
instance Control.DeepSeq.NFData Network.AWS.ECS.RunTask.RunTaskResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.RunTask.RunTask
instance Control.DeepSeq.NFData Network.AWS.ECS.RunTask.RunTask
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.RunTask.RunTask
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.RunTask.RunTask
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.RunTask.RunTask
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.RunTask.RunTask


-- | Registers a new task definition from the supplied <tt>family</tt> and
--   <tt>containerDefinitions</tt> . Optionally, you can add data volumes
--   to your containers with the <tt>volumes</tt> parameter. For more
--   information about task definition parameters and defaults, see
--   <a>Amazon ECS Task Definitions</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .
--   
--   You can specify an IAM role for your task with the
--   <tt>taskRoleArn</tt> parameter. When you specify an IAM role for a
--   task, its containers can then use the latest versions of the AWS CLI
--   or SDKs to make API requests to the AWS services that are specified in
--   the IAM policy associated with the role. For more information, see
--   <a>IAM Roles for Tasks</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> .
--   
--   You can specify a Docker networking mode for the containers in your
--   task definition with the <tt>networkMode</tt> parameter. The available
--   network modes correspond to those described in <a>Network settings</a>
--   in the Docker run reference. If you specify the <tt>awsvpc</tt>
--   network mode, the task is allocated an Elastic Network Interface, and
--   you must specify a <a>NetworkConfiguration</a> when you create a
--   service or run a task with the task definition. For more information,
--   see <a>Task Networking</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> .
module Network.AWS.ECS.RegisterTaskDefinition

-- | Creates a value of <a>RegisterTaskDefinition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtdExecutionRoleARN</a> - The Amazon Resource Name (ARN) of the
--   task execution role that the Amazon ECS container agent and the Docker
--   daemon can assume.</li>
--   <li><a>rtdRequiresCompatibilities</a> - The launch type required by
--   the task. If no value is specified, it defaults to <tt>EC2</tt> .</li>
--   <li><a>rtdMemory</a> - The amount of memory (in MiB) used by the task.
--   It can be expressed as an integer using MiB, for example <tt>1024</tt>
--   , or as a string using GB, for example <tt>1GB</tt> or <tt>1 GB</tt> ,
--   in a task definition but will be converted to an integer indicating
--   the MiB when the task definition is registered. If using the EC2
--   launch type, this field is optional. If using the Fargate launch type,
--   this field is required and you must use one of the following values,
--   which determines your range of supported values for the <tt>cpu</tt>
--   parameter: * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available
--   <tt>cpu</tt> values: 256 (.25 vCPU) * 1024 (1 GB), 2048 (2 GB), 3072
--   (3 GB), 4096 (4 GB) - Available <tt>cpu</tt> values: 512 (.5 vCPU) *
--   2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168
--   (7 GB), 8192 (8 GB) - Available <tt>cpu</tt> values: 1024 (1 vCPU) *
--   Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) -
--   Available <tt>cpu</tt> values: 2048 (2 vCPU) * Between 8192 (8 GB) and
--   30720 (30 GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt>
--   values: 4096 (4 vCPU)</li>
--   <li><a>rtdTaskRoleARN</a> - The short name or full Amazon Resource
--   Name (ARN) of the IAM role that containers in this task can assume.
--   All containers in this task are granted the permissions that are
--   specified in this role. For more information, see <a>IAM Roles for
--   Tasks</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>rtdPlacementConstraints</a> - An array of placement constraint
--   objects to use for the task. You can specify a maximum of 10
--   constraints per task (this limit includes constraints in the task
--   definition and those specified at run time).</li>
--   <li><a>rtdNetworkMode</a> - The Docker networking mode to use for the
--   containers in the task. The valid values are <tt>none</tt> ,
--   <tt>bridge</tt> , <tt>awsvpc</tt> , and <tt>host</tt> . The default
--   Docker network mode is <tt>bridge</tt> . If using the Fargate launch
--   type, the <tt>awsvpc</tt> network mode is required. If using the EC2
--   launch type, any network mode can be used. If the network mode is set
--   to <tt>none</tt> , you can't specify port mappings in your container
--   definitions, and the task's containers do not have external
--   connectivity. The <tt>host</tt> and <tt>awsvpc</tt> network modes
--   offer the highest networking performance for containers because they
--   use the EC2 network stack instead of the virtualized network stack
--   provided by the <tt>bridge</tt> mode. With the <tt>host</tt> and
--   <tt>awsvpc</tt> network modes, exposed container ports are mapped
--   directly to the corresponding host port (for the <tt>host</tt> network
--   mode) or the attached elastic network interface port (for the
--   <tt>awsvpc</tt> network mode), so you cannot take advantage of dynamic
--   host port mappings. If the network mode is <tt>awsvpc</tt> , the task
--   is allocated an Elastic Network Interface, and you must specify a
--   <a>NetworkConfiguration</a> when you create a service or run a task
--   with the task definition. For more information, see <a>Task
--   Networking</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> . If the network mode is <tt>host</tt> , you can't run
--   multiple instantiations of the same task on a single container
--   instance when port mappings are used. Docker for Windows uses
--   different network modes than Docker for Linux. When you register a
--   task definition with Windows containers, you must not specify a
--   network mode. For more information, see <a>Network settings</a> in the
--   <i>Docker run reference</i> .</li>
--   <li><a>rtdVolumes</a> - A list of volume definitions in JSON format
--   that containers in your task may use.</li>
--   <li><a>rtdCpu</a> - The number of CPU units used by the task. It can
--   be expressed as an integer using CPU units, for example <tt>1024</tt>
--   , or as a string using vCPUs, for example <tt>1 vCPU</tt> or <tt>1
--   vcpu</tt> , in a task definition but will be converted to an integer
--   indicating the CPU units when the task definition is registered. If
--   using the EC2 launch type, this field is optional. Supported values
--   are between <tt>128</tt> CPU units (<tt>0.125</tt> vCPUs) and
--   <tt>10240</tt> CPU units (<tt>10</tt> vCPUs). If using the Fargate
--   launch type, this field is required and you must use one of the
--   following values, which determines your range of supported values for
--   the <tt>memory</tt> parameter: * 256 (.25 vCPU) - Available
--   <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512
--   (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB), 2048 (2
--   GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)</li>
--   <li><a>rtdFamily</a> - You must specify a <tt>family</tt> for a task
--   definition, which allows you to track multiple versions of the same
--   task definition. The <tt>family</tt> is used as a name for your task
--   definition. Up to 255 letters (uppercase and lowercase), numbers,
--   hyphens, and underscores are allowed.</li>
--   <li><a>rtdContainerDefinitions</a> - A list of container definitions
--   in JSON format that describe the different containers that make up
--   your task.</li>
--   </ul>
registerTaskDefinition :: Text -> RegisterTaskDefinition

-- | <i>See:</i> <a>registerTaskDefinition</a> smart constructor.
data RegisterTaskDefinition

-- | The Amazon Resource Name (ARN) of the task execution role that the
--   Amazon ECS container agent and the Docker daemon can assume.
rtdExecutionRoleARN :: Lens' RegisterTaskDefinition (Maybe Text)

-- | The launch type required by the task. If no value is specified, it
--   defaults to <tt>EC2</tt> .
rtdRequiresCompatibilities :: Lens' RegisterTaskDefinition [Compatibility]

-- | The amount of memory (in MiB) used by the task. It can be expressed as
--   an integer using MiB, for example <tt>1024</tt> , or as a string using
--   GB, for example <tt>1GB</tt> or <tt>1 GB</tt> , in a task definition
--   but will be converted to an integer indicating the MiB when the task
--   definition is registered. If using the EC2 launch type, this field is
--   optional. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of supported values for the <tt>cpu</tt> parameter: * 512 (0.5 GB),
--   1024 (1 GB), 2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25
--   vCPU) * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available
--   <tt>cpu</tt> values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available
--   <tt>cpu</tt> values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16
--   GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048
--   (2 vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024
--   (1 GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)
rtdMemory :: Lens' RegisterTaskDefinition (Maybe Text)

-- | The short name or full Amazon Resource Name (ARN) of the IAM role that
--   containers in this task can assume. All containers in this task are
--   granted the permissions that are specified in this role. For more
--   information, see <a>IAM Roles for Tasks</a> in the <i>Amazon Elastic
--   Container Service Developer Guide</i> .
rtdTaskRoleARN :: Lens' RegisterTaskDefinition (Maybe Text)

-- | An array of placement constraint objects to use for the task. You can
--   specify a maximum of 10 constraints per task (this limit includes
--   constraints in the task definition and those specified at run time).
rtdPlacementConstraints :: Lens' RegisterTaskDefinition [TaskDefinitionPlacementConstraint]

-- | The Docker networking mode to use for the containers in the task. The
--   valid values are <tt>none</tt> , <tt>bridge</tt> , <tt>awsvpc</tt> ,
--   and <tt>host</tt> . The default Docker network mode is <tt>bridge</tt>
--   . If using the Fargate launch type, the <tt>awsvpc</tt> network mode
--   is required. If using the EC2 launch type, any network mode can be
--   used. If the network mode is set to <tt>none</tt> , you can't specify
--   port mappings in your container definitions, and the task's containers
--   do not have external connectivity. The <tt>host</tt> and
--   <tt>awsvpc</tt> network modes offer the highest networking performance
--   for containers because they use the EC2 network stack instead of the
--   virtualized network stack provided by the <tt>bridge</tt> mode. With
--   the <tt>host</tt> and <tt>awsvpc</tt> network modes, exposed container
--   ports are mapped directly to the corresponding host port (for the
--   <tt>host</tt> network mode) or the attached elastic network interface
--   port (for the <tt>awsvpc</tt> network mode), so you cannot take
--   advantage of dynamic host port mappings. If the network mode is
--   <tt>awsvpc</tt> , the task is allocated an Elastic Network Interface,
--   and you must specify a <a>NetworkConfiguration</a> when you create a
--   service or run a task with the task definition. For more information,
--   see <a>Task Networking</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> . If the network mode is <tt>host</tt> , you can't
--   run multiple instantiations of the same task on a single container
--   instance when port mappings are used. Docker for Windows uses
--   different network modes than Docker for Linux. When you register a
--   task definition with Windows containers, you must not specify a
--   network mode. For more information, see <a>Network settings</a> in the
--   <i>Docker run reference</i> .
rtdNetworkMode :: Lens' RegisterTaskDefinition (Maybe NetworkMode)

-- | A list of volume definitions in JSON format that containers in your
--   task may use.
rtdVolumes :: Lens' RegisterTaskDefinition [Volume]

-- | The number of CPU units used by the task. It can be expressed as an
--   integer using CPU units, for example <tt>1024</tt> , or as a string
--   using vCPUs, for example <tt>1 vCPU</tt> or <tt>1 vcpu</tt> , in a
--   task definition but will be converted to an integer indicating the CPU
--   units when the task definition is registered. If using the EC2 launch
--   type, this field is optional. Supported values are between
--   <tt>128</tt> CPU units (<tt>0.125</tt> vCPUs) and <tt>10240</tt> CPU
--   units (<tt>10</tt> vCPUs). If using the Fargate launch type, this
--   field is required and you must use one of the following values, which
--   determines your range of supported values for the <tt>memory</tt>
--   parameter: * 256 (.25 vCPU) - Available <tt>memory</tt> values: 512
--   (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512 (.5 vCPU) - Available
--   <tt>memory</tt> values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB) * 1024 (1 vCPU) - Available <tt>memory</tt> values: 2048 (2 GB),
--   3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192
--   (8 GB) * 2048 (2 vCPU) - Available <tt>memory</tt> values: Between
--   4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) * 4096 (4
--   vCPU) - Available <tt>memory</tt> values: Between 8192 (8 GB) and
--   30720 (30 GB) in increments of 1024 (1 GB)
rtdCpu :: Lens' RegisterTaskDefinition (Maybe Text)

-- | You must specify a <tt>family</tt> for a task definition, which allows
--   you to track multiple versions of the same task definition. The
--   <tt>family</tt> is used as a name for your task definition. Up to 255
--   letters (uppercase and lowercase), numbers, hyphens, and underscores
--   are allowed.
rtdFamily :: Lens' RegisterTaskDefinition Text

-- | A list of container definitions in JSON format that describe the
--   different containers that make up your task.
rtdContainerDefinitions :: Lens' RegisterTaskDefinition [ContainerDefinition]

-- | Creates a value of <a>RegisterTaskDefinitionResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtdrsTaskDefinition</a> - The full description of the
--   registered task definition.</li>
--   <li><a>rtdrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
registerTaskDefinitionResponse :: Int -> RegisterTaskDefinitionResponse

-- | <i>See:</i> <a>registerTaskDefinitionResponse</a> smart constructor.
data RegisterTaskDefinitionResponse

-- | The full description of the registered task definition.
rtdrsTaskDefinition :: Lens' RegisterTaskDefinitionResponse (Maybe TaskDefinition)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rtdrsResponseStatus :: Lens' RegisterTaskDefinitionResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinitionResponse
instance Data.Data.Data Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinitionResponse
instance GHC.Show.Show Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinitionResponse
instance GHC.Read.Read Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinitionResponse
instance GHC.Classes.Eq Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinitionResponse
instance GHC.Generics.Generic Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Data.Data.Data Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance GHC.Show.Show Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance GHC.Read.Read Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance GHC.Classes.Eq Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Control.DeepSeq.NFData Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinitionResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Control.DeepSeq.NFData Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.RegisterTaskDefinition.RegisterTaskDefinition


-- | Registers an EC2 instance into the specified cluster. This instance
--   becomes available to place containers on.
module Network.AWS.ECS.RegisterContainerInstance

-- | Creates a value of <a>RegisterContainerInstance</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rciInstanceIdentityDocumentSignature</a> - The instance
--   identity document signature for the EC2 instance to register. This
--   signature can be found by running the following command from the
--   instance: <tt>curl
--   <a>http://169.254.169.254/latest/dynamic/instance-identity/signature/</a></tt></li>
--   <li><a>rciCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster with which to register your container instance.
--   If you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>rciInstanceIdentityDocument</a> - The instance identity
--   document for the EC2 instance to register. This document can be found
--   by running the following command from the instance: <tt>curl
--   <a>http://169.254.169.254/latest/dynamic/instance-identity/document/</a></tt></li>
--   <li><a>rciContainerInstanceARN</a> - The ARN of the container instance
--   (if it was previously registered).</li>
--   <li><a>rciVersionInfo</a> - The version information for the Amazon ECS
--   container agent and Docker daemon running on the container
--   instance.</li>
--   <li><a>rciAttributes</a> - The container instance attributes that this
--   container instance supports.</li>
--   <li><a>rciTotalResources</a> - The resources available on the
--   instance.</li>
--   </ul>
registerContainerInstance :: RegisterContainerInstance

-- | <i>See:</i> <a>registerContainerInstance</a> smart constructor.
data RegisterContainerInstance

-- | The instance identity document signature for the EC2 instance to
--   register. This signature can be found by running the following command
--   from the instance: <tt>curl
--   <a>http://169.254.169.254/latest/dynamic/instance-identity/signature/</a></tt>
rciInstanceIdentityDocumentSignature :: Lens' RegisterContainerInstance (Maybe Text)

-- | The short name or full Amazon Resource Name (ARN) of the cluster with
--   which to register your container instance. If you do not specify a
--   cluster, the default cluster is assumed.
rciCluster :: Lens' RegisterContainerInstance (Maybe Text)

-- | The instance identity document for the EC2 instance to register. This
--   document can be found by running the following command from the
--   instance: <tt>curl
--   <a>http://169.254.169.254/latest/dynamic/instance-identity/document/</a></tt>
rciInstanceIdentityDocument :: Lens' RegisterContainerInstance (Maybe Text)

-- | The ARN of the container instance (if it was previously registered).
rciContainerInstanceARN :: Lens' RegisterContainerInstance (Maybe Text)

-- | The version information for the Amazon ECS container agent and Docker
--   daemon running on the container instance.
rciVersionInfo :: Lens' RegisterContainerInstance (Maybe VersionInfo)

-- | The container instance attributes that this container instance
--   supports.
rciAttributes :: Lens' RegisterContainerInstance [Attribute]

-- | The resources available on the instance.
rciTotalResources :: Lens' RegisterContainerInstance [Resource]

-- | Creates a value of <a>RegisterContainerInstanceResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcirsContainerInstance</a> - The container instance that was
--   registered.</li>
--   <li><a>rcirsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
registerContainerInstanceResponse :: Int -> RegisterContainerInstanceResponse

-- | <i>See:</i> <a>registerContainerInstanceResponse</a> smart
--   constructor.
data RegisterContainerInstanceResponse

-- | The container instance that was registered.
rcirsContainerInstance :: Lens' RegisterContainerInstanceResponse (Maybe ContainerInstance)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
rcirsResponseStatus :: Lens' RegisterContainerInstanceResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstanceResponse
instance Data.Data.Data Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstanceResponse
instance GHC.Show.Show Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstanceResponse
instance GHC.Read.Read Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstanceResponse
instance GHC.Classes.Eq Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstanceResponse
instance GHC.Generics.Generic Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Data.Data.Data Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance GHC.Show.Show Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance GHC.Read.Read Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance GHC.Classes.Eq Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Control.DeepSeq.NFData Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstanceResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Control.DeepSeq.NFData Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.RegisterContainerInstance.RegisterContainerInstance


-- | Create or update an attribute on an Amazon ECS resource. If the
--   attribute does not exist, it is created. If the attribute exists, its
--   value is replaced with the specified value. To delete an attribute,
--   use <tt>DeleteAttributes</tt> . For more information, see
--   <a>Attributes</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
module Network.AWS.ECS.PutAttributes

-- | Creates a value of <a>PutAttributes</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>paCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that contains the resource to apply attributes.
--   If you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>paAttributes</a> - The attributes to apply to your resource.
--   You can specify up to 10 custom attributes per resource. You can
--   specify up to 10 attributes in a single call.</li>
--   </ul>
putAttributes :: PutAttributes

-- | <i>See:</i> <a>putAttributes</a> smart constructor.
data PutAttributes

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   contains the resource to apply attributes. If you do not specify a
--   cluster, the default cluster is assumed.
paCluster :: Lens' PutAttributes (Maybe Text)

-- | The attributes to apply to your resource. You can specify up to 10
--   custom attributes per resource. You can specify up to 10 attributes in
--   a single call.
paAttributes :: Lens' PutAttributes [Attribute]

-- | Creates a value of <a>PutAttributesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>parsAttributes</a> - The attributes applied to your
--   resource.</li>
--   <li><a>parsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
putAttributesResponse :: Int -> PutAttributesResponse

-- | <i>See:</i> <a>putAttributesResponse</a> smart constructor.
data PutAttributesResponse

-- | The attributes applied to your resource.
parsAttributes :: Lens' PutAttributesResponse [Attribute]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
parsResponseStatus :: Lens' PutAttributesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.PutAttributes.PutAttributesResponse
instance Data.Data.Data Network.AWS.ECS.PutAttributes.PutAttributesResponse
instance GHC.Show.Show Network.AWS.ECS.PutAttributes.PutAttributesResponse
instance GHC.Read.Read Network.AWS.ECS.PutAttributes.PutAttributesResponse
instance GHC.Classes.Eq Network.AWS.ECS.PutAttributes.PutAttributesResponse
instance GHC.Generics.Generic Network.AWS.ECS.PutAttributes.PutAttributes
instance Data.Data.Data Network.AWS.ECS.PutAttributes.PutAttributes
instance GHC.Show.Show Network.AWS.ECS.PutAttributes.PutAttributes
instance GHC.Read.Read Network.AWS.ECS.PutAttributes.PutAttributes
instance GHC.Classes.Eq Network.AWS.ECS.PutAttributes.PutAttributes
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.PutAttributes.PutAttributes
instance Control.DeepSeq.NFData Network.AWS.ECS.PutAttributes.PutAttributesResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.PutAttributes.PutAttributes
instance Control.DeepSeq.NFData Network.AWS.ECS.PutAttributes.PutAttributes
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.PutAttributes.PutAttributes
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.PutAttributes.PutAttributes
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.PutAttributes.PutAttributes
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.PutAttributes.PutAttributes


-- | Returns a list of tasks for a specified cluster. You can filter the
--   results by family name, by a particular container instance, or by the
--   desired status of the task with the <tt>family</tt> ,
--   <tt>containerInstance</tt> , and <tt>desiredStatus</tt> parameters.
--   
--   Recently stopped tasks might appear in the returned results.
--   Currently, stopped tasks appear in the returned results for at least
--   one hour.
--   
--   This operation returns paginated results.
module Network.AWS.ECS.ListTasks

-- | Creates a value of <a>ListTasks</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltDesiredStatus</a> - The task desired status with which to
--   filter the <tt>ListTasks</tt> results. Specifying a
--   <tt>desiredStatus</tt> of <tt>STOPPED</tt> limits the results to tasks
--   that Amazon ECS has set the desired status to <tt>STOPPED</tt> , which
--   can be useful for debugging tasks that are not starting properly or
--   have died or finished. The default status filter is <tt>RUNNING</tt> ,
--   which shows tasks that Amazon ECS has set the desired status to
--   <tt>RUNNING</tt> .</li>
--   <li><a>ltCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the tasks to list. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>ltFamily</a> - The name of the family with which to filter the
--   <tt>ListTasks</tt> results. Specifying a <tt>family</tt> limits the
--   results to tasks that belong to that family.</li>
--   <li><a>ltNextToken</a> - The <tt>nextToken</tt> value returned from a
--   previous paginated <tt>ListTasks</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>ltStartedBy</a> - The <tt>startedBy</tt> value with which to
--   filter the task results. Specifying a <tt>startedBy</tt> value limits
--   the results to tasks that were started with that value.</li>
--   <li><a>ltServiceName</a> - The name of the service with which to
--   filter the <tt>ListTasks</tt> results. Specifying a
--   <tt>serviceName</tt> limits the results to tasks that belong to that
--   service.</li>
--   <li><a>ltLaunchType</a> - The launch type for services you want to
--   list.</li>
--   <li><a>ltContainerInstance</a> - The container instance ID or full ARN
--   of the container instance with which to filter the <tt>ListTasks</tt>
--   results. Specifying a <tt>containerInstance</tt> limits the results to
--   tasks that belong to that container instance.</li>
--   <li><a>ltMaxResults</a> - The maximum number of task results returned
--   by <tt>ListTasks</tt> in paginated output. When this parameter is
--   used, <tt>ListTasks</tt> only returns <tt>maxResults</tt> results in a
--   single page along with a <tt>nextToken</tt> response element. The
--   remaining results of the initial request can be seen by sending
--   another <tt>ListTasks</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListTasks</tt> returns up to 100
--   results and a <tt>nextToken</tt> value if applicable.</li>
--   </ul>
listTasks :: ListTasks

-- | <i>See:</i> <a>listTasks</a> smart constructor.
data ListTasks

-- | The task desired status with which to filter the <tt>ListTasks</tt>
--   results. Specifying a <tt>desiredStatus</tt> of <tt>STOPPED</tt>
--   limits the results to tasks that Amazon ECS has set the desired status
--   to <tt>STOPPED</tt> , which can be useful for debugging tasks that are
--   not starting properly or have died or finished. The default status
--   filter is <tt>RUNNING</tt> , which shows tasks that Amazon ECS has set
--   the desired status to <tt>RUNNING</tt> .
ltDesiredStatus :: Lens' ListTasks (Maybe DesiredStatus)

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the tasks to list. If you do not specify a cluster, the default
--   cluster is assumed.
ltCluster :: Lens' ListTasks (Maybe Text)

-- | The name of the family with which to filter the <tt>ListTasks</tt>
--   results. Specifying a <tt>family</tt> limits the results to tasks that
--   belong to that family.
ltFamily :: Lens' ListTasks (Maybe Text)

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListTasks</tt> request where <tt>maxResults</tt> was used and the
--   results exceeded the value of that parameter. Pagination continues
--   from the end of the previous results that returned the
--   <tt>nextToken</tt> value.
ltNextToken :: Lens' ListTasks (Maybe Text)

-- | The <tt>startedBy</tt> value with which to filter the task results.
--   Specifying a <tt>startedBy</tt> value limits the results to tasks that
--   were started with that value.
ltStartedBy :: Lens' ListTasks (Maybe Text)

-- | The name of the service with which to filter the <tt>ListTasks</tt>
--   results. Specifying a <tt>serviceName</tt> limits the results to tasks
--   that belong to that service.
ltServiceName :: Lens' ListTasks (Maybe Text)

-- | The launch type for services you want to list.
ltLaunchType :: Lens' ListTasks (Maybe LaunchType)

-- | The container instance ID or full ARN of the container instance with
--   which to filter the <tt>ListTasks</tt> results. Specifying a
--   <tt>containerInstance</tt> limits the results to tasks that belong to
--   that container instance.
ltContainerInstance :: Lens' ListTasks (Maybe Text)

-- | The maximum number of task results returned by <tt>ListTasks</tt> in
--   paginated output. When this parameter is used, <tt>ListTasks</tt> only
--   returns <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another <tt>ListTasks</tt>
--   request with the returned <tt>nextToken</tt> value. This value can be
--   between 1 and 100. If this parameter is not used, then
--   <tt>ListTasks</tt> returns up to 100 results and a <tt>nextToken</tt>
--   value if applicable.
ltMaxResults :: Lens' ListTasks (Maybe Int)

-- | Creates a value of <a>ListTasksResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltrsNextToken</a> - The <tt>nextToken</tt> value to include in
--   a future <tt>ListTasks</tt> request. When the results of a
--   <tt>ListTasks</tt> request exceed <tt>maxResults</tt> , this value can
--   be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.</li>
--   <li><a>ltrsTaskARNs</a> - The list of task ARN entries for the
--   <tt>ListTasks</tt> request.</li>
--   <li><a>ltrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listTasksResponse :: Int -> ListTasksResponse

-- | <i>See:</i> <a>listTasksResponse</a> smart constructor.
data ListTasksResponse

-- | The <tt>nextToken</tt> value to include in a future <tt>ListTasks</tt>
--   request. When the results of a <tt>ListTasks</tt> request exceed
--   <tt>maxResults</tt> , this value can be used to retrieve the next page
--   of results. This value is <tt>null</tt> when there are no more results
--   to return.
ltrsNextToken :: Lens' ListTasksResponse (Maybe Text)

-- | The list of task ARN entries for the <tt>ListTasks</tt> request.
ltrsTaskARNs :: Lens' ListTasksResponse [Text]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ltrsResponseStatus :: Lens' ListTasksResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListTasks.ListTasksResponse
instance Data.Data.Data Network.AWS.ECS.ListTasks.ListTasksResponse
instance GHC.Show.Show Network.AWS.ECS.ListTasks.ListTasksResponse
instance GHC.Read.Read Network.AWS.ECS.ListTasks.ListTasksResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListTasks.ListTasksResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListTasks.ListTasks
instance Data.Data.Data Network.AWS.ECS.ListTasks.ListTasks
instance GHC.Show.Show Network.AWS.ECS.ListTasks.ListTasks
instance GHC.Read.Read Network.AWS.ECS.ListTasks.ListTasks
instance GHC.Classes.Eq Network.AWS.ECS.ListTasks.ListTasks
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListTasks.ListTasks
instance Control.DeepSeq.NFData Network.AWS.ECS.ListTasks.ListTasksResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ECS.ListTasks.ListTasks
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListTasks.ListTasks
instance Control.DeepSeq.NFData Network.AWS.ECS.ListTasks.ListTasks
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListTasks.ListTasks
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListTasks.ListTasks
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListTasks.ListTasks
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListTasks.ListTasks


-- | Returns a list of task definitions that are registered to your
--   account. You can filter the results by family name with the
--   <tt>familyPrefix</tt> parameter or by status with the <tt>status</tt>
--   parameter.
--   
--   This operation returns paginated results.
module Network.AWS.ECS.ListTaskDefinitions

-- | Creates a value of <a>ListTaskDefinitions</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltdStatus</a> - The task definition status with which to filter
--   the <tt>ListTaskDefinitions</tt> results. By default, only
--   <tt>ACTIVE</tt> task definitions are listed. By setting this parameter
--   to <tt>INACTIVE</tt> , you can view task definitions that are
--   <tt>INACTIVE</tt> as long as an active task or service still
--   references them. If you paginate the resulting output, be sure to keep
--   the <tt>status</tt> value constant in each subsequent request.</li>
--   <li><a>ltdFamilyPrefix</a> - The full family name with which to filter
--   the <tt>ListTaskDefinitions</tt> results. Specifying a
--   <tt>familyPrefix</tt> limits the listed task definitions to task
--   definition revisions that belong to that family.</li>
--   <li><a>ltdNextToken</a> - The <tt>nextToken</tt> value returned from a
--   previous paginated <tt>ListTaskDefinitions</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>ltdSort</a> - The order in which to sort the results. Valid
--   values are <tt>ASC</tt> and <tt>DESC</tt> . By default (<tt>ASC</tt>
--   ), task definitions are listed lexicographically by family name and in
--   ascending numerical order by revision so that the newest task
--   definitions in a family are listed last. Setting this parameter to
--   <tt>DESC</tt> reverses the sort order on family name and revision so
--   that the newest task definitions in a family are listed first.</li>
--   <li><a>ltdMaxResults</a> - The maximum number of task definition
--   results returned by <tt>ListTaskDefinitions</tt> in paginated output.
--   When this parameter is used, <tt>ListTaskDefinitions</tt> only returns
--   <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another
--   <tt>ListTaskDefinitions</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListTaskDefinitions</tt> returns up to
--   100 results and a <tt>nextToken</tt> value if applicable.</li>
--   </ul>
listTaskDefinitions :: ListTaskDefinitions

-- | <i>See:</i> <a>listTaskDefinitions</a> smart constructor.
data ListTaskDefinitions

-- | The task definition status with which to filter the
--   <tt>ListTaskDefinitions</tt> results. By default, only <tt>ACTIVE</tt>
--   task definitions are listed. By setting this parameter to
--   <tt>INACTIVE</tt> , you can view task definitions that are
--   <tt>INACTIVE</tt> as long as an active task or service still
--   references them. If you paginate the resulting output, be sure to keep
--   the <tt>status</tt> value constant in each subsequent request.
ltdStatus :: Lens' ListTaskDefinitions (Maybe TaskDefinitionStatus)

-- | The full family name with which to filter the
--   <tt>ListTaskDefinitions</tt> results. Specifying a
--   <tt>familyPrefix</tt> limits the listed task definitions to task
--   definition revisions that belong to that family.
ltdFamilyPrefix :: Lens' ListTaskDefinitions (Maybe Text)

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListTaskDefinitions</tt> request where <tt>maxResults</tt> was
--   used and the results exceeded the value of that parameter. Pagination
--   continues from the end of the previous results that returned the
--   <tt>nextToken</tt> value.
ltdNextToken :: Lens' ListTaskDefinitions (Maybe Text)

-- | The order in which to sort the results. Valid values are <tt>ASC</tt>
--   and <tt>DESC</tt> . By default (<tt>ASC</tt> ), task definitions are
--   listed lexicographically by family name and in ascending numerical
--   order by revision so that the newest task definitions in a family are
--   listed last. Setting this parameter to <tt>DESC</tt> reverses the sort
--   order on family name and revision so that the newest task definitions
--   in a family are listed first.
ltdSort :: Lens' ListTaskDefinitions (Maybe SortOrder)

-- | The maximum number of task definition results returned by
--   <tt>ListTaskDefinitions</tt> in paginated output. When this parameter
--   is used, <tt>ListTaskDefinitions</tt> only returns <tt>maxResults</tt>
--   results in a single page along with a <tt>nextToken</tt> response
--   element. The remaining results of the initial request can be seen by
--   sending another <tt>ListTaskDefinitions</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListTaskDefinitions</tt> returns up to
--   100 results and a <tt>nextToken</tt> value if applicable.
ltdMaxResults :: Lens' ListTaskDefinitions (Maybe Int)

-- | Creates a value of <a>ListTaskDefinitionsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltdrsTaskDefinitionARNs</a> - The list of task definition
--   Amazon Resource Name (ARN) entries for the
--   <tt>ListTaskDefinitions</tt> request.</li>
--   <li><a>ltdrsNextToken</a> - The <tt>nextToken</tt> value to include in
--   a future <tt>ListTaskDefinitions</tt> request. When the results of a
--   <tt>ListTaskDefinitions</tt> request exceed <tt>maxResults</tt> , this
--   value can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.</li>
--   <li><a>ltdrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listTaskDefinitionsResponse :: Int -> ListTaskDefinitionsResponse

-- | <i>See:</i> <a>listTaskDefinitionsResponse</a> smart constructor.
data ListTaskDefinitionsResponse

-- | The list of task definition Amazon Resource Name (ARN) entries for the
--   <tt>ListTaskDefinitions</tt> request.
ltdrsTaskDefinitionARNs :: Lens' ListTaskDefinitionsResponse [Text]

-- | The <tt>nextToken</tt> value to include in a future
--   <tt>ListTaskDefinitions</tt> request. When the results of a
--   <tt>ListTaskDefinitions</tt> request exceed <tt>maxResults</tt> , this
--   value can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.
ltdrsNextToken :: Lens' ListTaskDefinitionsResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ltdrsResponseStatus :: Lens' ListTaskDefinitionsResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitionsResponse
instance Data.Data.Data Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitionsResponse
instance GHC.Show.Show Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitionsResponse
instance GHC.Read.Read Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitionsResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitionsResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Data.Data.Data Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance GHC.Show.Show Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance GHC.Read.Read Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance GHC.Classes.Eq Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Control.DeepSeq.NFData Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitionsResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Control.DeepSeq.NFData Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListTaskDefinitions.ListTaskDefinitions


-- | Returns a list of task definition families that are registered to your
--   account (which may include task definition families that no longer
--   have any <tt>ACTIVE</tt> task definition revisions).
--   
--   You can filter out task definition families that do not contain any
--   <tt>ACTIVE</tt> task definition revisions by setting the
--   <tt>status</tt> parameter to <tt>ACTIVE</tt> . You can also filter the
--   results with the <tt>familyPrefix</tt> parameter.
--   
--   This operation returns paginated results.
module Network.AWS.ECS.ListTaskDefinitionFamilies

-- | Creates a value of <a>ListTaskDefinitionFamilies</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltdfStatus</a> - The task definition family status with which
--   to filter the <tt>ListTaskDefinitionFamilies</tt> results. By default,
--   both <tt>ACTIVE</tt> and <tt>INACTIVE</tt> task definition families
--   are listed. If this parameter is set to <tt>ACTIVE</tt> , only task
--   definition families that have an <tt>ACTIVE</tt> task definition
--   revision are returned. If this parameter is set to <tt>INACTIVE</tt> ,
--   only task definition families that do not have any <tt>ACTIVE</tt>
--   task definition revisions are returned. If you paginate the resulting
--   output, be sure to keep the <tt>status</tt> value constant in each
--   subsequent request.</li>
--   <li><a>ltdfFamilyPrefix</a> - The <tt>familyPrefix</tt> is a string
--   that is used to filter the results of
--   <tt>ListTaskDefinitionFamilies</tt> . If you specify a
--   <tt>familyPrefix</tt> , only task definition family names that begin
--   with the <tt>familyPrefix</tt> string are returned.</li>
--   <li><a>ltdfNextToken</a> - The <tt>nextToken</tt> value returned from
--   a previous paginated <tt>ListTaskDefinitionFamilies</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>ltdfMaxResults</a> - The maximum number of task definition
--   family results returned by <tt>ListTaskDefinitionFamilies</tt> in
--   paginated output. When this parameter is used,
--   <tt>ListTaskDefinitions</tt> only returns <tt>maxResults</tt> results
--   in a single page along with a <tt>nextToken</tt> response element. The
--   remaining results of the initial request can be seen by sending
--   another <tt>ListTaskDefinitionFamilies</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListTaskDefinitionFamilies</tt>
--   returns up to 100 results and a <tt>nextToken</tt> value if
--   applicable.</li>
--   </ul>
listTaskDefinitionFamilies :: ListTaskDefinitionFamilies

-- | <i>See:</i> <a>listTaskDefinitionFamilies</a> smart constructor.
data ListTaskDefinitionFamilies

-- | The task definition family status with which to filter the
--   <tt>ListTaskDefinitionFamilies</tt> results. By default, both
--   <tt>ACTIVE</tt> and <tt>INACTIVE</tt> task definition families are
--   listed. If this parameter is set to <tt>ACTIVE</tt> , only task
--   definition families that have an <tt>ACTIVE</tt> task definition
--   revision are returned. If this parameter is set to <tt>INACTIVE</tt> ,
--   only task definition families that do not have any <tt>ACTIVE</tt>
--   task definition revisions are returned. If you paginate the resulting
--   output, be sure to keep the <tt>status</tt> value constant in each
--   subsequent request.
ltdfStatus :: Lens' ListTaskDefinitionFamilies (Maybe TaskDefinitionFamilyStatus)

-- | The <tt>familyPrefix</tt> is a string that is used to filter the
--   results of <tt>ListTaskDefinitionFamilies</tt> . If you specify a
--   <tt>familyPrefix</tt> , only task definition family names that begin
--   with the <tt>familyPrefix</tt> string are returned.
ltdfFamilyPrefix :: Lens' ListTaskDefinitionFamilies (Maybe Text)

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListTaskDefinitionFamilies</tt> request where <tt>maxResults</tt>
--   was used and the results exceeded the value of that parameter.
--   Pagination continues from the end of the previous results that
--   returned the <tt>nextToken</tt> value.
ltdfNextToken :: Lens' ListTaskDefinitionFamilies (Maybe Text)

-- | The maximum number of task definition family results returned by
--   <tt>ListTaskDefinitionFamilies</tt> in paginated output. When this
--   parameter is used, <tt>ListTaskDefinitions</tt> only returns
--   <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another
--   <tt>ListTaskDefinitionFamilies</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListTaskDefinitionFamilies</tt>
--   returns up to 100 results and a <tt>nextToken</tt> value if
--   applicable.
ltdfMaxResults :: Lens' ListTaskDefinitionFamilies (Maybe Int)

-- | Creates a value of <a>ListTaskDefinitionFamiliesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltdfrsFamilies</a> - The list of task definition family names
--   that match the <tt>ListTaskDefinitionFamilies</tt> request.</li>
--   <li><a>ltdfrsNextToken</a> - The <tt>nextToken</tt> value to include
--   in a future <tt>ListTaskDefinitionFamilies</tt> request. When the
--   results of a <tt>ListTaskDefinitionFamilies</tt> request exceed
--   <tt>maxResults</tt> , this value can be used to retrieve the next page
--   of results. This value is <tt>null</tt> when there are no more results
--   to return.</li>
--   <li><a>ltdfrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listTaskDefinitionFamiliesResponse :: Int -> ListTaskDefinitionFamiliesResponse

-- | <i>See:</i> <a>listTaskDefinitionFamiliesResponse</a> smart
--   constructor.
data ListTaskDefinitionFamiliesResponse

-- | The list of task definition family names that match the
--   <tt>ListTaskDefinitionFamilies</tt> request.
ltdfrsFamilies :: Lens' ListTaskDefinitionFamiliesResponse [Text]

-- | The <tt>nextToken</tt> value to include in a future
--   <tt>ListTaskDefinitionFamilies</tt> request. When the results of a
--   <tt>ListTaskDefinitionFamilies</tt> request exceed <tt>maxResults</tt>
--   , this value can be used to retrieve the next page of results. This
--   value is <tt>null</tt> when there are no more results to return.
ltdfrsNextToken :: Lens' ListTaskDefinitionFamiliesResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ltdfrsResponseStatus :: Lens' ListTaskDefinitionFamiliesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamiliesResponse
instance Data.Data.Data Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamiliesResponse
instance GHC.Show.Show Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamiliesResponse
instance GHC.Read.Read Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamiliesResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamiliesResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Data.Data.Data Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance GHC.Show.Show Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance GHC.Read.Read Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance GHC.Classes.Eq Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Control.DeepSeq.NFData Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamiliesResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Control.DeepSeq.NFData Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListTaskDefinitionFamilies.ListTaskDefinitionFamilies


-- | Lists the services that are running in a specified cluster.
--   
--   This operation returns paginated results.
module Network.AWS.ECS.ListServices

-- | Creates a value of <a>ListServices</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the services to list. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>lsNextToken</a> - The <tt>nextToken</tt> value returned from a
--   previous paginated <tt>ListServices</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>lsLaunchType</a> - The launch type for services you want to
--   list.</li>
--   <li><a>lsMaxResults</a> - The maximum number of service results
--   returned by <tt>ListServices</tt> in paginated output. When this
--   parameter is used, <tt>ListServices</tt> only returns
--   <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another <tt>ListServices</tt>
--   request with the returned <tt>nextToken</tt> value. This value can be
--   between 1 and 10. If this parameter is not used, then
--   <tt>ListServices</tt> returns up to 10 results and a
--   <tt>nextToken</tt> value if applicable.</li>
--   </ul>
listServices :: ListServices

-- | <i>See:</i> <a>listServices</a> smart constructor.
data ListServices

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the services to list. If you do not specify a cluster, the
--   default cluster is assumed.
lsCluster :: Lens' ListServices (Maybe Text)

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListServices</tt> request where <tt>maxResults</tt> was used and
--   the results exceeded the value of that parameter. Pagination continues
--   from the end of the previous results that returned the
--   <tt>nextToken</tt> value.
lsNextToken :: Lens' ListServices (Maybe Text)

-- | The launch type for services you want to list.
lsLaunchType :: Lens' ListServices (Maybe LaunchType)

-- | The maximum number of service results returned by
--   <tt>ListServices</tt> in paginated output. When this parameter is
--   used, <tt>ListServices</tt> only returns <tt>maxResults</tt> results
--   in a single page along with a <tt>nextToken</tt> response element. The
--   remaining results of the initial request can be seen by sending
--   another <tt>ListServices</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 10. If this
--   parameter is not used, then <tt>ListServices</tt> returns up to 10
--   results and a <tt>nextToken</tt> value if applicable.
lsMaxResults :: Lens' ListServices (Maybe Int)

-- | Creates a value of <a>ListServicesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrsServiceARNs</a> - The list of full ARN entries for each
--   service associated with the specified cluster.</li>
--   <li><a>lsrsNextToken</a> - The <tt>nextToken</tt> value to include in
--   a future <tt>ListServices</tt> request. When the results of a
--   <tt>ListServices</tt> request exceed <tt>maxResults</tt> , this value
--   can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.</li>
--   <li><a>lsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listServicesResponse :: Int -> ListServicesResponse

-- | <i>See:</i> <a>listServicesResponse</a> smart constructor.
data ListServicesResponse

-- | The list of full ARN entries for each service associated with the
--   specified cluster.
lsrsServiceARNs :: Lens' ListServicesResponse [Text]

-- | The <tt>nextToken</tt> value to include in a future
--   <tt>ListServices</tt> request. When the results of a
--   <tt>ListServices</tt> request exceed <tt>maxResults</tt> , this value
--   can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.
lsrsNextToken :: Lens' ListServicesResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lsrsResponseStatus :: Lens' ListServicesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListServices.ListServicesResponse
instance Data.Data.Data Network.AWS.ECS.ListServices.ListServicesResponse
instance GHC.Show.Show Network.AWS.ECS.ListServices.ListServicesResponse
instance GHC.Read.Read Network.AWS.ECS.ListServices.ListServicesResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListServices.ListServicesResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListServices.ListServices
instance Data.Data.Data Network.AWS.ECS.ListServices.ListServices
instance GHC.Show.Show Network.AWS.ECS.ListServices.ListServices
instance GHC.Read.Read Network.AWS.ECS.ListServices.ListServices
instance GHC.Classes.Eq Network.AWS.ECS.ListServices.ListServices
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListServices.ListServices
instance Control.DeepSeq.NFData Network.AWS.ECS.ListServices.ListServicesResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ECS.ListServices.ListServices
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListServices.ListServices
instance Control.DeepSeq.NFData Network.AWS.ECS.ListServices.ListServices
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListServices.ListServices
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListServices.ListServices
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListServices.ListServices
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListServices.ListServices


-- | Returns a list of container instances in a specified cluster. You can
--   filter the results of a <tt>ListContainerInstances</tt> operation with
--   cluster query language statements inside the <tt>filter</tt>
--   parameter. For more information, see <a>Cluster Query Language</a> in
--   the <i>Amazon Elastic Container Service Developer Guide</i> .
--   
--   This operation returns paginated results.
module Network.AWS.ECS.ListContainerInstances

-- | Creates a value of <a>ListContainerInstances</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lciStatus</a> - Filters the container instances by status. For
--   example, if you specify the <tt>DRAINING</tt> status, the results
--   include only container instances that have been set to
--   <tt>DRAINING</tt> using <tt>UpdateContainerInstancesState</tt> . If
--   you do not specify this parameter, the default is to include container
--   instances set to <tt>ACTIVE</tt> and <tt>DRAINING</tt> .</li>
--   <li><a>lciCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the container instances to list. If
--   you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>lciNextToken</a> - The <tt>nextToken</tt> value returned from a
--   previous paginated <tt>ListContainerInstances</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>lciFilter</a> - You can filter the results of a
--   <tt>ListContainerInstances</tt> operation with cluster query language
--   statements. For more information, see <a>Cluster Query Language</a> in
--   the <i>Amazon Elastic Container Service Developer Guide</i> .</li>
--   <li><a>lciMaxResults</a> - The maximum number of container instance
--   results returned by <tt>ListContainerInstances</tt> in paginated
--   output. When this parameter is used, <tt>ListContainerInstances</tt>
--   only returns <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another
--   <tt>ListContainerInstances</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListContainerInstances</tt> returns up
--   to 100 results and a <tt>nextToken</tt> value if applicable.</li>
--   </ul>
listContainerInstances :: ListContainerInstances

-- | <i>See:</i> <a>listContainerInstances</a> smart constructor.
data ListContainerInstances

-- | Filters the container instances by status. For example, if you specify
--   the <tt>DRAINING</tt> status, the results include only container
--   instances that have been set to <tt>DRAINING</tt> using
--   <tt>UpdateContainerInstancesState</tt> . If you do not specify this
--   parameter, the default is to include container instances set to
--   <tt>ACTIVE</tt> and <tt>DRAINING</tt> .
lciStatus :: Lens' ListContainerInstances (Maybe ContainerInstanceStatus)

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the container instances to list. If you do not specify a
--   cluster, the default cluster is assumed.
lciCluster :: Lens' ListContainerInstances (Maybe Text)

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListContainerInstances</tt> request where <tt>maxResults</tt> was
--   used and the results exceeded the value of that parameter. Pagination
--   continues from the end of the previous results that returned the
--   <tt>nextToken</tt> value.
lciNextToken :: Lens' ListContainerInstances (Maybe Text)

-- | You can filter the results of a <tt>ListContainerInstances</tt>
--   operation with cluster query language statements. For more
--   information, see <a>Cluster Query Language</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
lciFilter :: Lens' ListContainerInstances (Maybe Text)

-- | The maximum number of container instance results returned by
--   <tt>ListContainerInstances</tt> in paginated output. When this
--   parameter is used, <tt>ListContainerInstances</tt> only returns
--   <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another
--   <tt>ListContainerInstances</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListContainerInstances</tt> returns up
--   to 100 results and a <tt>nextToken</tt> value if applicable.
lciMaxResults :: Lens' ListContainerInstances (Maybe Int)

-- | Creates a value of <a>ListContainerInstancesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcirsContainerInstanceARNs</a> - The list of container
--   instances with full ARN entries for each container instance associated
--   with the specified cluster.</li>
--   <li><a>lcirsNextToken</a> - The <tt>nextToken</tt> value to include in
--   a future <tt>ListContainerInstances</tt> request. When the results of
--   a <tt>ListContainerInstances</tt> request exceed <tt>maxResults</tt> ,
--   this value can be used to retrieve the next page of results. This
--   value is <tt>null</tt> when there are no more results to return.</li>
--   <li><a>lcirsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listContainerInstancesResponse :: Int -> ListContainerInstancesResponse

-- | <i>See:</i> <a>listContainerInstancesResponse</a> smart constructor.
data ListContainerInstancesResponse

-- | The list of container instances with full ARN entries for each
--   container instance associated with the specified cluster.
lcirsContainerInstanceARNs :: Lens' ListContainerInstancesResponse [Text]

-- | The <tt>nextToken</tt> value to include in a future
--   <tt>ListContainerInstances</tt> request. When the results of a
--   <tt>ListContainerInstances</tt> request exceed <tt>maxResults</tt> ,
--   this value can be used to retrieve the next page of results. This
--   value is <tt>null</tt> when there are no more results to return.
lcirsNextToken :: Lens' ListContainerInstancesResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lcirsResponseStatus :: Lens' ListContainerInstancesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListContainerInstances.ListContainerInstancesResponse
instance Data.Data.Data Network.AWS.ECS.ListContainerInstances.ListContainerInstancesResponse
instance GHC.Show.Show Network.AWS.ECS.ListContainerInstances.ListContainerInstancesResponse
instance GHC.Read.Read Network.AWS.ECS.ListContainerInstances.ListContainerInstancesResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListContainerInstances.ListContainerInstancesResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Data.Data.Data Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance GHC.Show.Show Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance GHC.Read.Read Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance GHC.Classes.Eq Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Control.DeepSeq.NFData Network.AWS.ECS.ListContainerInstances.ListContainerInstancesResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Control.DeepSeq.NFData Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListContainerInstances.ListContainerInstances
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListContainerInstances.ListContainerInstances


-- | Returns a list of existing clusters.
--   
--   This operation returns paginated results.
module Network.AWS.ECS.ListClusters

-- | Creates a value of <a>ListClusters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcNextToken</a> - The <tt>nextToken</tt> value returned from a
--   previous paginated <tt>ListClusters</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>lcMaxResults</a> - The maximum number of cluster results
--   returned by <tt>ListClusters</tt> in paginated output. When this
--   parameter is used, <tt>ListClusters</tt> only returns
--   <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another <tt>ListClusters</tt>
--   request with the returned <tt>nextToken</tt> value. This value can be
--   between 1 and 100. If this parameter is not used, then
--   <tt>ListClusters</tt> returns up to 100 results and a
--   <tt>nextToken</tt> value if applicable.</li>
--   </ul>
listClusters :: ListClusters

-- | <i>See:</i> <a>listClusters</a> smart constructor.
data ListClusters

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListClusters</tt> request where <tt>maxResults</tt> was used and
--   the results exceeded the value of that parameter. Pagination continues
--   from the end of the previous results that returned the
--   <tt>nextToken</tt> value.
lcNextToken :: Lens' ListClusters (Maybe Text)

-- | The maximum number of cluster results returned by
--   <tt>ListClusters</tt> in paginated output. When this parameter is
--   used, <tt>ListClusters</tt> only returns <tt>maxResults</tt> results
--   in a single page along with a <tt>nextToken</tt> response element. The
--   remaining results of the initial request can be seen by sending
--   another <tt>ListClusters</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListClusters</tt> returns up to 100
--   results and a <tt>nextToken</tt> value if applicable.
lcMaxResults :: Lens' ListClusters (Maybe Int)

-- | Creates a value of <a>ListClustersResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcrsClusterARNs</a> - The list of full Amazon Resource Name
--   (ARN) entries for each cluster associated with your account.</li>
--   <li><a>lcrsNextToken</a> - The <tt>nextToken</tt> value to include in
--   a future <tt>ListClusters</tt> request. When the results of a
--   <tt>ListClusters</tt> request exceed <tt>maxResults</tt> , this value
--   can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.</li>
--   <li><a>lcrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listClustersResponse :: Int -> ListClustersResponse

-- | <i>See:</i> <a>listClustersResponse</a> smart constructor.
data ListClustersResponse

-- | The list of full Amazon Resource Name (ARN) entries for each cluster
--   associated with your account.
lcrsClusterARNs :: Lens' ListClustersResponse [Text]

-- | The <tt>nextToken</tt> value to include in a future
--   <tt>ListClusters</tt> request. When the results of a
--   <tt>ListClusters</tt> request exceed <tt>maxResults</tt> , this value
--   can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.
lcrsNextToken :: Lens' ListClustersResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
lcrsResponseStatus :: Lens' ListClustersResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListClusters.ListClustersResponse
instance Data.Data.Data Network.AWS.ECS.ListClusters.ListClustersResponse
instance GHC.Show.Show Network.AWS.ECS.ListClusters.ListClustersResponse
instance GHC.Read.Read Network.AWS.ECS.ListClusters.ListClustersResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListClusters.ListClustersResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListClusters.ListClusters
instance Data.Data.Data Network.AWS.ECS.ListClusters.ListClusters
instance GHC.Show.Show Network.AWS.ECS.ListClusters.ListClusters
instance GHC.Read.Read Network.AWS.ECS.ListClusters.ListClusters
instance GHC.Classes.Eq Network.AWS.ECS.ListClusters.ListClusters
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListClusters.ListClusters
instance Control.DeepSeq.NFData Network.AWS.ECS.ListClusters.ListClustersResponse
instance Network.AWS.Pager.AWSPager Network.AWS.ECS.ListClusters.ListClusters
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListClusters.ListClusters
instance Control.DeepSeq.NFData Network.AWS.ECS.ListClusters.ListClusters
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListClusters.ListClusters
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListClusters.ListClusters
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListClusters.ListClusters
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListClusters.ListClusters


-- | Lists the attributes for Amazon ECS resources within a specified
--   target type and cluster. When you specify a target type and cluster,
--   <tt>ListAttributes</tt> returns a list of attribute objects, one for
--   each attribute on each resource. You can filter the list of results to
--   a single attribute name to only return results that have that name.
--   You can also filter the results by attribute name and value, for
--   example, to see which container instances in a cluster are running a
--   Linux AMI (<tt>ecs.os-type=linux</tt> ).
module Network.AWS.ECS.ListAttributes

-- | Creates a value of <a>ListAttributes</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>laAttributeValue</a> - The value of the attribute with which to
--   filter results. You must also specify an attribute name to use this
--   parameter.</li>
--   <li><a>laCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster to list attributes. If you do not specify a
--   cluster, the default cluster is assumed.</li>
--   <li><a>laNextToken</a> - The <tt>nextToken</tt> value returned from a
--   previous paginated <tt>ListAttributes</tt> request where
--   <tt>maxResults</tt> was used and the results exceeded the value of
--   that parameter. Pagination continues from the end of the previous
--   results that returned the <tt>nextToken</tt> value.</li>
--   <li><a>laAttributeName</a> - The name of the attribute with which to
--   filter the results.</li>
--   <li><a>laMaxResults</a> - The maximum number of cluster results
--   returned by <tt>ListAttributes</tt> in paginated output. When this
--   parameter is used, <tt>ListAttributes</tt> only returns
--   <tt>maxResults</tt> results in a single page along with a
--   <tt>nextToken</tt> response element. The remaining results of the
--   initial request can be seen by sending another <tt>ListAttributes</tt>
--   request with the returned <tt>nextToken</tt> value. This value can be
--   between 1 and 100. If this parameter is not used, then
--   <tt>ListAttributes</tt> returns up to 100 results and a
--   <tt>nextToken</tt> value if applicable.</li>
--   <li><a>laTargetType</a> - The type of the target with which to list
--   attributes.</li>
--   </ul>
listAttributes :: TargetType -> ListAttributes

-- | <i>See:</i> <a>listAttributes</a> smart constructor.
data ListAttributes

-- | The value of the attribute with which to filter results. You must also
--   specify an attribute name to use this parameter.
laAttributeValue :: Lens' ListAttributes (Maybe Text)

-- | The short name or full Amazon Resource Name (ARN) of the cluster to
--   list attributes. If you do not specify a cluster, the default cluster
--   is assumed.
laCluster :: Lens' ListAttributes (Maybe Text)

-- | The <tt>nextToken</tt> value returned from a previous paginated
--   <tt>ListAttributes</tt> request where <tt>maxResults</tt> was used and
--   the results exceeded the value of that parameter. Pagination continues
--   from the end of the previous results that returned the
--   <tt>nextToken</tt> value.
laNextToken :: Lens' ListAttributes (Maybe Text)

-- | The name of the attribute with which to filter the results.
laAttributeName :: Lens' ListAttributes (Maybe Text)

-- | The maximum number of cluster results returned by
--   <tt>ListAttributes</tt> in paginated output. When this parameter is
--   used, <tt>ListAttributes</tt> only returns <tt>maxResults</tt> results
--   in a single page along with a <tt>nextToken</tt> response element. The
--   remaining results of the initial request can be seen by sending
--   another <tt>ListAttributes</tt> request with the returned
--   <tt>nextToken</tt> value. This value can be between 1 and 100. If this
--   parameter is not used, then <tt>ListAttributes</tt> returns up to 100
--   results and a <tt>nextToken</tt> value if applicable.
laMaxResults :: Lens' ListAttributes (Maybe Int)

-- | The type of the target with which to list attributes.
laTargetType :: Lens' ListAttributes TargetType

-- | Creates a value of <a>ListAttributesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>larsNextToken</a> - The <tt>nextToken</tt> value to include in
--   a future <tt>ListAttributes</tt> request. When the results of a
--   <tt>ListAttributes</tt> request exceed <tt>maxResults</tt> , this
--   value can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.</li>
--   <li><a>larsAttributes</a> - A list of attribute objects that meet the
--   criteria of the request.</li>
--   <li><a>larsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
listAttributesResponse :: Int -> ListAttributesResponse

-- | <i>See:</i> <a>listAttributesResponse</a> smart constructor.
data ListAttributesResponse

-- | The <tt>nextToken</tt> value to include in a future
--   <tt>ListAttributes</tt> request. When the results of a
--   <tt>ListAttributes</tt> request exceed <tt>maxResults</tt> , this
--   value can be used to retrieve the next page of results. This value is
--   <tt>null</tt> when there are no more results to return.
larsNextToken :: Lens' ListAttributesResponse (Maybe Text)

-- | A list of attribute objects that meet the criteria of the request.
larsAttributes :: Lens' ListAttributesResponse [Attribute]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
larsResponseStatus :: Lens' ListAttributesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.ListAttributes.ListAttributesResponse
instance Data.Data.Data Network.AWS.ECS.ListAttributes.ListAttributesResponse
instance GHC.Show.Show Network.AWS.ECS.ListAttributes.ListAttributesResponse
instance GHC.Read.Read Network.AWS.ECS.ListAttributes.ListAttributesResponse
instance GHC.Classes.Eq Network.AWS.ECS.ListAttributes.ListAttributesResponse
instance GHC.Generics.Generic Network.AWS.ECS.ListAttributes.ListAttributes
instance Data.Data.Data Network.AWS.ECS.ListAttributes.ListAttributes
instance GHC.Show.Show Network.AWS.ECS.ListAttributes.ListAttributes
instance GHC.Read.Read Network.AWS.ECS.ListAttributes.ListAttributes
instance GHC.Classes.Eq Network.AWS.ECS.ListAttributes.ListAttributes
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.ListAttributes.ListAttributes
instance Control.DeepSeq.NFData Network.AWS.ECS.ListAttributes.ListAttributesResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.ListAttributes.ListAttributes
instance Control.DeepSeq.NFData Network.AWS.ECS.ListAttributes.ListAttributes
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.ListAttributes.ListAttributes
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.ListAttributes.ListAttributes
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.ListAttributes.ListAttributes
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.ListAttributes.ListAttributes


-- | Returns an endpoint for the Amazon ECS agent to poll for updates.
module Network.AWS.ECS.DiscoverPollEndpoint

-- | Creates a value of <a>DiscoverPollEndpoint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpeCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that the container instance belongs to.</li>
--   <li><a>dpeContainerInstance</a> - The container instance ID or full
--   ARN of the container instance. The ARN contains the
--   <tt>arn:aws:ecs</tt> namespace, followed by the region of the
--   container instance, the AWS account ID of the container instance
--   owner, the <tt>container-instance</tt> namespace, and then the
--   container instance ID. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .</li>
--   </ul>
discoverPollEndpoint :: DiscoverPollEndpoint

-- | <i>See:</i> <a>discoverPollEndpoint</a> smart constructor.
data DiscoverPollEndpoint

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   the container instance belongs to.
dpeCluster :: Lens' DiscoverPollEndpoint (Maybe Text)

-- | The container instance ID or full ARN of the container instance. The
--   ARN contains the <tt>arn:aws:ecs</tt> namespace, followed by the
--   region of the container instance, the AWS account ID of the container
--   instance owner, the <tt>container-instance</tt> namespace, and then
--   the container instance ID. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .
dpeContainerInstance :: Lens' DiscoverPollEndpoint (Maybe Text)

-- | Creates a value of <a>DiscoverPollEndpointResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpersTelemetryEndpoint</a> - The telemetry endpoint for the
--   Amazon ECS agent.</li>
--   <li><a>dpersEndpoint</a> - The endpoint for the Amazon ECS agent to
--   poll.</li>
--   <li><a>dpersResponseStatus</a> - -- | The response status code.</li>
--   </ul>
discoverPollEndpointResponse :: Int -> DiscoverPollEndpointResponse

-- | <i>See:</i> <a>discoverPollEndpointResponse</a> smart constructor.
data DiscoverPollEndpointResponse

-- | The telemetry endpoint for the Amazon ECS agent.
dpersTelemetryEndpoint :: Lens' DiscoverPollEndpointResponse (Maybe Text)

-- | The endpoint for the Amazon ECS agent to poll.
dpersEndpoint :: Lens' DiscoverPollEndpointResponse (Maybe Text)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dpersResponseStatus :: Lens' DiscoverPollEndpointResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpointResponse
instance Data.Data.Data Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpointResponse
instance GHC.Show.Show Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpointResponse
instance GHC.Read.Read Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpointResponse
instance GHC.Classes.Eq Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpointResponse
instance GHC.Generics.Generic Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Data.Data.Data Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance GHC.Show.Show Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance GHC.Read.Read Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance GHC.Classes.Eq Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Control.DeepSeq.NFData Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpointResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Control.DeepSeq.NFData Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DiscoverPollEndpoint.DiscoverPollEndpoint


-- | Describes a specified task or tasks.
module Network.AWS.ECS.DescribeTasks

-- | Creates a value of <a>DescribeTasks</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the task to describe. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>dtTasks</a> - A list of up to 100 task IDs or full ARN
--   entries.</li>
--   </ul>
describeTasks :: DescribeTasks

-- | <i>See:</i> <a>describeTasks</a> smart constructor.
data DescribeTasks

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the task to describe. If you do not specify a cluster, the
--   default cluster is assumed.
dtCluster :: Lens' DescribeTasks (Maybe Text)

-- | A list of up to 100 task IDs or full ARN entries.
dtTasks :: Lens' DescribeTasks [Text]

-- | Creates a value of <a>DescribeTasksResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtrsFailures</a> - Any failures associated with the call.</li>
--   <li><a>dtrsTasks</a> - The list of tasks.</li>
--   <li><a>dtrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeTasksResponse :: Int -> DescribeTasksResponse

-- | <i>See:</i> <a>describeTasksResponse</a> smart constructor.
data DescribeTasksResponse

-- | Any failures associated with the call.
dtrsFailures :: Lens' DescribeTasksResponse [Failure]

-- | The list of tasks.
dtrsTasks :: Lens' DescribeTasksResponse [Task]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dtrsResponseStatus :: Lens' DescribeTasksResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DescribeTasks.DescribeTasksResponse
instance Data.Data.Data Network.AWS.ECS.DescribeTasks.DescribeTasksResponse
instance GHC.Show.Show Network.AWS.ECS.DescribeTasks.DescribeTasksResponse
instance GHC.Read.Read Network.AWS.ECS.DescribeTasks.DescribeTasksResponse
instance GHC.Classes.Eq Network.AWS.ECS.DescribeTasks.DescribeTasksResponse
instance GHC.Generics.Generic Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Data.Data.Data Network.AWS.ECS.DescribeTasks.DescribeTasks
instance GHC.Show.Show Network.AWS.ECS.DescribeTasks.DescribeTasks
instance GHC.Read.Read Network.AWS.ECS.DescribeTasks.DescribeTasks
instance GHC.Classes.Eq Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeTasks.DescribeTasksResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DescribeTasks.DescribeTasks
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DescribeTasks.DescribeTasks


-- | Describes a task definition. You can specify a <tt>family</tt> and
--   <tt>revision</tt> to find information about a specific task
--   definition, or you can simply specify the family to find the latest
--   <tt>ACTIVE</tt> revision in that family.
module Network.AWS.ECS.DescribeTaskDefinition

-- | Creates a value of <a>DescribeTaskDefinition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtdTaskDefinition</a> - The <tt>family</tt> for the latest
--   <tt>ACTIVE</tt> revision, <tt>family</tt> and <tt>revision</tt>
--   (<tt>family:revision</tt> ) for a specific revision in the family, or
--   full Amazon Resource Name (ARN) of the task definition to
--   describe.</li>
--   </ul>
describeTaskDefinition :: Text -> DescribeTaskDefinition

-- | <i>See:</i> <a>describeTaskDefinition</a> smart constructor.
data DescribeTaskDefinition

-- | The <tt>family</tt> for the latest <tt>ACTIVE</tt> revision,
--   <tt>family</tt> and <tt>revision</tt> (<tt>family:revision</tt> ) for
--   a specific revision in the family, or full Amazon Resource Name (ARN)
--   of the task definition to describe.
dtdTaskDefinition :: Lens' DescribeTaskDefinition Text

-- | Creates a value of <a>DescribeTaskDefinitionResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>desrsTaskDefinition</a> - The full task definition
--   description.</li>
--   <li><a>desrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeTaskDefinitionResponse :: Int -> DescribeTaskDefinitionResponse

-- | <i>See:</i> <a>describeTaskDefinitionResponse</a> smart constructor.
data DescribeTaskDefinitionResponse

-- | The full task definition description.
desrsTaskDefinition :: Lens' DescribeTaskDefinitionResponse (Maybe TaskDefinition)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
desrsResponseStatus :: Lens' DescribeTaskDefinitionResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinitionResponse
instance Data.Data.Data Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinitionResponse
instance GHC.Show.Show Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinitionResponse
instance GHC.Read.Read Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinitionResponse
instance GHC.Classes.Eq Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinitionResponse
instance GHC.Generics.Generic Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Data.Data.Data Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance GHC.Show.Show Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance GHC.Read.Read Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance GHC.Classes.Eq Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinitionResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DescribeTaskDefinition.DescribeTaskDefinition


-- | Describes the specified services running in your cluster.
module Network.AWS.ECS.DescribeServices

-- | Creates a value of <a>DescribeServices</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dCluster</a> - The short name or full Amazon Resource Name
--   (ARN)the cluster that hosts the service to describe. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>dServices</a> - A list of services to describe. You may specify
--   up to 10 services to describe in a single operation.</li>
--   </ul>
describeServices :: DescribeServices

-- | <i>See:</i> <a>describeServices</a> smart constructor.
data DescribeServices

-- | The short name or full Amazon Resource Name (ARN)the cluster that
--   hosts the service to describe. If you do not specify a cluster, the
--   default cluster is assumed.
dCluster :: Lens' DescribeServices (Maybe Text)

-- | A list of services to describe. You may specify up to 10 services to
--   describe in a single operation.
dServices :: Lens' DescribeServices [Text]

-- | Creates a value of <a>DescribeServicesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dssrsFailures</a> - Any failures associated with the call.</li>
--   <li><a>dssrsServices</a> - The list of services described.</li>
--   <li><a>dssrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeServicesResponse :: Int -> DescribeServicesResponse

-- | <i>See:</i> <a>describeServicesResponse</a> smart constructor.
data DescribeServicesResponse

-- | Any failures associated with the call.
dssrsFailures :: Lens' DescribeServicesResponse [Failure]

-- | The list of services described.
dssrsServices :: Lens' DescribeServicesResponse [ContainerService]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dssrsResponseStatus :: Lens' DescribeServicesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DescribeServices.DescribeServicesResponse
instance Data.Data.Data Network.AWS.ECS.DescribeServices.DescribeServicesResponse
instance GHC.Show.Show Network.AWS.ECS.DescribeServices.DescribeServicesResponse
instance GHC.Read.Read Network.AWS.ECS.DescribeServices.DescribeServicesResponse
instance GHC.Classes.Eq Network.AWS.ECS.DescribeServices.DescribeServicesResponse
instance GHC.Generics.Generic Network.AWS.ECS.DescribeServices.DescribeServices
instance Data.Data.Data Network.AWS.ECS.DescribeServices.DescribeServices
instance GHC.Show.Show Network.AWS.ECS.DescribeServices.DescribeServices
instance GHC.Read.Read Network.AWS.ECS.DescribeServices.DescribeServices
instance GHC.Classes.Eq Network.AWS.ECS.DescribeServices.DescribeServices
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DescribeServices.DescribeServices
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeServices.DescribeServicesResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DescribeServices.DescribeServices
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeServices.DescribeServices
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DescribeServices.DescribeServices
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DescribeServices.DescribeServices
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DescribeServices.DescribeServices
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DescribeServices.DescribeServices


-- | Describes Amazon Elastic Container Service container instances.
--   Returns metadata about registered and remaining resources on each
--   container instance requested.
module Network.AWS.ECS.DescribeContainerInstances

-- | Creates a value of <a>DescribeContainerInstances</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dciCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the container instances to describe.
--   If you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>dciContainerInstances</a> - A list of container instance IDs or
--   full ARN entries.</li>
--   </ul>
describeContainerInstances :: DescribeContainerInstances

-- | <i>See:</i> <a>describeContainerInstances</a> smart constructor.
data DescribeContainerInstances

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the container instances to describe. If you do not specify a
--   cluster, the default cluster is assumed.
dciCluster :: Lens' DescribeContainerInstances (Maybe Text)

-- | A list of container instance IDs or full ARN entries.
dciContainerInstances :: Lens' DescribeContainerInstances [Text]

-- | Creates a value of <a>DescribeContainerInstancesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcisrsFailures</a> - Any failures associated with the
--   call.</li>
--   <li><a>dcisrsContainerInstances</a> - The list of container
--   instances.</li>
--   <li><a>dcisrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeContainerInstancesResponse :: Int -> DescribeContainerInstancesResponse

-- | <i>See:</i> <a>describeContainerInstancesResponse</a> smart
--   constructor.
data DescribeContainerInstancesResponse

-- | Any failures associated with the call.
dcisrsFailures :: Lens' DescribeContainerInstancesResponse [Failure]

-- | The list of container instances.
dcisrsContainerInstances :: Lens' DescribeContainerInstancesResponse [ContainerInstance]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcisrsResponseStatus :: Lens' DescribeContainerInstancesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstancesResponse
instance Data.Data.Data Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstancesResponse
instance GHC.Show.Show Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstancesResponse
instance GHC.Read.Read Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstancesResponse
instance GHC.Classes.Eq Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstancesResponse
instance GHC.Generics.Generic Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Data.Data.Data Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance GHC.Show.Show Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance GHC.Read.Read Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance GHC.Classes.Eq Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstancesResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DescribeContainerInstances.DescribeContainerInstances


-- | Describes one or more of your clusters.
module Network.AWS.ECS.DescribeClusters

-- | Creates a value of <a>DescribeClusters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcInclude</a> - Additional information about your clusters to
--   be separated by launch type, including: * runningEC2TasksCount *
--   runningFargateTasksCount * pendingEC2TasksCount *
--   pendingFargateTasksCount * activeEC2ServiceCount *
--   activeFargateServiceCount * drainingEC2ServiceCount *
--   drainingFargateServiceCount</li>
--   <li><a>dcClusters</a> - A list of up to 100 cluster names or full
--   cluster Amazon Resource Name (ARN) entries. If you do not specify a
--   cluster, the default cluster is assumed.</li>
--   </ul>
describeClusters :: DescribeClusters

-- | <i>See:</i> <a>describeClusters</a> smart constructor.
data DescribeClusters

-- | Additional information about your clusters to be separated by launch
--   type, including: * runningEC2TasksCount * runningFargateTasksCount *
--   pendingEC2TasksCount * pendingFargateTasksCount *
--   activeEC2ServiceCount * activeFargateServiceCount *
--   drainingEC2ServiceCount * drainingFargateServiceCount
dcInclude :: Lens' DescribeClusters [ClusterField]

-- | A list of up to 100 cluster names or full cluster Amazon Resource Name
--   (ARN) entries. If you do not specify a cluster, the default cluster is
--   assumed.
dcClusters :: Lens' DescribeClusters [Text]

-- | Creates a value of <a>DescribeClustersResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcrsFailures</a> - Any failures associated with the call.</li>
--   <li><a>dcrsClusters</a> - The list of clusters.</li>
--   <li><a>dcrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
describeClustersResponse :: Int -> DescribeClustersResponse

-- | <i>See:</i> <a>describeClustersResponse</a> smart constructor.
data DescribeClustersResponse

-- | Any failures associated with the call.
dcrsFailures :: Lens' DescribeClustersResponse [Failure]

-- | The list of clusters.
dcrsClusters :: Lens' DescribeClustersResponse [Cluster]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcrsResponseStatus :: Lens' DescribeClustersResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DescribeClusters.DescribeClustersResponse
instance Data.Data.Data Network.AWS.ECS.DescribeClusters.DescribeClustersResponse
instance GHC.Show.Show Network.AWS.ECS.DescribeClusters.DescribeClustersResponse
instance GHC.Read.Read Network.AWS.ECS.DescribeClusters.DescribeClustersResponse
instance GHC.Classes.Eq Network.AWS.ECS.DescribeClusters.DescribeClustersResponse
instance GHC.Generics.Generic Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Data.Data.Data Network.AWS.ECS.DescribeClusters.DescribeClusters
instance GHC.Show.Show Network.AWS.ECS.DescribeClusters.DescribeClusters
instance GHC.Read.Read Network.AWS.ECS.DescribeClusters.DescribeClusters
instance GHC.Classes.Eq Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeClusters.DescribeClustersResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Control.DeepSeq.NFData Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DescribeClusters.DescribeClusters
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DescribeClusters.DescribeClusters


-- | Deregisters the specified task definition by family and revision. Upon
--   deregistration, the task definition is marked as <tt>INACTIVE</tt> .
--   Existing tasks and services that reference an <tt>INACTIVE</tt> task
--   definition continue to run without disruption. Existing services that
--   reference an <tt>INACTIVE</tt> task definition can still scale up or
--   down by modifying the service's desired count.
--   
--   You cannot use an <tt>INACTIVE</tt> task definition to run new tasks
--   or create new services, and you cannot update an existing service to
--   reference an <tt>INACTIVE</tt> task definition (although there may be
--   up to a 10-minute window following deregistration where these
--   restrictions have not yet taken effect).
module Network.AWS.ECS.DeregisterTaskDefinition

-- | Creates a value of <a>DeregisterTaskDefinition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>derTaskDefinition</a> - The <tt>family</tt> and
--   <tt>revision</tt> (<tt>family:revision</tt> ) or full Amazon Resource
--   Name (ARN) of the task definition to deregister. You must specify a
--   <tt>revision</tt> .</li>
--   </ul>
deregisterTaskDefinition :: Text -> DeregisterTaskDefinition

-- | <i>See:</i> <a>deregisterTaskDefinition</a> smart constructor.
data DeregisterTaskDefinition

-- | The <tt>family</tt> and <tt>revision</tt> (<tt>family:revision</tt> )
--   or full Amazon Resource Name (ARN) of the task definition to
--   deregister. You must specify a <tt>revision</tt> .
derTaskDefinition :: Lens' DeregisterTaskDefinition Text

-- | Creates a value of <a>DeregisterTaskDefinitionResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtdrsTaskDefinition</a> - The full description of the
--   deregistered task.</li>
--   <li><a>dtdrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deregisterTaskDefinitionResponse :: Int -> DeregisterTaskDefinitionResponse

-- | <i>See:</i> <a>deregisterTaskDefinitionResponse</a> smart constructor.
data DeregisterTaskDefinitionResponse

-- | The full description of the deregistered task.
dtdrsTaskDefinition :: Lens' DeregisterTaskDefinitionResponse (Maybe TaskDefinition)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dtdrsResponseStatus :: Lens' DeregisterTaskDefinitionResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinitionResponse
instance Data.Data.Data Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinitionResponse
instance GHC.Show.Show Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinitionResponse
instance GHC.Read.Read Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinitionResponse
instance GHC.Classes.Eq Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinitionResponse
instance GHC.Generics.Generic Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Data.Data.Data Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance GHC.Show.Show Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance GHC.Read.Read Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance GHC.Classes.Eq Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Control.DeepSeq.NFData Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinitionResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Control.DeepSeq.NFData Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DeregisterTaskDefinition.DeregisterTaskDefinition


-- | Deregisters an Amazon ECS container instance from the specified
--   cluster. This instance is no longer available to run tasks.
--   
--   If you intend to use the container instance for some other purpose
--   after deregistration, you should stop all of the tasks running on the
--   container instance before deregistration. That prevents any orphaned
--   tasks from consuming resources.
--   
--   Deregistering a container instance removes the instance from a
--   cluster, but it does not terminate the EC2 instance; if you are
--   finished using the instance, be sure to terminate it in the Amazon EC2
--   console to stop billing.
module Network.AWS.ECS.DeregisterContainerInstance

-- | Creates a value of <a>DeregisterContainerInstance</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>derCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the container instance to deregister.
--   If you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>derForce</a> - Forces the deregistration of the container
--   instance. If you have tasks running on the container instance when you
--   deregister it with the <tt>force</tt> option, these tasks remain
--   running until you terminate the instance or the tasks stop through
--   some other means, but they are orphaned (no longer monitored or
--   accounted for by Amazon ECS). If an orphaned task on your container
--   instance is part of an Amazon ECS service, then the service scheduler
--   starts another copy of that task, on a different container instance if
--   possible. Any containers in orphaned service tasks that are registered
--   with a Classic Load Balancer or an Application Load Balancer target
--   group are deregistered. They begin connection draining according to
--   the settings on the load balancer or target group.</li>
--   <li><a>derContainerInstance</a> - The container instance ID or full
--   ARN of the container instance to deregister. The ARN contains the
--   <tt>arn:aws:ecs</tt> namespace, followed by the region of the
--   container instance, the AWS account ID of the container instance
--   owner, the <tt>container-instance</tt> namespace, and then the
--   container instance ID. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .</li>
--   </ul>
deregisterContainerInstance :: Text -> DeregisterContainerInstance

-- | <i>See:</i> <a>deregisterContainerInstance</a> smart constructor.
data DeregisterContainerInstance

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the container instance to deregister. If you do not specify a
--   cluster, the default cluster is assumed.
derCluster :: Lens' DeregisterContainerInstance (Maybe Text)

-- | Forces the deregistration of the container instance. If you have tasks
--   running on the container instance when you deregister it with the
--   <tt>force</tt> option, these tasks remain running until you terminate
--   the instance or the tasks stop through some other means, but they are
--   orphaned (no longer monitored or accounted for by Amazon ECS). If an
--   orphaned task on your container instance is part of an Amazon ECS
--   service, then the service scheduler starts another copy of that task,
--   on a different container instance if possible. Any containers in
--   orphaned service tasks that are registered with a Classic Load
--   Balancer or an Application Load Balancer target group are
--   deregistered. They begin connection draining according to the settings
--   on the load balancer or target group.
derForce :: Lens' DeregisterContainerInstance (Maybe Bool)

-- | The container instance ID or full ARN of the container instance to
--   deregister. The ARN contains the <tt>arn:aws:ecs</tt> namespace,
--   followed by the region of the container instance, the AWS account ID
--   of the container instance owner, the <tt>container-instance</tt>
--   namespace, and then the container instance ID. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .
derContainerInstance :: Lens' DeregisterContainerInstance Text

-- | Creates a value of <a>DeregisterContainerInstanceResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcirsContainerInstance</a> - The container instance that was
--   deregistered.</li>
--   <li><a>dcirsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deregisterContainerInstanceResponse :: Int -> DeregisterContainerInstanceResponse

-- | <i>See:</i> <a>deregisterContainerInstanceResponse</a> smart
--   constructor.
data DeregisterContainerInstanceResponse

-- | The container instance that was deregistered.
dcirsContainerInstance :: Lens' DeregisterContainerInstanceResponse (Maybe ContainerInstance)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dcirsResponseStatus :: Lens' DeregisterContainerInstanceResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstanceResponse
instance Data.Data.Data Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstanceResponse
instance GHC.Show.Show Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstanceResponse
instance GHC.Read.Read Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstanceResponse
instance GHC.Classes.Eq Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstanceResponse
instance GHC.Generics.Generic Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Data.Data.Data Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance GHC.Show.Show Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance GHC.Read.Read Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance GHC.Classes.Eq Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Control.DeepSeq.NFData Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstanceResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Control.DeepSeq.NFData Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DeregisterContainerInstance.DeregisterContainerInstance


-- | Deletes a specified service within a cluster. You can delete a service
--   if you have no running tasks in it and the desired task count is zero.
--   If the service is actively maintaining tasks, you cannot delete it,
--   and you must update the service to a desired task count of zero. For
--   more information, see <tt>UpdateService</tt> .
module Network.AWS.ECS.DeleteService

-- | Creates a value of <a>DeleteService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the service to delete. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>dsService</a> - The name of the service to delete.</li>
--   </ul>
deleteService :: Text -> DeleteService

-- | <i>See:</i> <a>deleteService</a> smart constructor.
data DeleteService

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the service to delete. If you do not specify a cluster, the
--   default cluster is assumed.
dsCluster :: Lens' DeleteService (Maybe Text)

-- | The name of the service to delete.
dsService :: Lens' DeleteService Text

-- | Creates a value of <a>DeleteServiceResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsrsService</a> - The full description of the deleted
--   service.</li>
--   <li><a>dsrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteServiceResponse :: Int -> DeleteServiceResponse

-- | <i>See:</i> <a>deleteServiceResponse</a> smart constructor.
data DeleteServiceResponse

-- | The full description of the deleted service.
dsrsService :: Lens' DeleteServiceResponse (Maybe ContainerService)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
dsrsResponseStatus :: Lens' DeleteServiceResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DeleteService.DeleteServiceResponse
instance Data.Data.Data Network.AWS.ECS.DeleteService.DeleteServiceResponse
instance GHC.Show.Show Network.AWS.ECS.DeleteService.DeleteServiceResponse
instance GHC.Read.Read Network.AWS.ECS.DeleteService.DeleteServiceResponse
instance GHC.Classes.Eq Network.AWS.ECS.DeleteService.DeleteServiceResponse
instance GHC.Generics.Generic Network.AWS.ECS.DeleteService.DeleteService
instance Data.Data.Data Network.AWS.ECS.DeleteService.DeleteService
instance GHC.Show.Show Network.AWS.ECS.DeleteService.DeleteService
instance GHC.Read.Read Network.AWS.ECS.DeleteService.DeleteService
instance GHC.Classes.Eq Network.AWS.ECS.DeleteService.DeleteService
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DeleteService.DeleteService
instance Control.DeepSeq.NFData Network.AWS.ECS.DeleteService.DeleteServiceResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DeleteService.DeleteService
instance Control.DeepSeq.NFData Network.AWS.ECS.DeleteService.DeleteService
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DeleteService.DeleteService
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DeleteService.DeleteService
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DeleteService.DeleteService
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DeleteService.DeleteService


-- | Deletes the specified cluster. You must deregister all container
--   instances from this cluster before you may delete it. You can list the
--   container instances in a cluster with <tt>ListContainerInstances</tt>
--   and deregister them with <tt>DeregisterContainerInstance</tt> .
module Network.AWS.ECS.DeleteCluster

-- | Creates a value of <a>DeleteCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster to delete.</li>
--   </ul>
deleteCluster :: Text -> DeleteCluster

-- | <i>See:</i> <a>deleteCluster</a> smart constructor.
data DeleteCluster

-- | The short name or full Amazon Resource Name (ARN) of the cluster to
--   delete.
dcCluster :: Lens' DeleteCluster Text

-- | Creates a value of <a>DeleteClusterResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drsCluster</a> - The full description of the deleted
--   cluster.</li>
--   <li><a>drsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteClusterResponse :: Int -> DeleteClusterResponse

-- | <i>See:</i> <a>deleteClusterResponse</a> smart constructor.
data DeleteClusterResponse

-- | The full description of the deleted cluster.
drsCluster :: Lens' DeleteClusterResponse (Maybe Cluster)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
drsResponseStatus :: Lens' DeleteClusterResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DeleteCluster.DeleteClusterResponse
instance Data.Data.Data Network.AWS.ECS.DeleteCluster.DeleteClusterResponse
instance GHC.Show.Show Network.AWS.ECS.DeleteCluster.DeleteClusterResponse
instance GHC.Read.Read Network.AWS.ECS.DeleteCluster.DeleteClusterResponse
instance GHC.Classes.Eq Network.AWS.ECS.DeleteCluster.DeleteClusterResponse
instance GHC.Generics.Generic Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Data.Data.Data Network.AWS.ECS.DeleteCluster.DeleteCluster
instance GHC.Show.Show Network.AWS.ECS.DeleteCluster.DeleteCluster
instance GHC.Read.Read Network.AWS.ECS.DeleteCluster.DeleteCluster
instance GHC.Classes.Eq Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Control.DeepSeq.NFData Network.AWS.ECS.DeleteCluster.DeleteClusterResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Control.DeepSeq.NFData Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DeleteCluster.DeleteCluster
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DeleteCluster.DeleteCluster


-- | Deletes one or more custom attributes from an Amazon ECS resource.
module Network.AWS.ECS.DeleteAttributes

-- | Creates a value of <a>DeleteAttributes</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that contains the resource to delete attributes.
--   If you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>daAttributes</a> - The attributes to delete from your resource.
--   You can specify up to 10 attributes per request. For custom
--   attributes, specify the attribute name and target ID, but do not
--   specify the value. If you specify the target ID using the short form,
--   you must also specify the target type.</li>
--   </ul>
deleteAttributes :: DeleteAttributes

-- | <i>See:</i> <a>deleteAttributes</a> smart constructor.
data DeleteAttributes

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   contains the resource to delete attributes. If you do not specify a
--   cluster, the default cluster is assumed.
daCluster :: Lens' DeleteAttributes (Maybe Text)

-- | The attributes to delete from your resource. You can specify up to 10
--   attributes per request. For custom attributes, specify the attribute
--   name and target ID, but do not specify the value. If you specify the
--   target ID using the short form, you must also specify the target type.
daAttributes :: Lens' DeleteAttributes [Attribute]

-- | Creates a value of <a>DeleteAttributesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>darsAttributes</a> - A list of attribute objects that were
--   successfully deleted from your resource.</li>
--   <li><a>darsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
deleteAttributesResponse :: Int -> DeleteAttributesResponse

-- | <i>See:</i> <a>deleteAttributesResponse</a> smart constructor.
data DeleteAttributesResponse

-- | A list of attribute objects that were successfully deleted from your
--   resource.
darsAttributes :: Lens' DeleteAttributesResponse [Attribute]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
darsResponseStatus :: Lens' DeleteAttributesResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.DeleteAttributes.DeleteAttributesResponse
instance Data.Data.Data Network.AWS.ECS.DeleteAttributes.DeleteAttributesResponse
instance GHC.Show.Show Network.AWS.ECS.DeleteAttributes.DeleteAttributesResponse
instance GHC.Read.Read Network.AWS.ECS.DeleteAttributes.DeleteAttributesResponse
instance GHC.Classes.Eq Network.AWS.ECS.DeleteAttributes.DeleteAttributesResponse
instance GHC.Generics.Generic Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Data.Data.Data Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance GHC.Show.Show Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance GHC.Read.Read Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance GHC.Classes.Eq Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Control.DeepSeq.NFData Network.AWS.ECS.DeleteAttributes.DeleteAttributesResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Control.DeepSeq.NFData Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.DeleteAttributes.DeleteAttributes
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.DeleteAttributes.DeleteAttributes


-- | Runs and maintains a desired number of tasks from a specified task
--   definition. If the number of tasks running in a service drops below
--   <tt>desiredCount</tt> , Amazon ECS spawns another copy of the task in
--   the specified cluster. To update an existing service, see
--   <tt>UpdateService</tt> .
--   
--   In addition to maintaining the desired count of tasks in your service,
--   you can optionally run your service behind a load balancer. The load
--   balancer distributes traffic across the tasks that are associated with
--   the service. For more information, see <a>Service Load Balancing</a>
--   in the <i>Amazon Elastic Container Service Developer Guide</i> .
--   
--   You can optionally specify a deployment configuration for your
--   service. During a deployment, the service scheduler uses the
--   <tt>minimumHealthyPercent</tt> and <tt>maximumPercent</tt> parameters
--   to determine the deployment strategy. The deployment is triggered by
--   changing the task definition or the desired count of a service with an
--   <tt>UpdateService</tt> operation.
--   
--   The <tt>minimumHealthyPercent</tt> represents a lower limit on the
--   number of your service's tasks that must remain in the
--   <tt>RUNNING</tt> state during a deployment, as a percentage of the
--   <tt>desiredCount</tt> (rounded up to the nearest integer). This
--   parameter enables you to deploy without using additional cluster
--   capacity. For example, if your service has a <tt>desiredCount</tt> of
--   four tasks and a <tt>minimumHealthyPercent</tt> of 50%, the scheduler
--   can stop two existing tasks to free up cluster capacity before
--   starting two new tasks. Tasks for services that <i>do not</i> use a
--   load balancer are considered healthy if they are in the
--   <tt>RUNNING</tt> state. Tasks for services that <i>do</i> use a load
--   balancer are considered healthy if they are in the <tt>RUNNING</tt>
--   state and the container instance they are hosted on is reported as
--   healthy by the load balancer. The default value for
--   <tt>minimumHealthyPercent</tt> is 50% in the console and 100% for the
--   AWS CLI, the AWS SDKs, and the APIs.
--   
--   The <tt>maximumPercent</tt> parameter represents an upper limit on the
--   number of your service's tasks that are allowed in the
--   <tt>RUNNING</tt> or <tt>PENDING</tt> state during a deployment, as a
--   percentage of the <tt>desiredCount</tt> (rounded down to the nearest
--   integer). This parameter enables you to define the deployment batch
--   size. For example, if your service has a <tt>desiredCount</tt> of four
--   tasks and a <tt>maximumPercent</tt> value of 200%, the scheduler can
--   start four new tasks before stopping the four older tasks (provided
--   that the cluster resources required to do this are available). The
--   default value for <tt>maximumPercent</tt> is 200%.
--   
--   When the service scheduler launches new tasks, it determines task
--   placement in your cluster using the following logic:
--   
--   <ul>
--   <li>Determine which of the container instances in your cluster can
--   support your service's task definition (for example, they have the
--   required CPU, memory, ports, and container instance attributes).</li>
--   <li>By default, the service scheduler attempts to balance tasks across
--   Availability Zones in this manner (although you can choose a different
--   placement strategy) with the <tt>placementStrategy</tt>
--   parameter):</li>
--   <li>Sort the valid container instances by the fewest number of running
--   tasks for this service in the same Availability Zone as the instance.
--   For example, if zone A has one running service task and zones B and C
--   each have zero, valid container instances in either zone B or C are
--   considered optimal for placement.</li>
--   <li>Place the new service task on a valid container instance in an
--   optimal Availability Zone (based on the previous steps), favoring
--   container instances with the fewest number of running tasks for this
--   service.</li>
--   </ul>
module Network.AWS.ECS.CreateService

-- | Creates a value of <a>CreateService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster on which to run your service. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>cClientToken</a> - Unique, case-sensitive identifier you
--   provide to ensure the idempotency of the request. Up to 32 ASCII
--   characters are allowed.</li>
--   <li><a>cPlatformVersion</a> - The platform version on which to run
--   your service. If one is not specified, the latest version is used by
--   default.</li>
--   <li><a>cLoadBalancers</a> - A load balancer object representing the
--   load balancer to use with your service. Currently, you are limited to
--   one load balancer or target group per service. After you create a
--   service, the load balancer name or target group ARN, container name,
--   and container port specified in the service definition are immutable.
--   For Classic Load Balancers, this object must contain the load balancer
--   name, the container name (as it appears in a container definition),
--   and the container port to access from the load balancer. When a task
--   from this service is placed on a container instance, the container
--   instance is registered with the load balancer specified here. For
--   Application Load Balancers and Network Load Balancers, this object
--   must contain the load balancer target group ARN, the container name
--   (as it appears in a container definition), and the container port to
--   access from the load balancer. When a task from this service is placed
--   on a container instance, the container instance and port combination
--   is registered as a target in the target group specified here.</li>
--   <li><a>cRole</a> - The name or full Amazon Resource Name (ARN) of the
--   IAM role that allows Amazon ECS to make calls to your load balancer on
--   your behalf. This parameter is only permitted if you are using a load
--   balancer with your service and your task definition does not use the
--   <tt>awsvpc</tt> network mode. If you specify the <tt>role</tt>
--   parameter, you must also specify a load balancer object with the
--   <tt>loadBalancers</tt> parameter. <i>Important:</i> If your account
--   has already created the Amazon ECS service-linked role, that role is
--   used by default for your service unless you specify a role here. The
--   service-linked role is required if your task definition uses the
--   <tt>awsvpc</tt> network mode, in which case you should not specify a
--   role here. For more information, see <a>Using Service-Linked Roles for
--   Amazon ECS</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> . If your specified role has a path other than <tt>/</tt> ,
--   then you must either specify the full role ARN (this is recommended)
--   or prefix the role name with the path. For example, if a role with the
--   name <tt>bar</tt> has a path of <tt><i>foo</i></tt> then you would
--   specify <tt><i>foo</i>bar</tt> as the role name. For more information,
--   see <a>Friendly Names and Paths</a> in the <i>IAM User Guide</i>
--   .</li>
--   <li><a>cPlacementConstraints</a> - An array of placement constraint
--   objects to use for tasks in your service. You can specify a maximum of
--   10 constraints per task (this limit includes constraints in the task
--   definition and those specified at run time).</li>
--   <li><a>cPlacementStrategy</a> - The placement strategy objects to use
--   for tasks in your service. You can specify a maximum of five strategy
--   rules per service.</li>
--   <li><a>cLaunchType</a> - The launch type on which to run your
--   service.</li>
--   <li><a>cHealthCheckGracePeriodSeconds</a> - The period of time, in
--   seconds, that the Amazon ECS service scheduler should ignore unhealthy
--   Elastic Load Balancing target health checks after a task has first
--   started. This is only valid if your service is configured to use a
--   load balancer. If your service's tasks take a while to start and
--   respond to Elastic Load Balancing health checks, you can specify a
--   health check grace period of up to 1,800 seconds during which the ECS
--   service scheduler ignores health check status. This grace period can
--   prevent the ECS service scheduler from marking tasks as unhealthy and
--   stopping them before they have time to come up.</li>
--   <li><a>cNetworkConfiguration</a> - The network configuration for the
--   service. This parameter is required for task definitions that use the
--   <tt>awsvpc</tt> network mode to receive their own Elastic Network
--   Interface, and it is not supported for other network modes. For more
--   information, see <a>Task Networking</a> in the <i>Amazon Elastic
--   Container Service Developer Guide</i> .</li>
--   <li><a>cServiceRegistries</a> - The details of the service discovery
--   registries you want to assign to this service. For more information,
--   see <a>Service Discovery</a> .</li>
--   <li><a>cDeploymentConfiguration</a> - Optional deployment parameters
--   that control how many tasks run during the deployment and the ordering
--   of stopping and starting tasks.</li>
--   <li><a>cServiceName</a> - The name of your service. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. Service names must be unique within a cluster, but you can
--   have similarly named services in multiple clusters within a region or
--   across multiple regions.</li>
--   <li><a>cTaskDefinition</a> - The <tt>family</tt> and <tt>revision</tt>
--   (<tt>family:revision</tt> ) or full ARN of the task definition to run
--   in your service. If a <tt>revision</tt> is not specified, the latest
--   <tt>ACTIVE</tt> revision is used.</li>
--   <li><a>cDesiredCount</a> - The number of instantiations of the
--   specified task definition to place and keep running on your
--   cluster.</li>
--   </ul>
createService :: Text -> Text -> Int -> CreateService

-- | <i>See:</i> <a>createService</a> smart constructor.
data CreateService

-- | The short name or full Amazon Resource Name (ARN) of the cluster on
--   which to run your service. If you do not specify a cluster, the
--   default cluster is assumed.
cCluster :: Lens' CreateService (Maybe Text)

-- | Unique, case-sensitive identifier you provide to ensure the
--   idempotency of the request. Up to 32 ASCII characters are allowed.
cClientToken :: Lens' CreateService (Maybe Text)

-- | The platform version on which to run your service. If one is not
--   specified, the latest version is used by default.
cPlatformVersion :: Lens' CreateService (Maybe Text)

-- | A load balancer object representing the load balancer to use with your
--   service. Currently, you are limited to one load balancer or target
--   group per service. After you create a service, the load balancer name
--   or target group ARN, container name, and container port specified in
--   the service definition are immutable. For Classic Load Balancers, this
--   object must contain the load balancer name, the container name (as it
--   appears in a container definition), and the container port to access
--   from the load balancer. When a task from this service is placed on a
--   container instance, the container instance is registered with the load
--   balancer specified here. For Application Load Balancers and Network
--   Load Balancers, this object must contain the load balancer target
--   group ARN, the container name (as it appears in a container
--   definition), and the container port to access from the load balancer.
--   When a task from this service is placed on a container instance, the
--   container instance and port combination is registered as a target in
--   the target group specified here.
cLoadBalancers :: Lens' CreateService [LoadBalancer]

-- | The name or full Amazon Resource Name (ARN) of the IAM role that
--   allows Amazon ECS to make calls to your load balancer on your behalf.
--   This parameter is only permitted if you are using a load balancer with
--   your service and your task definition does not use the <tt>awsvpc</tt>
--   network mode. If you specify the <tt>role</tt> parameter, you must
--   also specify a load balancer object with the <tt>loadBalancers</tt>
--   parameter. <i>Important:</i> If your account has already created the
--   Amazon ECS service-linked role, that role is used by default for your
--   service unless you specify a role here. The service-linked role is
--   required if your task definition uses the <tt>awsvpc</tt> network
--   mode, in which case you should not specify a role here. For more
--   information, see <a>Using Service-Linked Roles for Amazon ECS</a> in
--   the <i>Amazon Elastic Container Service Developer Guide</i> . If your
--   specified role has a path other than <tt>/</tt> , then you must either
--   specify the full role ARN (this is recommended) or prefix the role
--   name with the path. For example, if a role with the name <tt>bar</tt>
--   has a path of <tt><i>foo</i></tt> then you would specify
--   <tt><i>foo</i>bar</tt> as the role name. For more information, see
--   <a>Friendly Names and Paths</a> in the <i>IAM User Guide</i> .
cRole :: Lens' CreateService (Maybe Text)

-- | An array of placement constraint objects to use for tasks in your
--   service. You can specify a maximum of 10 constraints per task (this
--   limit includes constraints in the task definition and those specified
--   at run time).
cPlacementConstraints :: Lens' CreateService [PlacementConstraint]

-- | The placement strategy objects to use for tasks in your service. You
--   can specify a maximum of five strategy rules per service.
cPlacementStrategy :: Lens' CreateService [PlacementStrategy]

-- | The launch type on which to run your service.
cLaunchType :: Lens' CreateService (Maybe LaunchType)

-- | The period of time, in seconds, that the Amazon ECS service scheduler
--   should ignore unhealthy Elastic Load Balancing target health checks
--   after a task has first started. This is only valid if your service is
--   configured to use a load balancer. If your service's tasks take a
--   while to start and respond to Elastic Load Balancing health checks,
--   you can specify a health check grace period of up to 1,800 seconds
--   during which the ECS service scheduler ignores health check status.
--   This grace period can prevent the ECS service scheduler from marking
--   tasks as unhealthy and stopping them before they have time to come up.
cHealthCheckGracePeriodSeconds :: Lens' CreateService (Maybe Int)

-- | The network configuration for the service. This parameter is required
--   for task definitions that use the <tt>awsvpc</tt> network mode to
--   receive their own Elastic Network Interface, and it is not supported
--   for other network modes. For more information, see <a>Task
--   Networking</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
cNetworkConfiguration :: Lens' CreateService (Maybe NetworkConfiguration)

-- | The details of the service discovery registries you want to assign to
--   this service. For more information, see <a>Service Discovery</a> .
cServiceRegistries :: Lens' CreateService [ServiceRegistry]

-- | Optional deployment parameters that control how many tasks run during
--   the deployment and the ordering of stopping and starting tasks.
cDeploymentConfiguration :: Lens' CreateService (Maybe DeploymentConfiguration)

-- | The name of your service. Up to 255 letters (uppercase and lowercase),
--   numbers, hyphens, and underscores are allowed. Service names must be
--   unique within a cluster, but you can have similarly named services in
--   multiple clusters within a region or across multiple regions.
cServiceName :: Lens' CreateService Text

-- | The <tt>family</tt> and <tt>revision</tt> (<tt>family:revision</tt> )
--   or full ARN of the task definition to run in your service. If a
--   <tt>revision</tt> is not specified, the latest <tt>ACTIVE</tt>
--   revision is used.
cTaskDefinition :: Lens' CreateService Text

-- | The number of instantiations of the specified task definition to place
--   and keep running on your cluster.
cDesiredCount :: Lens' CreateService Int

-- | Creates a value of <a>CreateServiceResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csrsService</a> - The full description of your service
--   following the create call.</li>
--   <li><a>csrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createServiceResponse :: Int -> CreateServiceResponse

-- | <i>See:</i> <a>createServiceResponse</a> smart constructor.
data CreateServiceResponse

-- | The full description of your service following the create call.
csrsService :: Lens' CreateServiceResponse (Maybe ContainerService)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
csrsResponseStatus :: Lens' CreateServiceResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.CreateService.CreateServiceResponse
instance Data.Data.Data Network.AWS.ECS.CreateService.CreateServiceResponse
instance GHC.Show.Show Network.AWS.ECS.CreateService.CreateServiceResponse
instance GHC.Read.Read Network.AWS.ECS.CreateService.CreateServiceResponse
instance GHC.Classes.Eq Network.AWS.ECS.CreateService.CreateServiceResponse
instance GHC.Generics.Generic Network.AWS.ECS.CreateService.CreateService
instance Data.Data.Data Network.AWS.ECS.CreateService.CreateService
instance GHC.Show.Show Network.AWS.ECS.CreateService.CreateService
instance GHC.Read.Read Network.AWS.ECS.CreateService.CreateService
instance GHC.Classes.Eq Network.AWS.ECS.CreateService.CreateService
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.CreateService.CreateService
instance Control.DeepSeq.NFData Network.AWS.ECS.CreateService.CreateServiceResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.CreateService.CreateService
instance Control.DeepSeq.NFData Network.AWS.ECS.CreateService.CreateService
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.CreateService.CreateService
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.CreateService.CreateService
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.CreateService.CreateService
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.CreateService.CreateService


-- | Creates a new Amazon ECS cluster. By default, your account receives a
--   <tt>default</tt> cluster when you launch your first container
--   instance. However, you can create your own cluster with a unique name
--   with the <tt>CreateCluster</tt> action.
module Network.AWS.ECS.CreateCluster

-- | Creates a value of <a>CreateCluster</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccClusterName</a> - The name of your cluster. If you do not
--   specify a name for your cluster, you create a cluster named
--   <tt>default</tt> . Up to 255 letters (uppercase and lowercase),
--   numbers, hyphens, and underscores are allowed.</li>
--   </ul>
createCluster :: CreateCluster

-- | <i>See:</i> <a>createCluster</a> smart constructor.
data CreateCluster

-- | The name of your cluster. If you do not specify a name for your
--   cluster, you create a cluster named <tt>default</tt> . Up to 255
--   letters (uppercase and lowercase), numbers, hyphens, and underscores
--   are allowed.
ccClusterName :: Lens' CreateCluster (Maybe Text)

-- | Creates a value of <a>CreateClusterResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccrsCluster</a> - The full description of your new
--   cluster.</li>
--   <li><a>ccrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
createClusterResponse :: Int -> CreateClusterResponse

-- | <i>See:</i> <a>createClusterResponse</a> smart constructor.
data CreateClusterResponse

-- | The full description of your new cluster.
ccrsCluster :: Lens' CreateClusterResponse (Maybe Cluster)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ccrsResponseStatus :: Lens' CreateClusterResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.CreateCluster.CreateClusterResponse
instance Data.Data.Data Network.AWS.ECS.CreateCluster.CreateClusterResponse
instance GHC.Show.Show Network.AWS.ECS.CreateCluster.CreateClusterResponse
instance GHC.Read.Read Network.AWS.ECS.CreateCluster.CreateClusterResponse
instance GHC.Classes.Eq Network.AWS.ECS.CreateCluster.CreateClusterResponse
instance GHC.Generics.Generic Network.AWS.ECS.CreateCluster.CreateCluster
instance Data.Data.Data Network.AWS.ECS.CreateCluster.CreateCluster
instance GHC.Show.Show Network.AWS.ECS.CreateCluster.CreateCluster
instance GHC.Read.Read Network.AWS.ECS.CreateCluster.CreateCluster
instance GHC.Classes.Eq Network.AWS.ECS.CreateCluster.CreateCluster
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.CreateCluster.CreateCluster
instance Control.DeepSeq.NFData Network.AWS.ECS.CreateCluster.CreateClusterResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.CreateCluster.CreateCluster
instance Control.DeepSeq.NFData Network.AWS.ECS.CreateCluster.CreateCluster
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.CreateCluster.CreateCluster
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.CreateCluster.CreateCluster
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.CreateCluster.CreateCluster
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.CreateCluster.CreateCluster


-- | Updates the Amazon ECS container agent on a specified container
--   instance. Updating the Amazon ECS container agent does not interrupt
--   running tasks or services on the container instance. The process for
--   updating the agent differs depending on whether your container
--   instance was launched with the Amazon ECS-optimized AMI or another
--   operating system.
--   
--   <tt>UpdateContainerAgent</tt> requires the Amazon ECS-optimized AMI or
--   Amazon Linux with the <tt>ecs-init</tt> service installed and running.
--   For help updating the Amazon ECS container agent on other operating
--   systems, see <a>Manually Updating the Amazon ECS Container Agent</a>
--   in the <i>Amazon Elastic Container Service Developer Guide</i> .
module Network.AWS.ECS.UpdateContainerAgent

-- | Creates a value of <a>UpdateContainerAgent</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucaCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that your container instance is running on. If
--   you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>ucaContainerInstance</a> - The container instance ID or full
--   ARN entries for the container instance on which you would like to
--   update the Amazon ECS container agent.</li>
--   </ul>
updateContainerAgent :: Text -> UpdateContainerAgent

-- | <i>See:</i> <a>updateContainerAgent</a> smart constructor.
data UpdateContainerAgent

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   your container instance is running on. If you do not specify a
--   cluster, the default cluster is assumed.
ucaCluster :: Lens' UpdateContainerAgent (Maybe Text)

-- | The container instance ID or full ARN entries for the container
--   instance on which you would like to update the Amazon ECS container
--   agent.
ucaContainerInstance :: Lens' UpdateContainerAgent Text

-- | Creates a value of <a>UpdateContainerAgentResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucarsContainerInstance</a> - The container instance for which
--   the container agent was updated.</li>
--   <li><a>ucarsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateContainerAgentResponse :: Int -> UpdateContainerAgentResponse

-- | <i>See:</i> <a>updateContainerAgentResponse</a> smart constructor.
data UpdateContainerAgentResponse

-- | The container instance for which the container agent was updated.
ucarsContainerInstance :: Lens' UpdateContainerAgentResponse (Maybe ContainerInstance)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ucarsResponseStatus :: Lens' UpdateContainerAgentResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgentResponse
instance Data.Data.Data Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgentResponse
instance GHC.Show.Show Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgentResponse
instance GHC.Read.Read Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgentResponse
instance GHC.Classes.Eq Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgentResponse
instance GHC.Generics.Generic Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Data.Data.Data Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance GHC.Show.Show Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance GHC.Read.Read Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance GHC.Classes.Eq Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Control.DeepSeq.NFData Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgentResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Control.DeepSeq.NFData Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.UpdateContainerAgent.UpdateContainerAgent


-- | Modifies the status of an Amazon ECS container instance.
--   
--   You can change the status of a container instance to <tt>DRAINING</tt>
--   to manually remove an instance from a cluster, for example to perform
--   system updates, update the Docker daemon, or scale down the cluster
--   size.
--   
--   When you set a container instance to <tt>DRAINING</tt> , Amazon ECS
--   prevents new tasks from being scheduled for placement on the container
--   instance and replacement service tasks are started on other container
--   instances in the cluster if the resources are available. Service tasks
--   on the container instance that are in the <tt>PENDING</tt> state are
--   stopped immediately.
--   
--   Service tasks on the container instance that are in the
--   <tt>RUNNING</tt> state are stopped and replaced according to the
--   service's deployment configuration parameters,
--   <tt>minimumHealthyPercent</tt> and <tt>maximumPercent</tt> . You can
--   change the deployment configuration of your service using
--   <tt>UpdateService</tt> .
--   
--   <ul>
--   <li>If <tt>minimumHealthyPercent</tt> is below 100%, the scheduler can
--   ignore <tt>desiredCount</tt> temporarily during task replacement. For
--   example, <tt>desiredCount</tt> is four tasks, a minimum of 50% allows
--   the scheduler to stop two existing tasks before starting two new
--   tasks. If the minimum is 100%, the service scheduler can't remove
--   existing tasks until the replacement tasks are considered healthy.
--   Tasks for services that do not use a load balancer are considered
--   healthy if they are in the <tt>RUNNING</tt> state. Tasks for services
--   that use a load balancer are considered healthy if they are in the
--   <tt>RUNNING</tt> state and the container instance they are hosted on
--   is reported as healthy by the load balancer.</li>
--   <li>The <tt>maximumPercent</tt> parameter represents an upper limit on
--   the number of running tasks during task replacement, which enables you
--   to define the replacement batch size. For example, if
--   <tt>desiredCount</tt> of four tasks, a maximum of 200% starts four new
--   tasks before stopping the four tasks to be drained (provided that the
--   cluster resources required to do this are available). If the maximum
--   is 100%, then replacement tasks can't start until the draining tasks
--   have stopped.</li>
--   </ul>
--   
--   Any <tt>PENDING</tt> or <tt>RUNNING</tt> tasks that do not belong to a
--   service are not affected; you must wait for them to finish or stop
--   them manually.
--   
--   A container instance has completed draining when it has no more
--   <tt>RUNNING</tt> tasks. You can verify this using <tt>ListTasks</tt> .
--   
--   When you set a container instance to <tt>ACTIVE</tt> , the Amazon ECS
--   scheduler can begin scheduling tasks on the instance again.
module Network.AWS.ECS.UpdateContainerInstancesState

-- | Creates a value of <a>UpdateContainerInstancesState</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucisCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that hosts the container instance to update. If
--   you do not specify a cluster, the default cluster is assumed.</li>
--   <li><a>ucisContainerInstances</a> - A list of container instance IDs
--   or full ARN entries.</li>
--   <li><a>ucisStatus</a> - The container instance state with which to
--   update the container instance.</li>
--   </ul>
updateContainerInstancesState :: ContainerInstanceStatus -> UpdateContainerInstancesState

-- | <i>See:</i> <a>updateContainerInstancesState</a> smart constructor.
data UpdateContainerInstancesState

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   hosts the container instance to update. If you do not specify a
--   cluster, the default cluster is assumed.
ucisCluster :: Lens' UpdateContainerInstancesState (Maybe Text)

-- | A list of container instance IDs or full ARN entries.
ucisContainerInstances :: Lens' UpdateContainerInstancesState [Text]

-- | The container instance state with which to update the container
--   instance.
ucisStatus :: Lens' UpdateContainerInstancesState ContainerInstanceStatus

-- | Creates a value of <a>UpdateContainerInstancesStateResponse</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ucisrsFailures</a> - Any failures associated with the
--   call.</li>
--   <li><a>ucisrsContainerInstances</a> - The list of container
--   instances.</li>
--   <li><a>ucisrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateContainerInstancesStateResponse :: Int -> UpdateContainerInstancesStateResponse

-- | <i>See:</i> <a>updateContainerInstancesStateResponse</a> smart
--   constructor.
data UpdateContainerInstancesStateResponse

-- | Any failures associated with the call.
ucisrsFailures :: Lens' UpdateContainerInstancesStateResponse [Failure]

-- | The list of container instances.
ucisrsContainerInstances :: Lens' UpdateContainerInstancesStateResponse [ContainerInstance]

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
ucisrsResponseStatus :: Lens' UpdateContainerInstancesStateResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesStateResponse
instance Data.Data.Data Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesStateResponse
instance GHC.Show.Show Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesStateResponse
instance GHC.Read.Read Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesStateResponse
instance GHC.Classes.Eq Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesStateResponse
instance GHC.Generics.Generic Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Data.Data.Data Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance GHC.Show.Show Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance GHC.Read.Read Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance GHC.Classes.Eq Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Control.DeepSeq.NFData Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesStateResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Control.DeepSeq.NFData Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.UpdateContainerInstancesState.UpdateContainerInstancesState


-- | Modifies the desired count, deployment configuration, network
--   configuration, or task definition used in a service.
--   
--   You can add to or subtract from the number of instantiations of a task
--   definition in a service by specifying the cluster that the service is
--   running in and a new <tt>desiredCount</tt> parameter.
--   
--   If you have updated the Docker image of your application, you can
--   create a new task definition with that image and deploy it to your
--   service. The service scheduler uses the minimum healthy percent and
--   maximum percent parameters (in the service's deployment configuration)
--   to determine the deployment strategy.
--   
--   You can also update the deployment configuration of a service. When a
--   deployment is triggered by updating the task definition of a service,
--   the service scheduler uses the deployment configuration parameters,
--   <tt>minimumHealthyPercent</tt> and <tt>maximumPercent</tt> , to
--   determine the deployment strategy.
--   
--   <ul>
--   <li>If <tt>minimumHealthyPercent</tt> is below 100%, the scheduler can
--   ignore <tt>desiredCount</tt> temporarily during a deployment. For
--   example, if <tt>desiredCount</tt> is four tasks, a minimum of 50%
--   allows the scheduler to stop two existing tasks before starting two
--   new tasks. Tasks for services that do not use a load balancer are
--   considered healthy if they are in the <tt>RUNNING</tt> state. Tasks
--   for services that use a load balancer are considered healthy if they
--   are in the <tt>RUNNING</tt> state and the container instance they are
--   hosted on is reported as healthy by the load balancer.</li>
--   <li>The <tt>maximumPercent</tt> parameter represents an upper limit on
--   the number of running tasks during a deployment, which enables you to
--   define the deployment batch size. For example, if
--   <tt>desiredCount</tt> is four tasks, a maximum of 200% starts four new
--   tasks before stopping the four older tasks (provided that the cluster
--   resources required to do this are available).</li>
--   </ul>
--   
--   When <a>UpdateService</a> stops a task during a deployment, the
--   equivalent of <tt>docker stop</tt> is issued to the containers running
--   in the task. This results in a <tt>SIGTERM</tt> and a 30-second
--   timeout, after which <tt>SIGKILL</tt> is sent and the containers are
--   forcibly stopped. If the container handles the <tt>SIGTERM</tt>
--   gracefully and exits within 30 seconds from receiving it, no
--   <tt>SIGKILL</tt> is sent.
--   
--   When the service scheduler launches new tasks, it determines task
--   placement in your cluster with the following logic:
--   
--   <ul>
--   <li>Determine which of the container instances in your cluster can
--   support your service's task definition (for example, they have the
--   required CPU, memory, ports, and container instance attributes).</li>
--   <li>By default, the service scheduler attempts to balance tasks across
--   Availability Zones in this manner (although you can choose a different
--   placement strategy):</li>
--   <li>Sort the valid container instances by the fewest number of running
--   tasks for this service in the same Availability Zone as the instance.
--   For example, if zone A has one running service task and zones B and C
--   each have zero, valid container instances in either zone B or C are
--   considered optimal for placement.</li>
--   <li>Place the new service task on a valid container instance in an
--   optimal Availability Zone (based on the previous steps), favoring
--   container instances with the fewest number of running tasks for this
--   service.</li>
--   </ul>
--   
--   When the service scheduler stops running tasks, it attempts to
--   maintain balance across the Availability Zones in your cluster using
--   the following logic:
--   
--   <ul>
--   <li>Sort the container instances by the largest number of running
--   tasks for this service in the same Availability Zone as the instance.
--   For example, if zone A has one running service task and zones B and C
--   each have two, container instances in either zone B or C are
--   considered optimal for termination.</li>
--   <li>Stop the task on a container instance in an optimal Availability
--   Zone (based on the previous steps), favoring container instances with
--   the largest number of running tasks for this service.</li>
--   </ul>
module Network.AWS.ECS.UpdateService

-- | Creates a value of <a>UpdateService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usCluster</a> - The short name or full Amazon Resource Name
--   (ARN) of the cluster that your service is running on. If you do not
--   specify a cluster, the default cluster is assumed.</li>
--   <li><a>usPlatformVersion</a> - The platform version you want to update
--   your service to run.</li>
--   <li><a>usDesiredCount</a> - The number of instantiations of the task
--   to place and keep running in your service.</li>
--   <li><a>usForceNewDeployment</a> - Whether to force a new deployment of
--   the service. Deployments are not forced by default. You can use this
--   option to trigger a new deployment with no service definition changes.
--   For example, you can update a service's tasks to use a newer Docker
--   image with the same image/tag combination (<tt>my_image:latest</tt> )
--   or to roll Fargate tasks onto a newer platform version.</li>
--   <li><a>usTaskDefinition</a> - The <tt>family</tt> and
--   <tt>revision</tt> (<tt>family:revision</tt> ) or full ARN of the task
--   definition to run in your service. If a <tt>revision</tt> is not
--   specified, the latest <tt>ACTIVE</tt> revision is used. If you modify
--   the task definition with <tt>UpdateService</tt> , Amazon ECS spawns a
--   task with the new version of the task definition and then stops an old
--   task after the new version is running.</li>
--   <li><a>usHealthCheckGracePeriodSeconds</a> - The period of time, in
--   seconds, that the Amazon ECS service scheduler should ignore unhealthy
--   Elastic Load Balancing target health checks after a task has first
--   started. This is only valid if your service is configured to use a
--   load balancer. If your service's tasks take a while to start and
--   respond to Elastic Load Balancing health checks, you can specify a
--   health check grace period of up to 1,800 seconds during which the ECS
--   service scheduler ignores the Elastic Load Balancing health check
--   status. This grace period can prevent the ECS service scheduler from
--   marking tasks as unhealthy and stopping them before they have time to
--   come up.</li>
--   <li><a>usNetworkConfiguration</a> - The network configuration for the
--   service. This parameter is required for task definitions that use the
--   <tt>awsvpc</tt> network mode to receive their own elastic network
--   interface, and it is not supported for other network modes. For more
--   information, see <a>Task Networking</a> in the <i>Amazon Elastic
--   Container Service Developer Guide</i> .</li>
--   <li><a>usDeploymentConfiguration</a> - Optional deployment parameters
--   that control how many tasks run during the deployment and the ordering
--   of stopping and starting tasks.</li>
--   <li><a>usService</a> - The name of the service to update.</li>
--   </ul>
updateService :: Text -> UpdateService

-- | <i>See:</i> <a>updateService</a> smart constructor.
data UpdateService

-- | The short name or full Amazon Resource Name (ARN) of the cluster that
--   your service is running on. If you do not specify a cluster, the
--   default cluster is assumed.
usCluster :: Lens' UpdateService (Maybe Text)

-- | The platform version you want to update your service to run.
usPlatformVersion :: Lens' UpdateService (Maybe Text)

-- | The number of instantiations of the task to place and keep running in
--   your service.
usDesiredCount :: Lens' UpdateService (Maybe Int)

-- | Whether to force a new deployment of the service. Deployments are not
--   forced by default. You can use this option to trigger a new deployment
--   with no service definition changes. For example, you can update a
--   service's tasks to use a newer Docker image with the same image/tag
--   combination (<tt>my_image:latest</tt> ) or to roll Fargate tasks onto
--   a newer platform version.
usForceNewDeployment :: Lens' UpdateService (Maybe Bool)

-- | The <tt>family</tt> and <tt>revision</tt> (<tt>family:revision</tt> )
--   or full ARN of the task definition to run in your service. If a
--   <tt>revision</tt> is not specified, the latest <tt>ACTIVE</tt>
--   revision is used. If you modify the task definition with
--   <tt>UpdateService</tt> , Amazon ECS spawns a task with the new version
--   of the task definition and then stops an old task after the new
--   version is running.
usTaskDefinition :: Lens' UpdateService (Maybe Text)

-- | The period of time, in seconds, that the Amazon ECS service scheduler
--   should ignore unhealthy Elastic Load Balancing target health checks
--   after a task has first started. This is only valid if your service is
--   configured to use a load balancer. If your service's tasks take a
--   while to start and respond to Elastic Load Balancing health checks,
--   you can specify a health check grace period of up to 1,800 seconds
--   during which the ECS service scheduler ignores the Elastic Load
--   Balancing health check status. This grace period can prevent the ECS
--   service scheduler from marking tasks as unhealthy and stopping them
--   before they have time to come up.
usHealthCheckGracePeriodSeconds :: Lens' UpdateService (Maybe Int)

-- | The network configuration for the service. This parameter is required
--   for task definitions that use the <tt>awsvpc</tt> network mode to
--   receive their own elastic network interface, and it is not supported
--   for other network modes. For more information, see <a>Task
--   Networking</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
usNetworkConfiguration :: Lens' UpdateService (Maybe NetworkConfiguration)

-- | Optional deployment parameters that control how many tasks run during
--   the deployment and the ordering of stopping and starting tasks.
usDeploymentConfiguration :: Lens' UpdateService (Maybe DeploymentConfiguration)

-- | The name of the service to update.
usService :: Lens' UpdateService Text

-- | Creates a value of <a>UpdateServiceResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usrsService</a> - The full description of your service
--   following the update call.</li>
--   <li><a>usrsResponseStatus</a> - -- | The response status code.</li>
--   </ul>
updateServiceResponse :: Int -> UpdateServiceResponse

-- | <i>See:</i> <a>updateServiceResponse</a> smart constructor.
data UpdateServiceResponse

-- | The full description of your service following the update call.
usrsService :: Lens' UpdateServiceResponse (Maybe ContainerService)

-- | <ul>
--   <li>- | The response status code.</li>
--   </ul>
usrsResponseStatus :: Lens' UpdateServiceResponse Int
instance GHC.Generics.Generic Network.AWS.ECS.UpdateService.UpdateServiceResponse
instance Data.Data.Data Network.AWS.ECS.UpdateService.UpdateServiceResponse
instance GHC.Show.Show Network.AWS.ECS.UpdateService.UpdateServiceResponse
instance GHC.Read.Read Network.AWS.ECS.UpdateService.UpdateServiceResponse
instance GHC.Classes.Eq Network.AWS.ECS.UpdateService.UpdateServiceResponse
instance GHC.Generics.Generic Network.AWS.ECS.UpdateService.UpdateService
instance Data.Data.Data Network.AWS.ECS.UpdateService.UpdateService
instance GHC.Show.Show Network.AWS.ECS.UpdateService.UpdateService
instance GHC.Read.Read Network.AWS.ECS.UpdateService.UpdateService
instance GHC.Classes.Eq Network.AWS.ECS.UpdateService.UpdateService
instance Network.AWS.Types.AWSRequest Network.AWS.ECS.UpdateService.UpdateService
instance Control.DeepSeq.NFData Network.AWS.ECS.UpdateService.UpdateServiceResponse
instance Data.Hashable.Class.Hashable Network.AWS.ECS.UpdateService.UpdateService
instance Control.DeepSeq.NFData Network.AWS.ECS.UpdateService.UpdateService
instance Network.AWS.Data.Headers.ToHeaders Network.AWS.ECS.UpdateService.UpdateService
instance Data.Aeson.Types.ToJSON.ToJSON Network.AWS.ECS.UpdateService.UpdateService
instance Network.AWS.Data.Path.ToPath Network.AWS.ECS.UpdateService.UpdateService
instance Network.AWS.Data.Query.ToQuery Network.AWS.ECS.UpdateService.UpdateService


module Network.AWS.ECS.Waiters

-- | Polls <a>DescribeServices</a> every 15 seconds until a successful
--   state is reached. An error is returned after 40 failed checks.
servicesInactive :: Wait DescribeServices

-- | Polls <a>DescribeTasks</a> every 6 seconds until a successful state is
--   reached. An error is returned after 100 failed checks.
tasksRunning :: Wait DescribeTasks

-- | Polls <a>DescribeTasks</a> every 6 seconds until a successful state is
--   reached. An error is returned after 100 failed checks.
tasksStopped :: Wait DescribeTasks


-- | Amazon Elastic Container Service (Amazon ECS) is a highly scalable,
--   fast, container management service that makes it easy to run, stop,
--   and manage Docker containers on a cluster. You can host your cluster
--   on a serverless infrastructure that is managed by Amazon ECS by
--   launching your services or tasks using the Fargate launch type. For
--   more control, you can host your tasks on a cluster of Amazon Elastic
--   Compute Cloud (Amazon EC2) instances that you manage by using the EC2
--   launch type. For more information about launch types, see <a>Amazon
--   ECS Launch Types</a> .
--   
--   Amazon ECS lets you launch and stop container-based applications with
--   simple API calls, allows you to get the state of your cluster from a
--   centralized service, and gives you access to many familiar Amazon EC2
--   features.
--   
--   You can use Amazon ECS to schedule the placement of containers across
--   your cluster based on your resource needs, isolation policies, and
--   availability requirements. Amazon ECS eliminates the need for you to
--   operate your own cluster management and configuration management
--   systems or worry about scaling your management infrastructure.
module Network.AWS.ECS

-- | API version <tt>2014-11-13</tt> of the Amazon EC2 Container Service
--   SDK configuration.
ecs :: Service

-- | You do not have authorization to perform the requested action.
_AccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified parameter is invalid. Review the available parameters
--   for the API request.
_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError

-- | These errors are usually caused by a server issue.
_ServerException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You cannot delete a cluster that has active tasks.
_ClusterContainsTasksException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified platform version does not exist.
_PlatformUnknownException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You cannot delete a cluster that contains services. You must first
--   update the service to reduce its desired task count to 0 and then
--   delete the service. For more information, see <tt>UpdateService</tt>
--   and <tt>DeleteService</tt> .
_ClusterContainsServicesException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You cannot delete a cluster that has registered container instances.
--   You must first deregister the container instances before you can
--   delete the cluster. For more information, see
--   <tt>DeregisterContainerInstance</tt> .
_ClusterContainsContainerInstancesException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified service is not active. You can't update a service that
--   is inactive. If you have previously deleted a service, you can
--   re-create it with <tt>CreateService</tt> .
_ServiceNotActiveException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified cluster could not be found. You can view your available
--   clusters with <tt>ListClusters</tt> . Amazon ECS clusters are
--   region-specific.
_ClusterNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | There is no update available for this Amazon ECS container agent. This
--   could be because the agent is already running the latest version, or
--   it is so old that there is no update path to the current version.
_NoUpdateAvailableException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified task is not supported in this region.
_UnsupportedFeatureException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified service could not be found. You can view your available
--   services with <tt>ListServices</tt> . Amazon ECS services are
--   cluster-specific and region-specific.
_ServiceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified platform version does not satisfy the task definition’s
--   required capabilities.
_PlatformTaskDefinitionIncompatibilityException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Amazon ECS is unable to determine the current version of the Amazon
--   ECS container agent on the container instance and does not have enough
--   information to proceed with an update. This could be because the agent
--   running on the container instance is an older or custom version that
--   does not use our version information.
_MissingVersionException :: AsError a => Getting (First ServiceError) a ServiceError

-- | There is already a current Amazon ECS container agent update in
--   progress on the specified container instance. If the container agent
--   becomes disconnected while it is in a transitional stage, such as
--   <tt>PENDING</tt> or <tt>STAGING</tt> , the update process can get
--   stuck in that state. However, when the agent reconnects, it resumes
--   where it stopped previously.
_UpdateInProgressException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Your AWS account has been blocked. <a>Contact AWS Support</a> for more
--   information.
_BlockedException :: AsError a => Getting (First ServiceError) a ServiceError

-- | The specified target could not be found. You can view your available
--   container instances with <tt>ListContainerInstances</tt> . Amazon ECS
--   container instances are cluster-specific and region-specific.
_TargetNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError

-- | You can apply up to 10 custom attributes per resource. You can view
--   the attributes of a resource with <tt>ListAttributes</tt> . You can
--   remove existing attributes on a resource with
--   <tt>DeleteAttributes</tt> .
_AttributeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError

-- | These errors are usually caused by a client action, such as using an
--   action or resource on behalf of a user that doesn't have permissions
--   to use the action or resource, or specifying an identifier that is not
--   valid.
_ClientException :: AsError a => Getting (First ServiceError) a ServiceError

-- | Polls <a>DescribeServices</a> every 15 seconds until a successful
--   state is reached. An error is returned after 40 failed checks.
servicesInactive :: Wait DescribeServices

-- | Polls <a>DescribeTasks</a> every 6 seconds until a successful state is
--   reached. An error is returned after 100 failed checks.
tasksRunning :: Wait DescribeTasks

-- | Polls <a>DescribeTasks</a> every 6 seconds until a successful state is
--   reached. An error is returned after 100 failed checks.
tasksStopped :: Wait DescribeTasks
data AgentUpdateStatus
AUSFailed :: AgentUpdateStatus
AUSPending :: AgentUpdateStatus
AUSStaged :: AgentUpdateStatus
AUSStaging :: AgentUpdateStatus
AUSUpdated :: AgentUpdateStatus
AUSUpdating :: AgentUpdateStatus
data AssignPublicIP
Disabled :: AssignPublicIP
Enabled :: AssignPublicIP
data ClusterField
Statistics :: ClusterField
data Compatibility
CEC2 :: Compatibility
CFargate :: Compatibility
data Connectivity
Connected :: Connectivity
Disconnected :: Connectivity
data ContainerInstanceStatus
Active :: ContainerInstanceStatus
Draining :: ContainerInstanceStatus
data DesiredStatus
Pending :: DesiredStatus
Running :: DesiredStatus
Stopped :: DesiredStatus
data DeviceCgroupPermission
Mknod :: DeviceCgroupPermission
Read :: DeviceCgroupPermission
Write :: DeviceCgroupPermission
data HealthStatus
Healthy :: HealthStatus
Unhealthy :: HealthStatus
Unknown :: HealthStatus
data LaunchType
EC2 :: LaunchType
Fargate :: LaunchType
data LogDriver
AWSlogs :: LogDriver
Fluentd :: LogDriver
Gelf :: LogDriver
JSONFile :: LogDriver
Journald :: LogDriver
Splunk :: LogDriver
Syslog :: LogDriver
data NetworkMode
AWSvpc :: NetworkMode
Bridge :: NetworkMode
Host :: NetworkMode
None :: NetworkMode
data PlacementConstraintType
PCTDistinctInstance :: PlacementConstraintType
PCTMemberOf :: PlacementConstraintType
data PlacementStrategyType
Binpack :: PlacementStrategyType
Random :: PlacementStrategyType
Spread :: PlacementStrategyType
data SortOrder
Asc :: SortOrder
Desc :: SortOrder
data TargetType
ContainerInstance :: TargetType
data TaskDefinitionFamilyStatus
TDFSActive :: TaskDefinitionFamilyStatus
TDFSAll :: TaskDefinitionFamilyStatus
TDFSInactive :: TaskDefinitionFamilyStatus
data TaskDefinitionPlacementConstraintType
MemberOf :: TaskDefinitionPlacementConstraintType
data TaskDefinitionStatus
TDSActive :: TaskDefinitionStatus
TDSInactive :: TaskDefinitionStatus
data TransportProtocol
TCP :: TransportProtocol
Udp :: TransportProtocol
data UlimitName
CPU :: UlimitName
Core :: UlimitName
Data :: UlimitName
Fsize :: UlimitName
Locks :: UlimitName
Memlock :: UlimitName
Msgqueue :: UlimitName
Nice :: UlimitName
Nofile :: UlimitName
Nproc :: UlimitName
Rss :: UlimitName
Rtprio :: UlimitName
Rttime :: UlimitName
Sigpending :: UlimitName
Stack :: UlimitName

-- | An object representing the networking details for a task or service.
--   
--   <i>See:</i> <a>awsVPCConfiguration</a> smart constructor.
data AWSVPCConfiguration

-- | Creates a value of <a>AWSVPCConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avcSecurityGroups</a> - The security groups associated with the
--   task or service. If you do not specify a security group, the default
--   security group for the VPC is used. There is a limit of 5 security
--   groups able to be specified per AwsVpcConfiguration.</li>
--   <li><a>avcAssignPublicIP</a> - Whether the task's elastic network
--   interface receives a public IP address.</li>
--   <li><a>avcSubnets</a> - The subnets associated with the task or
--   service. There is a limit of 10 subnets able to be specified per
--   AwsVpcConfiguration.</li>
--   </ul>
awsVPCConfiguration :: AWSVPCConfiguration

-- | The security groups associated with the task or service. If you do not
--   specify a security group, the default security group for the VPC is
--   used. There is a limit of 5 security groups able to be specified per
--   AwsVpcConfiguration.
avcSecurityGroups :: Lens' AWSVPCConfiguration [Text]

-- | Whether the task's elastic network interface receives a public IP
--   address.
avcAssignPublicIP :: Lens' AWSVPCConfiguration (Maybe AssignPublicIP)

-- | The subnets associated with the task or service. There is a limit of
--   10 subnets able to be specified per AwsVpcConfiguration.
avcSubnets :: Lens' AWSVPCConfiguration [Text]

-- | An object representing a container instance or task attachment.
--   
--   <i>See:</i> <a>attachment</a> smart constructor.
data Attachment

-- | Creates a value of <a>Attachment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aStatus</a> - The status of the attachment. Valid values are
--   <tt>PRECREATED</tt> , <tt>CREATED</tt> , <tt>ATTACHING</tt> ,
--   <tt>ATTACHED</tt> , <tt>DETACHING</tt> , <tt>DETACHED</tt> , and
--   <tt>DELETED</tt> .</li>
--   <li><a>aDetails</a> - Details of the attachment. For Elastic Network
--   Interfaces, this includes the network interface ID, the MAC address,
--   the subnet ID, and the private IPv4 address.</li>
--   <li><a>aId</a> - The unique identifier for the attachment.</li>
--   <li><a>aType</a> - The type of the attachment, such as
--   <tt>ElasticNetworkInterface</tt> .</li>
--   </ul>
attachment :: Attachment

-- | The status of the attachment. Valid values are <tt>PRECREATED</tt> ,
--   <tt>CREATED</tt> , <tt>ATTACHING</tt> , <tt>ATTACHED</tt> ,
--   <tt>DETACHING</tt> , <tt>DETACHED</tt> , and <tt>DELETED</tt> .
aStatus :: Lens' Attachment (Maybe Text)

-- | Details of the attachment. For Elastic Network Interfaces, this
--   includes the network interface ID, the MAC address, the subnet ID, and
--   the private IPv4 address.
aDetails :: Lens' Attachment [KeyValuePair]

-- | The unique identifier for the attachment.
aId :: Lens' Attachment (Maybe Text)

-- | The type of the attachment, such as <tt>ElasticNetworkInterface</tt> .
aType :: Lens' Attachment (Maybe Text)

-- | An object representing a change in state for a task attachment.
--   
--   <i>See:</i> <a>attachmentStateChange</a> smart constructor.
data AttachmentStateChange

-- | Creates a value of <a>AttachmentStateChange</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ascAttachmentARN</a> - The Amazon Resource Name (ARN) of the
--   attachment.</li>
--   <li><a>ascStatus</a> - The status of the attachment.</li>
--   </ul>
attachmentStateChange :: Text -> Text -> AttachmentStateChange

-- | The Amazon Resource Name (ARN) of the attachment.
ascAttachmentARN :: Lens' AttachmentStateChange Text

-- | The status of the attachment.
ascStatus :: Lens' AttachmentStateChange Text

-- | An attribute is a name-value pair associated with an Amazon ECS
--   object. Attributes enable you to extend the Amazon ECS data model by
--   adding custom metadata to your resources. For more information, see
--   <a>Attributes</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
--   
--   <i>See:</i> <a>attribute</a> smart constructor.
data Attribute

-- | Creates a value of <a>Attribute</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aTargetId</a> - The ID of the target. You can specify the short
--   form ID for a resource or the full Amazon Resource Name (ARN).</li>
--   <li><a>aValue</a> - The value of the attribute. Up to 128 letters
--   (uppercase and lowercase), numbers, hyphens, underscores, periods, at
--   signs (@), forward slashes, colons, and spaces are allowed.</li>
--   <li><a>aTargetType</a> - The type of the target with which to attach
--   the attribute. This parameter is required if you use the short form ID
--   for a resource instead of the full ARN.</li>
--   <li><a>aName</a> - The name of the attribute. Up to 128 letters
--   (uppercase and lowercase), numbers, hyphens, underscores, and periods
--   are allowed.</li>
--   </ul>
attribute :: Text -> Attribute

-- | The ID of the target. You can specify the short form ID for a resource
--   or the full Amazon Resource Name (ARN).
aTargetId :: Lens' Attribute (Maybe Text)

-- | The value of the attribute. Up to 128 letters (uppercase and
--   lowercase), numbers, hyphens, underscores, periods, at signs (@),
--   forward slashes, colons, and spaces are allowed.
aValue :: Lens' Attribute (Maybe Text)

-- | The type of the target with which to attach the attribute. This
--   parameter is required if you use the short form ID for a resource
--   instead of the full ARN.
aTargetType :: Lens' Attribute (Maybe TargetType)

-- | The name of the attribute. Up to 128 letters (uppercase and
--   lowercase), numbers, hyphens, underscores, and periods are allowed.
aName :: Lens' Attribute Text

-- | A regional grouping of one or more container instances on which you
--   can run task requests. Each account receives a default cluster the
--   first time you use the Amazon ECS service, but you may also create
--   other clusters. Clusters may contain more than one instance type
--   simultaneously.
--   
--   <i>See:</i> <a>cluster</a> smart constructor.
data Cluster

-- | Creates a value of <a>Cluster</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cStatus</a> - The status of the cluster. The valid values are
--   <tt>ACTIVE</tt> or <tt>INACTIVE</tt> . <tt>ACTIVE</tt> indicates that
--   you can register container instances with the cluster and the
--   associated instances can accept tasks.</li>
--   <li><a>cClusterARN</a> - The Amazon Resource Name (ARN) that
--   identifies the cluster. The ARN contains the <tt>arn:aws:ecs</tt>
--   namespace, followed by the region of the cluster, the AWS account ID
--   of the cluster owner, the <tt>cluster</tt> namespace, and then the
--   cluster name. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>012345678910</i> :cluster/<i>test</i> </tt> ..</li>
--   <li><a>cRunningTasksCount</a> - The number of tasks in the cluster
--   that are in the <tt>RUNNING</tt> state.</li>
--   <li><a>cRegisteredContainerInstancesCount</a> - The number of
--   container instances registered into the cluster.</li>
--   <li><a>cPendingTasksCount</a> - The number of tasks in the cluster
--   that are in the <tt>PENDING</tt> state.</li>
--   <li><a>cClusterName</a> - A user-generated string that you use to
--   identify your cluster.</li>
--   <li><a>cStatistics</a> - Additional information about your clusters
--   that are separated by launch type, including: * runningEC2TasksCount *
--   RunningFargateTasksCount * pendingEC2TasksCount *
--   pendingFargateTasksCount * activeEC2ServiceCount *
--   activeFargateServiceCount * drainingEC2ServiceCount *
--   drainingFargateServiceCount</li>
--   <li><a>cActiveServicesCount</a> - The number of services that are
--   running on the cluster in an <tt>ACTIVE</tt> state. You can view these
--   services with <tt>ListServices</tt> .</li>
--   </ul>
cluster :: Cluster

-- | The status of the cluster. The valid values are <tt>ACTIVE</tt> or
--   <tt>INACTIVE</tt> . <tt>ACTIVE</tt> indicates that you can register
--   container instances with the cluster and the associated instances can
--   accept tasks.
cStatus :: Lens' Cluster (Maybe Text)

-- | The Amazon Resource Name (ARN) that identifies the cluster. The ARN
--   contains the <tt>arn:aws:ecs</tt> namespace, followed by the region of
--   the cluster, the AWS account ID of the cluster owner, the
--   <tt>cluster</tt> namespace, and then the cluster name. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>012345678910</i>
--   :cluster/<i>test</i> </tt> ..
cClusterARN :: Lens' Cluster (Maybe Text)

-- | The number of tasks in the cluster that are in the <tt>RUNNING</tt>
--   state.
cRunningTasksCount :: Lens' Cluster (Maybe Int)

-- | The number of container instances registered into the cluster.
cRegisteredContainerInstancesCount :: Lens' Cluster (Maybe Int)

-- | The number of tasks in the cluster that are in the <tt>PENDING</tt>
--   state.
cPendingTasksCount :: Lens' Cluster (Maybe Int)

-- | A user-generated string that you use to identify your cluster.
cClusterName :: Lens' Cluster (Maybe Text)

-- | Additional information about your clusters that are separated by
--   launch type, including: * runningEC2TasksCount *
--   RunningFargateTasksCount * pendingEC2TasksCount *
--   pendingFargateTasksCount * activeEC2ServiceCount *
--   activeFargateServiceCount * drainingEC2ServiceCount *
--   drainingFargateServiceCount
cStatistics :: Lens' Cluster [KeyValuePair]

-- | The number of services that are running on the cluster in an
--   <tt>ACTIVE</tt> state. You can view these services with
--   <tt>ListServices</tt> .
cActiveServicesCount :: Lens' Cluster (Maybe Int)

-- | A Docker container that is part of a task.
--   
--   <i>See:</i> <a>container</a> smart constructor.
data Container

-- | Creates a value of <a>Container</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cNetworkBindings</a> - The network bindings associated with the
--   container.</li>
--   <li><a>cContainerARN</a> - The Amazon Resource Name (ARN) of the
--   container.</li>
--   <li><a>cNetworkInterfaces</a> - The network interfaces associated with
--   the container.</li>
--   <li><a>cTaskARN</a> - The ARN of the task.</li>
--   <li><a>cLastStatus</a> - The last known status of the container.</li>
--   <li><a>cReason</a> - A short (255 max characters) human-readable
--   string to provide additional details about a running or stopped
--   container.</li>
--   <li><a>cName</a> - The name of the container.</li>
--   <li><a>cExitCode</a> - The exit code returned from the container.</li>
--   <li><a>cHealthStatus</a> - The health status of the container. If
--   health checks are not configured for this container in its task
--   definition, then it reports health status as <tt>UNKNOWN</tt> .</li>
--   </ul>
container :: Container

-- | The network bindings associated with the container.
cNetworkBindings :: Lens' Container [NetworkBinding]

-- | The Amazon Resource Name (ARN) of the container.
cContainerARN :: Lens' Container (Maybe Text)

-- | The network interfaces associated with the container.
cNetworkInterfaces :: Lens' Container [NetworkInterface]

-- | The ARN of the task.
cTaskARN :: Lens' Container (Maybe Text)

-- | The last known status of the container.
cLastStatus :: Lens' Container (Maybe Text)

-- | A short (255 max characters) human-readable string to provide
--   additional details about a running or stopped container.
cReason :: Lens' Container (Maybe Text)

-- | The name of the container.
cName :: Lens' Container (Maybe Text)

-- | The exit code returned from the container.
cExitCode :: Lens' Container (Maybe Int)

-- | The health status of the container. If health checks are not
--   configured for this container in its task definition, then it reports
--   health status as <tt>UNKNOWN</tt> .
cHealthStatus :: Lens' Container (Maybe HealthStatus)

-- | Container definitions are used in task definitions to describe the
--   different containers that are launched as part of a task.
--   
--   <i>See:</i> <a>containerDefinition</a> smart constructor.
data ContainerDefinition

-- | Creates a value of <a>ContainerDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdImage</a> - 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 either <tt><i>repository-url</i> /<i>image</i> :<i>tag</i> </tt>
--   or <tt><i>repository-url</i> /<i>image</i> </tt><i>digest</i> <tt> .
--   Up to 255 letters (uppercase and lowercase), numbers, hyphens,
--   underscores, colons, periods, forward slashes, and number signs are
--   allowed. This parameter maps to </tt>Image<tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   </tt>IMAGE<tt> parameter of <a>docker run</a> . * 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 are not propagated to already running
--   tasks. * Images in Amazon ECR repositories can be specified by either
--   using the full </tt>registry<i>repository:tag<tt> or
--   </tt>registry</i>repository<tt>digest</tt> . For example,
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a>:latest</tt>
--   or
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a></tt>sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE<tt>
--   . * Images in official repositories on Docker Hub use a single name
--   (for example, </tt>ubuntu<tt> or </tt>mongo<tt> ). * Images in other
--   repositories on Docker Hub are qualified with an organization name
--   (for example, </tt>amazon<i>amazon-ecs-agent<tt> ). * Images in other
--   online repositories are qualified further by a domain name (for
--   example, </tt>quay.io</i>assemblyline/ubuntu@ ).</li>
--   <li><a>cdCommand</a> - The command that is passed to the container.
--   This parameter maps to <tt>Cmd</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>COMMAND</tt>
--   parameter to <a>docker run</a> . For more information, see
--   <a>https://docs.docker.com/engine/reference/builder/#cmd</a> .</li>
--   <li><a>cdHostname</a> - The hostname to use for your container. This
--   parameter maps to <tt>Hostname</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--hostname</tt>
--   option to <a>docker run</a> .</li>
--   <li><a>cdDockerSecurityOptions</a> - A list of strings to provide
--   custom labels for SELinux and AppArmor multi-level security systems.
--   This field is not valid for containers in tasks using the Fargate
--   launch type. This parameter maps to <tt>SecurityOpt</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--security-opt</tt> option to <a>docker run</a> .</li>
--   <li><a>cdHealthCheck</a> - The health check command and associated
--   configuration parameters for the container. This parameter maps to
--   <tt>HealthCheck</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>HEALTHCHECK</tt> parameter of
--   <a>docker run</a> .</li>
--   <li><a>cdDisableNetworking</a> - When this parameter is true,
--   networking is disabled within the container. This parameter maps to
--   <tt>NetworkDisabled</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> .</li>
--   <li><a>cdVolumesFrom</a> - Data volumes to mount from another
--   container. This parameter maps to <tt>VolumesFrom</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--volumes-from</tt> option to <a>docker run</a> .</li>
--   <li><a>cdEnvironment</a> - The environment variables to pass to a
--   container. This parameter maps to <tt>Env</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--env</tt> option to <a>docker run</a> . <i>Important:</i> We do
--   not recommend using plaintext environment variables for sensitive
--   information, such as credential data.</li>
--   <li><a>cdEntryPoint</a> - <i>Important:</i> Early versions of the
--   Amazon ECS container agent do not properly handle <tt>entryPoint</tt>
--   parameters. If you have problems using <tt>entryPoint</tt> , update
--   your container agent or enter your commands and arguments as
--   <tt>command</tt> array items instead. The entry point that is passed
--   to the container. This parameter maps to <tt>Entrypoint</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--entrypoint</tt> option to <a>docker run</a> . For more
--   information, see
--   <a>https://docs.docker.com/engine/reference/builder/#entrypoint</a>
--   .</li>
--   <li><a>cdWorkingDirectory</a> - The working directory in which to run
--   commands inside the container. This parameter maps to
--   <tt>WorkingDir</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--workdir</tt> option to
--   <a>docker run</a> .</li>
--   <li><a>cdUlimits</a> - A list of <tt>ulimits</tt> to set in the
--   container. This parameter maps to <tt>Ulimits</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--ulimit</tt> option to <a>docker run</a> . Valid naming values
--   are displayed in the <a>Ulimit</a> 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: <tt>sudo docker version | grep "Server API version"</tt></li>
--   <li><a>cdPrivileged</a> - When this parameter is true, the container
--   is given elevated privileges on the host container instance (similar
--   to the <tt>root</tt> user). This parameter maps to <tt>Privileged</tt>
--   in the <a>Create a container</a> section of the <a>Docker Remote
--   API</a> and the <tt>--privileged</tt> option to <a>docker run</a>
--   .</li>
--   <li><a>cdPortMappings</a> - 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 <tt>awsvpc</tt> network mode, you should only specify the
--   <tt>containerPort</tt> . The <tt>hostPort</tt> can be left blank or it
--   must be the same value as the <tt>containerPort</tt> . Port mappings
--   on Windows use the <tt>NetNAT</tt> gateway address rather than
--   <tt>localhost</tt> . There is no loopback for port mappings on
--   Windows, so you cannot access a container's mapped port from the host
--   itself. This parameter maps to <tt>PortBindings</tt> in the <a>Create
--   a container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--publish</tt> option to <a>docker run</a> . If the network mode
--   of a task definition is set to <tt>none</tt> , then you can't specify
--   port mappings. If the network mode of a task definition is set to
--   <tt>host</tt> , then host ports must either be undefined or they must
--   match the container port in the port mapping.</li>
--   <li><a>cdDockerLabels</a> - A key<i>value map of labels to add to the
--   container. This parameter maps to <tt>Labels</tt> in the
--   &lt;https:</i><i>docs.docker.com</i>engine<i>reference</i>api<i>docker_remote_api_v1.27</i>#create-a-container
--   Create a container&gt; section of the <a>Docker Remote API</a> and the
--   <tt>--label</tt> option to <a>docker run</a> . 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: <tt>sudo docker version | grep "Server API version"</tt></li>
--   <li><a>cdExtraHosts</a> - A list of hostnames and IP address mappings
--   to append to the <tt><i>etc</i>hosts</tt> file on the container. If
--   using the Fargate launch type, this may be used to list non-Fargate
--   hosts you want the container to talk to. This parameter maps to
--   <tt>ExtraHosts</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--add-host</tt> option to
--   <a>docker run</a> .</li>
--   <li><a>cdMemory</a> - The hard limit (in MiB) of memory to present to
--   the container. If your container attempts to exceed the memory
--   specified here, the container is killed. This parameter maps to
--   <tt>Memory</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--memory</tt> option to <a>docker
--   run</a> . If your containers are part of a task using the Fargate
--   launch type, this field is optional and the only requirement is that
--   the total amount of memory reserved for all containers within a task
--   be lower than the task <tt>memory</tt> value. For containers that are
--   part of a task using the EC2 launch type, you must specify a non-zero
--   integer for one or both of <tt>memory</tt> or
--   <tt>memoryReservation</tt> in container definitions. If you specify
--   both, <tt>memory</tt> must be greater than <tt>memoryReservation</tt>
--   . If you specify <tt>memoryReservation</tt> , then that value is
--   subtracted from the available memory resources for the container
--   instance on which the container is placed; otherwise, the value of
--   <tt>memory</tt> is used. The Docker daemon reserves a minimum of 4 MiB
--   of memory for a container, so you should not specify fewer than 4 MiB
--   of memory for your containers.</li>
--   <li><a>cdUser</a> - The user name to use inside the container. This
--   parameter maps to <tt>User</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--user</tt> option
--   to <a>docker run</a> .</li>
--   <li><a>cdDnsSearchDomains</a> - A list of DNS search domains that are
--   presented to the container. This parameter maps to <tt>DnsSearch</tt>
--   in the <a>Create a container</a> section of the <a>Docker Remote
--   API</a> and the <tt>--dns-search</tt> option to <a>docker run</a>
--   .</li>
--   <li><a>cdLogConfiguration</a> - The log configuration specification
--   for the container. If using the Fargate launch type, the only
--   supported value is <tt>awslogs</tt> . This parameter maps to
--   <tt>LogConfig</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--log-driver</tt> option to
--   <a>docker run</a> . By default, containers use the same logging driver
--   that the Docker daemon uses; however the container may 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 <a>Configure logging drivers</a> in the
--   Docker documentation. 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: <tt>sudo docker
--   version | grep "Server API version"</tt></li>
--   <li><a>cdLinuxParameters</a> - Linux-specific modifications that are
--   applied to the container, such as Linux <a>KernelCapabilities</a>
--   .</li>
--   <li><a>cdName</a> - The name of a container. If you are linking
--   multiple containers together in a task definition, the <tt>name</tt>
--   of one container can be entered in the <tt>links</tt> of another
--   container to connect the containers. Up to 255 letters (uppercase and
--   lowercase), numbers, hyphens, and underscores are allowed. This
--   parameter maps to <tt>name</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--name</tt> option
--   to <a>docker run</a> .</li>
--   <li><a>cdDnsServers</a> - A list of DNS servers that are presented to
--   the container. This parameter maps to <tt>Dns</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--dns</tt> option to <a>docker run</a> .</li>
--   <li><a>cdMountPoints</a> - The mount points for data volumes in your
--   container. This parameter maps to <tt>Volumes</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--volume</tt> option to <a>docker run</a> . Windows containers can
--   mount whole directories on the same drive as <tt>&gt;
--   env:ProgramData</tt> . Windows containers cannot mount directories on
--   a different drive, and mount point cannot be across drives.</li>
--   <li><a>cdLinks</a> - The <tt>link</tt> parameter allows containers to
--   communicate with each other without the need for port mappings. Only
--   supported if the network mode of a task definition is set to
--   <tt>bridge</tt> . The <tt>name:internalName</tt> construct is
--   analogous to <tt>name:alias</tt> in Docker links. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. For more information about linking Docker containers, go to
--   <a>https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/</a>
--   . This parameter maps to <tt>Links</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--link</tt> option to <a>@docker run@</a> . <i>Important:</i>
--   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.</li>
--   <li><a>cdReadonlyRootFilesystem</a> - When this parameter is true, the
--   container is given read-only access to its root file system. This
--   parameter maps to <tt>ReadonlyRootfs</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--read-only</tt> option to <tt>docker run</tt> .</li>
--   <li><a>cdEssential</a> - If the <tt>essential</tt> parameter of a
--   container is marked as <tt>true</tt> , and that container fails or
--   stops for any reason, all other containers that are part of the task
--   are stopped. If the <tt>essential</tt> parameter of a container is
--   marked as <tt>false</tt> , then its failure does not 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 is composed of multiple
--   containers, you should group containers that are used for a common
--   purpose into components, and separate the different components into
--   multiple task definitions. For more information, see <a>Application
--   Architecture</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>cdCpu</a> - The number of <tt>cpu</tt> units reserved for the
--   container. This parameter maps to <tt>CpuShares</tt> in the <a>Create
--   a container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--cpu-shares</tt> option to <a>docker run</a> . 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 <tt>cpu</tt>
--   value. 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 is 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 would be guaranteed a minimum of
--   512 CPU units when needed, and each container could float to higher
--   CPU usage if the other container was not using it, but if both tasks
--   were 100% active all of the time, they would be limited to 512 CPU
--   units. 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 is 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 would be guaranteed a minimum of
--   512 CPU units when needed, and each container could float to higher
--   CPU usage if the other container was not using it, but 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 <a>CPU
--   share constraint</a> in the Docker documentation. The minimum valid
--   CPU share value that the Linux kernel allows is 2; however, the CPU
--   parameter is not 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: *
--   <b>Agent versions less than or equal to 1.1.0:</b> 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 2 CPU shares. * <b>Agent versions greater than or
--   equal to 1.2.0:</b> 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 is described in the task
--   definition.</li>
--   <li><a>cdMemoryReservation</a> - 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 <tt>memory</tt>
--   parameter (if applicable), or all of the available memory on the
--   container instance, whichever comes first. This parameter maps to
--   <tt>MemoryReservation</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--memory-reservation</tt>
--   option to <a>docker run</a> . You must specify a non-zero integer for
--   one or both of <tt>memory</tt> or <tt>memoryReservation</tt> in
--   container definitions. If you specify both, <tt>memory</tt> must be
--   greater than <tt>memoryReservation</tt> . If you specify
--   <tt>memoryReservation</tt> , then that value is subtracted from the
--   available memory resources for the container instance on which the
--   container is placed; otherwise, the value of <tt>memory</tt> 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 <tt>memoryReservation</tt> of 128 MiB, and a
--   <tt>memory</tt> 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 daemon reserves
--   a minimum of 4 MiB of memory for a container, so you should not
--   specify fewer than 4 MiB of memory for your containers.</li>
--   </ul>
containerDefinition :: ContainerDefinition

-- | 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 either
--   <tt><i>repository-url</i> /<i>image</i> :<i>tag</i> </tt> or
--   <tt><i>repository-url</i> /<i>image</i> </tt><i>digest</i> <tt> . Up
--   to 255 letters (uppercase and lowercase), numbers, hyphens,
--   underscores, colons, periods, forward slashes, and number signs are
--   allowed. This parameter maps to </tt>Image<tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   </tt>IMAGE<tt> parameter of <a>docker run</a> . * 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 are not propagated to already running
--   tasks. * Images in Amazon ECR repositories can be specified by either
--   using the full </tt>registry<i>repository:tag<tt> or
--   </tt>registry</i>repository<tt>digest</tt> . For example,
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a>:latest</tt>
--   or
--   <tt>012345678910.dkr.ecr.<a>region-name</a>.amazonaws.com/<a>repository-name</a></tt>sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE<tt>
--   . * Images in official repositories on Docker Hub use a single name
--   (for example, </tt>ubuntu<tt> or </tt>mongo<tt> ). * Images in other
--   repositories on Docker Hub are qualified with an organization name
--   (for example, </tt>amazon<i>amazon-ecs-agent<tt> ). * Images in other
--   online repositories are qualified further by a domain name (for
--   example, </tt>quay.io</i>assemblyline/ubuntu@ ).
cdImage :: Lens' ContainerDefinition (Maybe Text)

-- | The command that is passed to the container. This parameter maps to
--   <tt>Cmd</tt> in the <a>Create a container</a> section of the <a>Docker
--   Remote API</a> and the <tt>COMMAND</tt> parameter to <a>docker run</a>
--   . For more information, see
--   <a>https://docs.docker.com/engine/reference/builder/#cmd</a> .
cdCommand :: Lens' ContainerDefinition [Text]

-- | The hostname to use for your container. This parameter maps to
--   <tt>Hostname</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--hostname</tt> option to
--   <a>docker run</a> .
cdHostname :: Lens' ContainerDefinition (Maybe Text)

-- | A list of strings to provide custom labels for SELinux and AppArmor
--   multi-level security systems. This field is not valid for containers
--   in tasks using the Fargate launch type. This parameter maps to
--   <tt>SecurityOpt</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--security-opt</tt> option to
--   <a>docker run</a> .
cdDockerSecurityOptions :: Lens' ContainerDefinition [Text]

-- | The health check command and associated configuration parameters for
--   the container. This parameter maps to <tt>HealthCheck</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>HEALTHCHECK</tt> parameter of <a>docker run</a> .
cdHealthCheck :: Lens' ContainerDefinition (Maybe HealthCheck)

-- | When this parameter is true, networking is disabled within the
--   container. This parameter maps to <tt>NetworkDisabled</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> .
cdDisableNetworking :: Lens' ContainerDefinition (Maybe Bool)

-- | Data volumes to mount from another container. This parameter maps to
--   <tt>VolumesFrom</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--volumes-from</tt> option to
--   <a>docker run</a> .
cdVolumesFrom :: Lens' ContainerDefinition [VolumeFrom]

-- | The environment variables to pass to a container. This parameter maps
--   to <tt>Env</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--env</tt> option to <a>docker
--   run</a> . <i>Important:</i> We do not recommend using plaintext
--   environment variables for sensitive information, such as credential
--   data.
cdEnvironment :: Lens' ContainerDefinition [KeyValuePair]

-- | <i>Important:</i> Early versions of the Amazon ECS container agent do
--   not properly handle <tt>entryPoint</tt> parameters. If you have
--   problems using <tt>entryPoint</tt> , update your container agent or
--   enter your commands and arguments as <tt>command</tt> array items
--   instead. The entry point that is passed to the container. This
--   parameter maps to <tt>Entrypoint</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--entrypoint</tt>
--   option to <a>docker run</a> . For more information, see
--   <a>https://docs.docker.com/engine/reference/builder/#entrypoint</a> .
cdEntryPoint :: Lens' ContainerDefinition [Text]

-- | The working directory in which to run commands inside the container.
--   This parameter maps to <tt>WorkingDir</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--workdir</tt> option to <a>docker run</a> .
cdWorkingDirectory :: Lens' ContainerDefinition (Maybe Text)

-- | A list of <tt>ulimits</tt> to set in the container. This parameter
--   maps to <tt>Ulimits</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--ulimit</tt> option to
--   <a>docker run</a> . Valid naming values are displayed in the
--   <a>Ulimit</a> 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: <tt>sudo docker
--   version | grep "Server API version"</tt>
cdUlimits :: Lens' ContainerDefinition [Ulimit]

-- | When this parameter is true, the container is given elevated
--   privileges on the host container instance (similar to the
--   <tt>root</tt> user). This parameter maps to <tt>Privileged</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--privileged</tt> option to <a>docker run</a> .
cdPrivileged :: Lens' ContainerDefinition (Maybe Bool)

-- | 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 <tt>awsvpc</tt>
--   network mode, you should only specify the <tt>containerPort</tt> . The
--   <tt>hostPort</tt> can be left blank or it must be the same value as
--   the <tt>containerPort</tt> . Port mappings on Windows use the
--   <tt>NetNAT</tt> gateway address rather than <tt>localhost</tt> . There
--   is no loopback for port mappings on Windows, so you cannot access a
--   container's mapped port from the host itself. This parameter maps to
--   <tt>PortBindings</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--publish</tt> option to
--   <a>docker run</a> . If the network mode of a task definition is set to
--   <tt>none</tt> , then you can't specify port mappings. If the network
--   mode of a task definition is set to <tt>host</tt> , then host ports
--   must either be undefined or they must match the container port in the
--   port mapping.
cdPortMappings :: Lens' ContainerDefinition [PortMapping]

-- | A key<i>value map of labels to add to the container. This parameter
--   maps to <tt>Labels</tt> in the
--   &lt;https:</i><i>docs.docker.com</i>engine<i>reference</i>api<i>docker_remote_api_v1.27</i>#create-a-container
--   Create a container&gt; section of the <a>Docker Remote API</a> and the
--   <tt>--label</tt> option to <a>docker run</a> . 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: <tt>sudo docker version | grep "Server API version"</tt>
cdDockerLabels :: Lens' ContainerDefinition (HashMap Text Text)

-- | A list of hostnames and IP address mappings to append to the
--   <tt><i>etc</i>hosts</tt> file on the container. If using the Fargate
--   launch type, this may be used to list non-Fargate hosts you want the
--   container to talk to. This parameter maps to <tt>ExtraHosts</tt> in
--   the <a>Create a container</a> section of the <a>Docker Remote API</a>
--   and the <tt>--add-host</tt> option to <a>docker run</a> .
cdExtraHosts :: Lens' ContainerDefinition [HostEntry]

-- | The hard limit (in MiB) of memory to present to the container. If your
--   container attempts to exceed the memory specified here, the container
--   is killed. This parameter maps to <tt>Memory</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--memory</tt> option to <a>docker run</a> . If your containers are
--   part of a task using the Fargate launch type, this field is optional
--   and the only requirement is that the total amount of memory reserved
--   for all containers within a task be lower than the task
--   <tt>memory</tt> value. For containers that are part of a task using
--   the EC2 launch type, you must specify a non-zero integer for one or
--   both of <tt>memory</tt> or <tt>memoryReservation</tt> in container
--   definitions. If you specify both, <tt>memory</tt> must be greater than
--   <tt>memoryReservation</tt> . If you specify <tt>memoryReservation</tt>
--   , then that value is subtracted from the available memory resources
--   for the container instance on which the container is placed;
--   otherwise, the value of <tt>memory</tt> is used. The Docker daemon
--   reserves a minimum of 4 MiB of memory for a container, so you should
--   not specify fewer than 4 MiB of memory for your containers.
cdMemory :: Lens' ContainerDefinition (Maybe Int)

-- | The user name to use inside the container. This parameter maps to
--   <tt>User</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--user</tt> option to <a>docker
--   run</a> .
cdUser :: Lens' ContainerDefinition (Maybe Text)

-- | A list of DNS search domains that are presented to the container. This
--   parameter maps to <tt>DnsSearch</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--dns-search</tt>
--   option to <a>docker run</a> .
cdDnsSearchDomains :: Lens' ContainerDefinition [Text]

-- | The log configuration specification for the container. If using the
--   Fargate launch type, the only supported value is <tt>awslogs</tt> .
--   This parameter maps to <tt>LogConfig</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--log-driver</tt> option to <a>docker run</a> . By default,
--   containers use the same logging driver that the Docker daemon uses;
--   however the container may 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 <a>Configure logging drivers</a> in the Docker
--   documentation. 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: <tt>sudo docker
--   version | grep "Server API version"</tt>
cdLogConfiguration :: Lens' ContainerDefinition (Maybe LogConfiguration)

-- | Linux-specific modifications that are applied to the container, such
--   as Linux <a>KernelCapabilities</a> .
cdLinuxParameters :: Lens' ContainerDefinition (Maybe LinuxParameters)

-- | The name of a container. If you are linking multiple containers
--   together in a task definition, the <tt>name</tt> of one container can
--   be entered in the <tt>links</tt> of another container to connect the
--   containers. Up to 255 letters (uppercase and lowercase), numbers,
--   hyphens, and underscores are allowed. This parameter maps to
--   <tt>name</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--name</tt> option to <a>docker
--   run</a> .
cdName :: Lens' ContainerDefinition (Maybe Text)

-- | A list of DNS servers that are presented to the container. This
--   parameter maps to <tt>Dns</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--dns</tt> option
--   to <a>docker run</a> .
cdDnsServers :: Lens' ContainerDefinition [Text]

-- | The mount points for data volumes in your container. This parameter
--   maps to <tt>Volumes</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--volume</tt> option to
--   <a>docker run</a> . Windows containers can mount whole directories on
--   the same drive as <tt>&gt; env:ProgramData</tt> . Windows containers
--   cannot mount directories on a different drive, and mount point cannot
--   be across drives.
cdMountPoints :: Lens' ContainerDefinition [MountPoint]

-- | The <tt>link</tt> parameter allows containers to communicate with each
--   other without the need for port mappings. Only supported if the
--   network mode of a task definition is set to <tt>bridge</tt> . The
--   <tt>name:internalName</tt> construct is analogous to
--   <tt>name:alias</tt> in Docker links. Up to 255 letters (uppercase and
--   lowercase), numbers, hyphens, and underscores are allowed. For more
--   information about linking Docker containers, go to
--   <a>https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/</a>
--   . This parameter maps to <tt>Links</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--link</tt> option to <a>@docker run@</a> . <i>Important:</i>
--   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.
cdLinks :: Lens' ContainerDefinition [Text]

-- | When this parameter is true, the container is given read-only access
--   to its root file system. This parameter maps to
--   <tt>ReadonlyRootfs</tt> in the <a>Create a container</a> section of
--   the <a>Docker Remote API</a> and the <tt>--read-only</tt> option to
--   <tt>docker run</tt> .
cdReadonlyRootFilesystem :: Lens' ContainerDefinition (Maybe Bool)

-- | If the <tt>essential</tt> parameter of a container is marked as
--   <tt>true</tt> , and that container fails or stops for any reason, all
--   other containers that are part of the task are stopped. If the
--   <tt>essential</tt> parameter of a container is marked as
--   <tt>false</tt> , then its failure does not 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 is composed of multiple
--   containers, you should group containers that are used for a common
--   purpose into components, and separate the different components into
--   multiple task definitions. For more information, see <a>Application
--   Architecture</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
cdEssential :: Lens' ContainerDefinition (Maybe Bool)

-- | The number of <tt>cpu</tt> units reserved for the container. This
--   parameter maps to <tt>CpuShares</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--cpu-shares</tt>
--   option to <a>docker run</a> . 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 <tt>cpu</tt> value. 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 is 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 would be
--   guaranteed a minimum of 512 CPU units when needed, and each container
--   could float to higher CPU usage if the other container was not using
--   it, but if both tasks were 100% active all of the time, they would be
--   limited to 512 CPU units. 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 is 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 would be guaranteed a minimum of
--   512 CPU units when needed, and each container could float to higher
--   CPU usage if the other container was not using it, but 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 <a>CPU
--   share constraint</a> in the Docker documentation. The minimum valid
--   CPU share value that the Linux kernel allows is 2; however, the CPU
--   parameter is not 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: *
--   <b>Agent versions less than or equal to 1.1.0:</b> 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 2 CPU shares. * <b>Agent versions greater than or
--   equal to 1.2.0:</b> 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 is described in the task
--   definition.
cdCpu :: Lens' ContainerDefinition (Maybe Int)

-- | 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 <tt>memory</tt> parameter (if applicable), or all
--   of the available memory on the container instance, whichever comes
--   first. This parameter maps to <tt>MemoryReservation</tt> in the
--   <a>Create a container</a> section of the <a>Docker Remote API</a> and
--   the <tt>--memory-reservation</tt> option to <a>docker run</a> . You
--   must specify a non-zero integer for one or both of <tt>memory</tt> or
--   <tt>memoryReservation</tt> in container definitions. If you specify
--   both, <tt>memory</tt> must be greater than <tt>memoryReservation</tt>
--   . If you specify <tt>memoryReservation</tt> , then that value is
--   subtracted from the available memory resources for the container
--   instance on which the container is placed; otherwise, the value of
--   <tt>memory</tt> 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 <tt>memoryReservation</tt> of 128
--   MiB, and a <tt>memory</tt> 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
--   daemon reserves a minimum of 4 MiB of memory for a container, so you
--   should not specify fewer than 4 MiB of memory for your containers.
cdMemoryReservation :: Lens' ContainerDefinition (Maybe Int)

-- | An EC2 instance that is running the Amazon ECS agent and has been
--   registered with a cluster.
--   
--   <i>See:</i> <a>containerInstance</a> smart constructor.
data ContainerInstance

-- | Creates a value of <a>ContainerInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ciStatus</a> - The status of the container instance. The valid
--   values are <tt>ACTIVE</tt> , <tt>INACTIVE</tt> , or <tt>DRAINING</tt>
--   . <tt>ACTIVE</tt> indicates that the container instance can accept
--   tasks. <tt>DRAINING</tt> indicates that new tasks are not placed on
--   the container instance and any service tasks running on the container
--   instance are removed if possible. For more information, see
--   <a>Container Instance Draining</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .</li>
--   <li><a>ciAttachments</a> - The Elastic Network Interfaces associated
--   with the container instance.</li>
--   <li><a>ciRunningTasksCount</a> - The number of tasks on the container
--   instance that are in the <tt>RUNNING</tt> status.</li>
--   <li><a>ciRemainingResources</a> - For CPU and memory resource types,
--   this parameter describes the remaining CPU and memory on the that has
--   not already been allocated to tasks (and is therefore available for
--   new tasks). For port resource types, this parameter describes the
--   ports that were reserved by the Amazon ECS container agent (at
--   instance registration time) and any task containers that have reserved
--   port mappings on the host (with the <tt>host</tt> or <tt>bridge</tt>
--   network mode). Any port that is not specified here is available for
--   new tasks.</li>
--   <li><a>ciEc2InstanceId</a> - The EC2 instance ID of the container
--   instance.</li>
--   <li><a>ciContainerInstanceARN</a> - The Amazon Resource Name (ARN) of
--   the container instance. The ARN contains the <tt>arn:aws:ecs</tt>
--   namespace, followed by the region of the container instance, the AWS
--   account ID of the container instance owner, the
--   <tt>container-instance</tt> namespace, and then the container instance
--   ID. For example, <tt>arn:aws:ecs:<i>region</i> :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .</li>
--   <li><a>ciAgentConnected</a> - This parameter returns <tt>true</tt> if
--   the agent is connected to Amazon ECS. Registered instances with an
--   agent that may be unhealthy or stopped return <tt>false</tt> .
--   Instances without a connected agent can't accept placement
--   requests.</li>
--   <li><a>ciVersionInfo</a> - The version information for the Amazon ECS
--   container agent and Docker daemon running on the container
--   instance.</li>
--   <li><a>ciAgentUpdateStatus</a> - The status of the most recent agent
--   update. If an update has never been requested, this value is
--   <tt>NULL</tt> .</li>
--   <li><a>ciAttributes</a> - The attributes set for the container
--   instance, either by the Amazon ECS container agent at instance
--   registration or manually with the <tt>PutAttributes</tt>
--   operation.</li>
--   <li><a>ciVersion</a> - The version counter for the container instance.
--   Every time a container instance experiences a change that triggers a
--   CloudWatch event, the version counter is incremented. If you are
--   replicating your Amazon ECS container instance state with CloudWatch
--   Events, you can compare the version of a container instance reported
--   by the Amazon ECS APIs with the version reported in CloudWatch Events
--   for the container instance (inside the <tt>detail</tt> object) to
--   verify that the version in your event stream is current.</li>
--   <li><a>ciPendingTasksCount</a> - The number of tasks on the container
--   instance that are in the <tt>PENDING</tt> status.</li>
--   <li><a>ciRegisteredAt</a> - The Unix time stamp for when the container
--   instance was registered.</li>
--   <li><a>ciRegisteredResources</a> - For CPU and memory resource types,
--   this parameter describes the amount of each resource that was
--   available on the container instance when the container agent
--   registered it with Amazon ECS; this value represents the total amount
--   of CPU and memory that can be allocated on this container instance to
--   tasks. For port resource types, this parameter describes the ports
--   that were reserved by the Amazon ECS container agent when it
--   registered the container instance with Amazon ECS.</li>
--   </ul>
containerInstance :: ContainerInstance

-- | The status of the container instance. The valid values are
--   <tt>ACTIVE</tt> , <tt>INACTIVE</tt> , or <tt>DRAINING</tt> .
--   <tt>ACTIVE</tt> indicates that the container instance can accept
--   tasks. <tt>DRAINING</tt> indicates that new tasks are not placed on
--   the container instance and any service tasks running on the container
--   instance are removed if possible. For more information, see
--   <a>Container Instance Draining</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .
ciStatus :: Lens' ContainerInstance (Maybe Text)

-- | The Elastic Network Interfaces associated with the container instance.
ciAttachments :: Lens' ContainerInstance [Attachment]

-- | The number of tasks on the container instance that are in the
--   <tt>RUNNING</tt> status.
ciRunningTasksCount :: Lens' ContainerInstance (Maybe Int)

-- | For CPU and memory resource types, this parameter describes the
--   remaining CPU and memory on the that has not already been allocated to
--   tasks (and is therefore available for new tasks). For port resource
--   types, this parameter describes the ports that were reserved by the
--   Amazon ECS container agent (at instance registration time) and any
--   task containers that have reserved port mappings on the host (with the
--   <tt>host</tt> or <tt>bridge</tt> network mode). Any port that is not
--   specified here is available for new tasks.
ciRemainingResources :: Lens' ContainerInstance [Resource]

-- | The EC2 instance ID of the container instance.
ciEc2InstanceId :: Lens' ContainerInstance (Maybe Text)

-- | The Amazon Resource Name (ARN) of the container instance. The ARN
--   contains the <tt>arn:aws:ecs</tt> namespace, followed by the region of
--   the container instance, the AWS account ID of the container instance
--   owner, the <tt>container-instance</tt> namespace, and then the
--   container instance ID. For example, <tt>arn:aws:ecs:<i>region</i>
--   :<i>aws_account_id</i>
--   :container-instance/<i>container_instance_ID</i> </tt> .
ciContainerInstanceARN :: Lens' ContainerInstance (Maybe Text)

-- | This parameter returns <tt>true</tt> if the agent is connected to
--   Amazon ECS. Registered instances with an agent that may be unhealthy
--   or stopped return <tt>false</tt> . Instances without a connected agent
--   can't accept placement requests.
ciAgentConnected :: Lens' ContainerInstance (Maybe Bool)

-- | The version information for the Amazon ECS container agent and Docker
--   daemon running on the container instance.
ciVersionInfo :: Lens' ContainerInstance (Maybe VersionInfo)

-- | The status of the most recent agent update. If an update has never
--   been requested, this value is <tt>NULL</tt> .
ciAgentUpdateStatus :: Lens' ContainerInstance (Maybe AgentUpdateStatus)

-- | The attributes set for the container instance, either by the Amazon
--   ECS container agent at instance registration or manually with the
--   <tt>PutAttributes</tt> operation.
ciAttributes :: Lens' ContainerInstance [Attribute]

-- | The version counter for the container instance. Every time a container
--   instance experiences a change that triggers a CloudWatch event, the
--   version counter is incremented. If you are replicating your Amazon ECS
--   container instance state with CloudWatch Events, you can compare the
--   version of a container instance reported by the Amazon ECS APIs with
--   the version reported in CloudWatch Events for the container instance
--   (inside the <tt>detail</tt> object) to verify that the version in your
--   event stream is current.
ciVersion :: Lens' ContainerInstance (Maybe Integer)

-- | The number of tasks on the container instance that are in the
--   <tt>PENDING</tt> status.
ciPendingTasksCount :: Lens' ContainerInstance (Maybe Int)

-- | The Unix time stamp for when the container instance was registered.
ciRegisteredAt :: Lens' ContainerInstance (Maybe UTCTime)

-- | For CPU and memory resource types, this parameter describes the amount
--   of each resource that was available on the container instance when the
--   container agent registered it with Amazon ECS; this value represents
--   the total amount of CPU and memory that can be allocated on this
--   container instance to tasks. For port resource types, this parameter
--   describes the ports that were reserved by the Amazon ECS container
--   agent when it registered the container instance with Amazon ECS.
ciRegisteredResources :: Lens' ContainerInstance [Resource]

-- | The overrides that should be sent to a container.
--   
--   <i>See:</i> <a>containerOverride</a> smart constructor.
data ContainerOverride

-- | Creates a value of <a>ContainerOverride</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>coCommand</a> - The command to send to the container that
--   overrides the default command from the Docker image or the task
--   definition. You must also specify a container name.</li>
--   <li><a>coEnvironment</a> - The environment variables to send to the
--   container. You can add new environment variables, which are added to
--   the container at launch, or you can override the existing environment
--   variables from the Docker image or the task definition. You must also
--   specify a container name.</li>
--   <li><a>coMemory</a> - The hard limit (in MiB) of memory to present to
--   the container, instead of the default value from the task definition.
--   If your container attempts to exceed the memory specified here, the
--   container is killed. You must also specify a container name.</li>
--   <li><a>coName</a> - The name of the container that receives the
--   override. This parameter is required if any override is
--   specified.</li>
--   <li><a>coCpu</a> - The number of <tt>cpu</tt> units reserved for the
--   container, instead of the default value from the task definition. You
--   must also specify a container name.</li>
--   <li><a>coMemoryReservation</a> - The soft limit (in MiB) of memory to
--   reserve for the container, instead of the default value from the task
--   definition. You must also specify a container name.</li>
--   </ul>
containerOverride :: ContainerOverride

-- | The command to send to the container that overrides the default
--   command from the Docker image or the task definition. You must also
--   specify a container name.
coCommand :: Lens' ContainerOverride [Text]

-- | The environment variables to send to the container. You can add new
--   environment variables, which are added to the container at launch, or
--   you can override the existing environment variables from the Docker
--   image or the task definition. You must also specify a container name.
coEnvironment :: Lens' ContainerOverride [KeyValuePair]

-- | The hard limit (in MiB) of memory to present to the container, instead
--   of the default value from the task definition. If your container
--   attempts to exceed the memory specified here, the container is killed.
--   You must also specify a container name.
coMemory :: Lens' ContainerOverride (Maybe Int)

-- | The name of the container that receives the override. This parameter
--   is required if any override is specified.
coName :: Lens' ContainerOverride (Maybe Text)

-- | The number of <tt>cpu</tt> units reserved for the container, instead
--   of the default value from the task definition. You must also specify a
--   container name.
coCpu :: Lens' ContainerOverride (Maybe Int)

-- | The soft limit (in MiB) of memory to reserve for the container,
--   instead of the default value from the task definition. You must also
--   specify a container name.
coMemoryReservation :: Lens' ContainerOverride (Maybe Int)

-- | Details on a service within a cluster
--   
--   <i>See:</i> <a>containerService</a> smart constructor.
data ContainerService

-- | Creates a value of <a>ContainerService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csRunningCount</a> - The number of tasks in the cluster that
--   are in the <tt>RUNNING</tt> state.</li>
--   <li><a>csStatus</a> - The status of the service. The valid values are
--   <tt>ACTIVE</tt> , <tt>DRAINING</tt> , or <tt>INACTIVE</tt> .</li>
--   <li><a>csClusterARN</a> - The Amazon Resource Name (ARN) of the
--   cluster that hosts the service.</li>
--   <li><a>csCreatedAt</a> - The Unix time stamp for when the service was
--   created.</li>
--   <li><a>csPlatformVersion</a> - The platform version on which your task
--   is running. For more information, see <a>AWS Fargate Platform
--   Versions</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>csDesiredCount</a> - The desired number of instantiations of
--   the task definition to keep running on the service. This value is
--   specified when the service is created with <tt>CreateService</tt> ,
--   and it can be modified with <tt>UpdateService</tt> .</li>
--   <li><a>csLoadBalancers</a> - A list of Elastic Load Balancing load
--   balancer objects, containing the load balancer name, the container
--   name (as it appears in a container definition), and the container port
--   to access from the load balancer.</li>
--   <li><a>csPendingCount</a> - The number of tasks in the cluster that
--   are in the <tt>PENDING</tt> state.</li>
--   <li><a>csPlacementConstraints</a> - The placement constraints for the
--   tasks in the service.</li>
--   <li><a>csEvents</a> - The event stream for your service. A maximum of
--   100 of the latest events are displayed.</li>
--   <li><a>csPlacementStrategy</a> - The placement strategy that
--   determines how tasks for the service are placed.</li>
--   <li><a>csDeployments</a> - The current state of deployments for the
--   service.</li>
--   <li><a>csServiceName</a> - The name of your service. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. Service names must be unique within a cluster, but you can
--   have similarly named services in multiple clusters within a region or
--   across multiple regions.</li>
--   <li><a>csLaunchType</a> - The launch type on which your service is
--   running.</li>
--   <li><a>csServiceARN</a> - The ARN that identifies the service. The ARN
--   contains the <tt>arn:aws:ecs</tt> namespace, followed by the region of
--   the service, the AWS account ID of the service owner, the
--   <tt>service</tt> namespace, and then the service name. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>012345678910</i>
--   :service/<i>my-service</i> </tt> .</li>
--   <li><a>csTaskDefinition</a> - The task definition to use for tasks in
--   the service. This value is specified when the service is created with
--   <tt>CreateService</tt> , and it can be modified with
--   <tt>UpdateService</tt> .</li>
--   <li><a>csHealthCheckGracePeriodSeconds</a> - The period of time, in
--   seconds, that the Amazon ECS service scheduler ignores unhealthy
--   Elastic Load Balancing target health checks after a task has first
--   started.</li>
--   <li><a>csNetworkConfiguration</a> - The VPC subnet and security group
--   configuration for tasks that receive their own Elastic Network
--   Interface by using the <tt>awsvpc</tt> networking mode.</li>
--   <li><a>csServiceRegistries</a> -</li>
--   <li><a>csRoleARN</a> - The ARN of the IAM role associated with the
--   service that allows the Amazon ECS container agent to register
--   container instances with an Elastic Load Balancing load balancer.</li>
--   <li><a>csDeploymentConfiguration</a> - Optional deployment parameters
--   that control how many tasks run during the deployment and the ordering
--   of stopping and starting tasks.</li>
--   </ul>
containerService :: ContainerService

-- | The number of tasks in the cluster that are in the <tt>RUNNING</tt>
--   state.
csRunningCount :: Lens' ContainerService (Maybe Int)

-- | The status of the service. The valid values are <tt>ACTIVE</tt> ,
--   <tt>DRAINING</tt> , or <tt>INACTIVE</tt> .
csStatus :: Lens' ContainerService (Maybe Text)

-- | The Amazon Resource Name (ARN) of the cluster that hosts the service.
csClusterARN :: Lens' ContainerService (Maybe Text)

-- | The Unix time stamp for when the service was created.
csCreatedAt :: Lens' ContainerService (Maybe UTCTime)

-- | The platform version on which your task is running. For more
--   information, see <a>AWS Fargate Platform Versions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
csPlatformVersion :: Lens' ContainerService (Maybe Text)

-- | The desired number of instantiations of the task definition to keep
--   running on the service. This value is specified when the service is
--   created with <tt>CreateService</tt> , and it can be modified with
--   <tt>UpdateService</tt> .
csDesiredCount :: Lens' ContainerService (Maybe Int)

-- | A list of Elastic Load Balancing load balancer objects, containing the
--   load balancer name, the container name (as it appears in a container
--   definition), and the container port to access from the load balancer.
csLoadBalancers :: Lens' ContainerService [LoadBalancer]

-- | The number of tasks in the cluster that are in the <tt>PENDING</tt>
--   state.
csPendingCount :: Lens' ContainerService (Maybe Int)

-- | The placement constraints for the tasks in the service.
csPlacementConstraints :: Lens' ContainerService [PlacementConstraint]

-- | The event stream for your service. A maximum of 100 of the latest
--   events are displayed.
csEvents :: Lens' ContainerService [ServiceEvent]

-- | The placement strategy that determines how tasks for the service are
--   placed.
csPlacementStrategy :: Lens' ContainerService [PlacementStrategy]

-- | The current state of deployments for the service.
csDeployments :: Lens' ContainerService [Deployment]

-- | The name of your service. Up to 255 letters (uppercase and lowercase),
--   numbers, hyphens, and underscores are allowed. Service names must be
--   unique within a cluster, but you can have similarly named services in
--   multiple clusters within a region or across multiple regions.
csServiceName :: Lens' ContainerService (Maybe Text)

-- | The launch type on which your service is running.
csLaunchType :: Lens' ContainerService (Maybe LaunchType)

-- | The ARN that identifies the service. The ARN contains the
--   <tt>arn:aws:ecs</tt> namespace, followed by the region of the service,
--   the AWS account ID of the service owner, the <tt>service</tt>
--   namespace, and then the service name. For example,
--   <tt>arn:aws:ecs:<i>region</i> :<i>012345678910</i>
--   :service/<i>my-service</i> </tt> .
csServiceARN :: Lens' ContainerService (Maybe Text)

-- | The task definition to use for tasks in the service. This value is
--   specified when the service is created with <tt>CreateService</tt> ,
--   and it can be modified with <tt>UpdateService</tt> .
csTaskDefinition :: Lens' ContainerService (Maybe Text)

-- | The period of time, in seconds, that the Amazon ECS service scheduler
--   ignores unhealthy Elastic Load Balancing target health checks after a
--   task has first started.
csHealthCheckGracePeriodSeconds :: Lens' ContainerService (Maybe Int)

-- | The VPC subnet and security group configuration for tasks that receive
--   their own Elastic Network Interface by using the <tt>awsvpc</tt>
--   networking mode.
csNetworkConfiguration :: Lens' ContainerService (Maybe NetworkConfiguration)

csServiceRegistries :: Lens' ContainerService [ServiceRegistry]

-- | The ARN of the IAM role associated with the service that allows the
--   Amazon ECS container agent to register container instances with an
--   Elastic Load Balancing load balancer.
csRoleARN :: Lens' ContainerService (Maybe Text)

-- | Optional deployment parameters that control how many tasks run during
--   the deployment and the ordering of stopping and starting tasks.
csDeploymentConfiguration :: Lens' ContainerService (Maybe DeploymentConfiguration)

-- | An object representing a change in state for a container.
--   
--   <i>See:</i> <a>containerStateChange</a> smart constructor.
data ContainerStateChange

-- | Creates a value of <a>ContainerStateChange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscNetworkBindings</a> - Any network bindings associated with
--   the container.</li>
--   <li><a>cscStatus</a> - The status of the container.</li>
--   <li><a>cscContainerName</a> - The name of the container.</li>
--   <li><a>cscReason</a> - The reason for the state change.</li>
--   <li><a>cscExitCode</a> - The exit code for the container, if the state
--   change is a result of the container exiting.</li>
--   </ul>
containerStateChange :: ContainerStateChange

-- | Any network bindings associated with the container.
cscNetworkBindings :: Lens' ContainerStateChange [NetworkBinding]

-- | The status of the container.
cscStatus :: Lens' ContainerStateChange (Maybe Text)

-- | The name of the container.
cscContainerName :: Lens' ContainerStateChange (Maybe Text)

-- | The reason for the state change.
cscReason :: Lens' ContainerStateChange (Maybe Text)

-- | The exit code for the container, if the state change is a result of
--   the container exiting.
cscExitCode :: Lens' ContainerStateChange (Maybe Int)

-- | The details of an Amazon ECS service deployment.
--   
--   <i>See:</i> <a>deployment</a> smart constructor.
data Deployment

-- | Creates a value of <a>Deployment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dRunningCount</a> - The number of tasks in the deployment that
--   are in the <tt>RUNNING</tt> status.</li>
--   <li><a>dStatus</a> - The status of the deployment. Valid values are
--   <tt>PRIMARY</tt> (for the most recent deployment), <tt>ACTIVE</tt>
--   (for previous deployments that still have tasks running, but are being
--   replaced with the <tt>PRIMARY</tt> deployment), and <tt>INACTIVE</tt>
--   (for deployments that have been completely replaced).</li>
--   <li><a>dCreatedAt</a> - The Unix time stamp for when the service was
--   created.</li>
--   <li><a>dPlatformVersion</a> - The platform version on which your
--   service is running.</li>
--   <li><a>dDesiredCount</a> - The most recent desired count of tasks that
--   was specified for the service to deploy or maintain.</li>
--   <li><a>dPendingCount</a> - The number of tasks in the deployment that
--   are in the <tt>PENDING</tt> status.</li>
--   <li><a>dId</a> - The ID of the deployment.</li>
--   <li><a>dLaunchType</a> - The launch type on which your service is
--   running.</li>
--   <li><a>dUpdatedAt</a> - The Unix time stamp for when the service was
--   last updated.</li>
--   <li><a>dTaskDefinition</a> - The most recent task definition that was
--   specified for the service to use.</li>
--   <li><a>dNetworkConfiguration</a> - The VPC subnet and security group
--   configuration for tasks that receive their own Elastic Network
--   Interface by using the <tt>awsvpc</tt> networking mode.</li>
--   </ul>
deployment :: Deployment

-- | The number of tasks in the deployment that are in the <tt>RUNNING</tt>
--   status.
dRunningCount :: Lens' Deployment (Maybe Int)

-- | The status of the deployment. Valid values are <tt>PRIMARY</tt> (for
--   the most recent deployment), <tt>ACTIVE</tt> (for previous deployments
--   that still have tasks running, but are being replaced with the
--   <tt>PRIMARY</tt> deployment), and <tt>INACTIVE</tt> (for deployments
--   that have been completely replaced).
dStatus :: Lens' Deployment (Maybe Text)

-- | The Unix time stamp for when the service was created.
dCreatedAt :: Lens' Deployment (Maybe UTCTime)

-- | The platform version on which your service is running.
dPlatformVersion :: Lens' Deployment (Maybe Text)

-- | The most recent desired count of tasks that was specified for the
--   service to deploy or maintain.
dDesiredCount :: Lens' Deployment (Maybe Int)

-- | The number of tasks in the deployment that are in the <tt>PENDING</tt>
--   status.
dPendingCount :: Lens' Deployment (Maybe Int)

-- | The ID of the deployment.
dId :: Lens' Deployment (Maybe Text)

-- | The launch type on which your service is running.
dLaunchType :: Lens' Deployment (Maybe LaunchType)

-- | The Unix time stamp for when the service was last updated.
dUpdatedAt :: Lens' Deployment (Maybe UTCTime)

-- | The most recent task definition that was specified for the service to
--   use.
dTaskDefinition :: Lens' Deployment (Maybe Text)

-- | The VPC subnet and security group configuration for tasks that receive
--   their own Elastic Network Interface by using the <tt>awsvpc</tt>
--   networking mode.
dNetworkConfiguration :: Lens' Deployment (Maybe NetworkConfiguration)

-- | Optional deployment parameters that control how many tasks run during
--   the deployment and the ordering of stopping and starting tasks.
--   
--   <i>See:</i> <a>deploymentConfiguration</a> smart constructor.
data DeploymentConfiguration

-- | Creates a value of <a>DeploymentConfiguration</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcMinimumHealthyPercent</a> - The lower limit (as a percentage
--   of the service's <tt>desiredCount</tt> ) of the number of running
--   tasks that must remain in the <tt>RUNNING</tt> state in a service
--   during a deployment. The minimum number of healthy tasks during a
--   deployment is the <tt>desiredCount</tt> multiplied by
--   <tt>minimumHealthyPercent</tt> /100, rounded up to the nearest integer
--   value.</li>
--   <li><a>dcMaximumPercent</a> - The upper limit (as a percentage of the
--   service's <tt>desiredCount</tt> ) of the number of tasks that are
--   allowed in the <tt>RUNNING</tt> or <tt>PENDING</tt> state in a service
--   during a deployment. The maximum number of tasks during a deployment
--   is the <tt>desiredCount</tt> multiplied by <tt>maximumPercent</tt>
--   /100, rounded down to the nearest integer value.</li>
--   </ul>
deploymentConfiguration :: DeploymentConfiguration

-- | The lower limit (as a percentage of the service's
--   <tt>desiredCount</tt> ) of the number of running tasks that must
--   remain in the <tt>RUNNING</tt> state in a service during a deployment.
--   The minimum number of healthy tasks during a deployment is the
--   <tt>desiredCount</tt> multiplied by <tt>minimumHealthyPercent</tt>
--   /100, rounded up to the nearest integer value.
dcMinimumHealthyPercent :: Lens' DeploymentConfiguration (Maybe Int)

-- | The upper limit (as a percentage of the service's
--   <tt>desiredCount</tt> ) of the number of tasks that are allowed in the
--   <tt>RUNNING</tt> or <tt>PENDING</tt> state in a service during a
--   deployment. The maximum number of tasks during a deployment is the
--   <tt>desiredCount</tt> multiplied by <tt>maximumPercent</tt> /100,
--   rounded down to the nearest integer value.
dcMaximumPercent :: Lens' DeploymentConfiguration (Maybe Int)

-- | An object representing a container instance host device.
--   
--   <i>See:</i> <a>device</a> smart constructor.
data Device

-- | Creates a value of <a>Device</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dContainerPath</a> - The path inside the container at which to
--   expose the host device.</li>
--   <li><a>dPermissions</a> - The explicit permissions to provide to the
--   container for the device. By default, the container has permissions
--   for <tt>read</tt> , <tt>write</tt> , and <tt>mknod</tt> for the
--   device.</li>
--   <li><a>dHostPath</a> - The path for the device on the host container
--   instance.</li>
--   </ul>
device :: Text -> Device

-- | The path inside the container at which to expose the host device.
dContainerPath :: Lens' Device (Maybe Text)

-- | The explicit permissions to provide to the container for the device.
--   By default, the container has permissions for <tt>read</tt> ,
--   <tt>write</tt> , and <tt>mknod</tt> for the device.
dPermissions :: Lens' Device [DeviceCgroupPermission]

-- | The path for the device on the host container instance.
dHostPath :: Lens' Device Text

-- | A failed resource.
--   
--   <i>See:</i> <a>failure</a> smart constructor.
data Failure

-- | Creates a value of <a>Failure</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fArn</a> - The Amazon Resource Name (ARN) of the failed
--   resource.</li>
--   <li><a>fReason</a> - The reason for the failure.</li>
--   </ul>
failure :: Failure

-- | The Amazon Resource Name (ARN) of the failed resource.
fArn :: Lens' Failure (Maybe Text)

-- | The reason for the failure.
fReason :: Lens' Failure (Maybe Text)

-- | An object representing a container health check. Health check
--   parameters that are specified in a container definition override any
--   Docker health checks that exist in the container image (such as those
--   specified in a parent image or from the image's Dockerfile).
--   
--   <i>See:</i> <a>healthCheck</a> smart constructor.
data HealthCheck

-- | Creates a value of <a>HealthCheck</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcStartPeriod</a> - The optional grace period within which to
--   provide containers time to bootstrap before failed health checks count
--   towards the maximum number of retries. You may specify between 0 and
--   300 seconds. The <tt>startPeriod</tt> is disabled by default.</li>
--   <li><a>hcRetries</a> - The number of times to retry a failed health
--   check before the container is considered unhealthy. You may specify
--   between 1 and 10 retries. The default value is 3 retries.</li>
--   <li><a>hcInterval</a> - The time period in seconds between each health
--   check execution. You may specify between 5 and 300 seconds. The
--   default value is 30 seconds.</li>
--   <li><a>hcTimeout</a> - The time period in seconds to wait for a health
--   check to succeed before it is considered a failure. You may specify
--   between 2 and 60 seconds. The default value is 5 seconds.</li>
--   <li><a>hcCommand</a> - A string array representing the command that
--   the container runs to determine if it is healthy. The string array
--   must start with <tt>CMD</tt> to execute the command arguments
--   directly, or <tt>CMD-SHELL</tt> to run the command with the
--   container's default shell. For example: <tt>[ "CMD-SHELL", "curl -f
--   <a>http://localhost/</a> || exit 1" ]</tt> An exit code of 0 indicates
--   success, and non-zero exit code indicates failure. For more
--   information, see <tt>HealthCheck</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> .</li>
--   </ul>
healthCheck :: HealthCheck

-- | The optional grace period within which to provide containers time to
--   bootstrap before failed health checks count towards the maximum number
--   of retries. You may specify between 0 and 300 seconds. The
--   <tt>startPeriod</tt> is disabled by default.
hcStartPeriod :: Lens' HealthCheck (Maybe Int)

-- | The number of times to retry a failed health check before the
--   container is considered unhealthy. You may specify between 1 and 10
--   retries. The default value is 3 retries.
hcRetries :: Lens' HealthCheck (Maybe Int)

-- | The time period in seconds between each health check execution. You
--   may specify between 5 and 300 seconds. The default value is 30
--   seconds.
hcInterval :: Lens' HealthCheck (Maybe Int)

-- | The time period in seconds to wait for a health check to succeed
--   before it is considered a failure. You may specify between 2 and 60
--   seconds. The default value is 5 seconds.
hcTimeout :: Lens' HealthCheck (Maybe Int)

-- | A string array representing the command that the container runs to
--   determine if it is healthy. The string array must start with
--   <tt>CMD</tt> to execute the command arguments directly, or
--   <tt>CMD-SHELL</tt> to run the command with the container's default
--   shell. For example: <tt>[ "CMD-SHELL", "curl -f
--   <a>http://localhost/</a> || exit 1" ]</tt> An exit code of 0 indicates
--   success, and non-zero exit code indicates failure. For more
--   information, see <tt>HealthCheck</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> .
hcCommand :: Lens' HealthCheck [Text]

-- | Hostnames and IP address entries that are added to the
--   <tt><i>etc</i>hosts</tt> file of a container via the
--   <tt>extraHosts</tt> parameter of its <a>ContainerDefinition</a> .
--   
--   <i>See:</i> <a>hostEntry</a> smart constructor.
data HostEntry

-- | Creates a value of <a>HostEntry</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>heHostname</a> - The hostname to use in the
--   <tt><i>etc</i>hosts</tt> entry.</li>
--   <li><a>heIpAddress</a> - The IP address to use in the
--   <tt><i>etc</i>hosts</tt> entry.</li>
--   </ul>
hostEntry :: Text -> Text -> HostEntry

-- | The hostname to use in the <tt><i>etc</i>hosts</tt> entry.
heHostname :: Lens' HostEntry Text

-- | The IP address to use in the <tt><i>etc</i>hosts</tt> entry.
heIpAddress :: Lens' HostEntry Text

-- | Details on a container instance host volume.
--   
--   <i>See:</i> <a>hostVolumeProperties</a> smart constructor.
data HostVolumeProperties

-- | Creates a value of <a>HostVolumeProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hvpSourcePath</a> - The path on the host container instance
--   that is presented to the container. If this parameter is empty, then
--   the Docker daemon has assigned a host path for you. If the
--   <tt>host</tt> parameter contains a <tt>sourcePath</tt> file location,
--   then the data volume persists at the specified location on the host
--   container instance until you delete it manually. If the
--   <tt>sourcePath</tt> value does not exist on the host container
--   instance, the Docker daemon creates it. If the location does exist,
--   the contents of the source path folder are exported. If you are using
--   the Fargate launch type, the <tt>sourcePath</tt> parameter is not
--   supported.</li>
--   </ul>
hostVolumeProperties :: HostVolumeProperties

-- | The path on the host container instance that is presented to the
--   container. If this parameter is empty, then the Docker daemon has
--   assigned a host path for you. If the <tt>host</tt> parameter contains
--   a <tt>sourcePath</tt> file location, then the data volume persists at
--   the specified location on the host container instance until you delete
--   it manually. If the <tt>sourcePath</tt> value does not exist on the
--   host container instance, the Docker daemon creates it. If the location
--   does exist, the contents of the source path folder are exported. If
--   you are using the Fargate launch type, the <tt>sourcePath</tt>
--   parameter is not supported.
hvpSourcePath :: Lens' HostVolumeProperties (Maybe Text)

-- | The Linux capabilities for the container that are added to or dropped
--   from the default configuration provided by Docker. For more
--   information on the default capabilities and the non-default available
--   capabilities, see <a>Runtime privilege and Linux capabilities</a> in
--   the <i>Docker run reference</i> . For more detailed information on
--   these Linux capabilities, see the <a>capabilities(7)</a> Linux manual
--   page.
--   
--   <i>See:</i> <a>kernelCapabilities</a> smart constructor.
data KernelCapabilities

-- | Creates a value of <a>KernelCapabilities</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kcDrop</a> - The Linux capabilities for the container that have
--   been removed from the default configuration provided by Docker. This
--   parameter maps to <tt>CapDrop</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--cap-drop</tt>
--   option to <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt></li>
--   <li><a>kcAdd</a> - The Linux capabilities for the container that have
--   been added to the default configuration provided by Docker. This
--   parameter maps to <tt>CapAdd</tt> in the <a>Create a container</a>
--   section of the <a>Docker Remote API</a> and the <tt>--cap-add</tt>
--   option to <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt></li>
--   </ul>
kernelCapabilities :: KernelCapabilities

-- | The Linux capabilities for the container that have been removed from
--   the default configuration provided by Docker. This parameter maps to
--   <tt>CapDrop</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--cap-drop</tt> option to
--   <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt>
kcDrop :: Lens' KernelCapabilities [Text]

-- | The Linux capabilities for the container that have been added to the
--   default configuration provided by Docker. This parameter maps to
--   <tt>CapAdd</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--cap-add</tt> option to
--   <a>docker run</a> . Valid values: <tt><a>ALL</a> |
--   <a>AUDIT_CONTROL</a> | <a>AUDIT_WRITE</a> | <a>BLOCK_SUSPEND</a> |
--   <a>CHOWN</a> | <a>DAC_OVERRIDE</a> | <a>DAC_READ_SEARCH</a> |
--   <a>FOWNER</a> | <a>FSETID</a> | <a>IPC_LOCK</a> | <a>IPC_OWNER</a> |
--   <a>KILL</a> | <a>LEASE</a> | <a>LINUX_IMMUTABLE</a> | <a>MAC_ADMIN</a>
--   | <a>MAC_OVERRIDE</a> | <a>MKNOD</a> | <a>NET_ADMIN</a> |
--   <a>NET_BIND_SERVICE</a> | <a>NET_BROADCAST</a> | <a>NET_RAW</a> |
--   <a>SETFCAP</a> | <a>SETGID</a> | <a>SETPCAP</a> | <a>SETUID</a> |
--   <a>SYS_ADMIN</a> | <a>SYS_BOOT</a> | <a>SYS_CHROOT</a> |
--   <a>SYS_MODULE</a> | <a>SYS_NICE</a> | <a>SYS_PACCT</a> |
--   <a>SYS_PTRACE</a> | <a>SYS_RAWIO</a> | <a>SYS_RESOURCE</a> |
--   <a>SYS_TIME</a> | <a>SYS_TTY_CONFIG</a> | <a>SYSLOG</a> |
--   <a>WAKE_ALARM</a></tt>
kcAdd :: Lens' KernelCapabilities [Text]

-- | A key and value pair object.
--   
--   <i>See:</i> <a>keyValuePair</a> smart constructor.
data KeyValuePair

-- | Creates a value of <a>KeyValuePair</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>kvpValue</a> - The value of the key value pair. For environment
--   variables, this is the value of the environment variable.</li>
--   <li><a>kvpName</a> - The name of the key value pair. For environment
--   variables, this is the name of the environment variable.</li>
--   </ul>
keyValuePair :: KeyValuePair

-- | The value of the key value pair. For environment variables, this is
--   the value of the environment variable.
kvpValue :: Lens' KeyValuePair (Maybe Text)

-- | The name of the key value pair. For environment variables, this is the
--   name of the environment variable.
kvpName :: Lens' KeyValuePair (Maybe Text)

-- | Linux-specific options that are applied to the container, such as
--   Linux <a>KernelCapabilities</a> .
--   
--   <i>See:</i> <a>linuxParameters</a> smart constructor.
data LinuxParameters

-- | Creates a value of <a>LinuxParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lpSharedMemorySize</a> - The value for the size of the
--   <tt><i>dev</i>shm</tt> volume. This parameter maps to the
--   <tt>--shm-size</tt> option to <a>docker run</a> .</li>
--   <li><a>lpInitProcessEnabled</a> - Run an <tt>init</tt> process inside
--   the container that forwards signals and reaps processes. This
--   parameter maps to the <tt>--init</tt> option to <a>docker run</a> .
--   This parameter requires version 1.25 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: <tt>sudo docker version | grep "Server
--   API version"</tt></li>
--   <li><a>lpTmpfs</a> - The container path, mount options, and size of
--   the tmpfs mount. This parameter maps to the <tt>--tmpfs</tt> option to
--   <a>docker run</a> .</li>
--   <li><a>lpDevices</a> - Any host devices to expose to the container.
--   This parameter maps to <tt>Devices</tt> in the <a>Create a
--   container</a> section of the <a>Docker Remote API</a> and the
--   <tt>--device</tt> option to <a>docker run</a> .</li>
--   <li><a>lpCapabilities</a> - The Linux capabilities for the container
--   that are added to or dropped from the default configuration provided
--   by Docker.</li>
--   </ul>
linuxParameters :: LinuxParameters

-- | The value for the size of the <tt><i>dev</i>shm</tt> volume. This
--   parameter maps to the <tt>--shm-size</tt> option to <a>docker run</a>
--   .
lpSharedMemorySize :: Lens' LinuxParameters (Maybe Int)

-- | Run an <tt>init</tt> process inside the container that forwards
--   signals and reaps processes. This parameter maps to the
--   <tt>--init</tt> option to <a>docker run</a> . This parameter requires
--   version 1.25 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: <tt>sudo docker version | grep "Server API version"</tt>
lpInitProcessEnabled :: Lens' LinuxParameters (Maybe Bool)

-- | The container path, mount options, and size of the tmpfs mount. This
--   parameter maps to the <tt>--tmpfs</tt> option to <a>docker run</a> .
lpTmpfs :: Lens' LinuxParameters [Tmpfs]

-- | Any host devices to expose to the container. This parameter maps to
--   <tt>Devices</tt> in the <a>Create a container</a> section of the
--   <a>Docker Remote API</a> and the <tt>--device</tt> option to <a>docker
--   run</a> .
lpDevices :: Lens' LinuxParameters [Device]

-- | The Linux capabilities for the container that are added to or dropped
--   from the default configuration provided by Docker.
lpCapabilities :: Lens' LinuxParameters (Maybe KernelCapabilities)

-- | Details on a load balancer that is used with a service.
--   
--   <i>See:</i> <a>loadBalancer</a> smart constructor.
data LoadBalancer

-- | Creates a value of <a>LoadBalancer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lbLoadBalancerName</a> - The name of a load balancer.</li>
--   <li><a>lbContainerName</a> - The name of the container (as it appears
--   in a container definition) to associate with the load balancer.</li>
--   <li><a>lbTargetGroupARN</a> - The full Amazon Resource Name (ARN) of
--   the Elastic Load Balancing target group associated with a
--   service.</li>
--   <li><a>lbContainerPort</a> - The port on the container to associate
--   with the load balancer. This port must correspond to a
--   <tt>containerPort</tt> in the service's task definition. Your
--   container instances must allow ingress traffic on the
--   <tt>hostPort</tt> of the port mapping.</li>
--   </ul>
loadBalancer :: LoadBalancer

-- | The name of a load balancer.
lbLoadBalancerName :: Lens' LoadBalancer (Maybe Text)

-- | The name of the container (as it appears in a container definition) to
--   associate with the load balancer.
lbContainerName :: Lens' LoadBalancer (Maybe Text)

-- | The full Amazon Resource Name (ARN) of the Elastic Load Balancing
--   target group associated with a service.
lbTargetGroupARN :: Lens' LoadBalancer (Maybe Text)

-- | The port on the container to associate with the load balancer. This
--   port must correspond to a <tt>containerPort</tt> in the service's task
--   definition. Your container instances must allow ingress traffic on the
--   <tt>hostPort</tt> of the port mapping.
lbContainerPort :: Lens' LoadBalancer (Maybe Int)

-- | Log configuration options to send to a custom log driver for the
--   container.
--   
--   <i>See:</i> <a>logConfiguration</a> smart constructor.
data LogConfiguration

-- | Creates a value of <a>LogConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcOptions</a> - The configuration options to send to the log
--   driver. This parameter requires version 1.19 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: <tt>sudo docker version | grep "Server
--   API version"</tt></li>
--   <li><a>lcLogDriver</a> - The log driver to use for the container. The
--   valid values listed for this parameter are log drivers that the Amazon
--   ECS container agent can communicate with by default. If using the
--   Fargate launch type, the only supported value is <tt>awslogs</tt> .
--   For more information about using the <tt>awslogs</tt> driver, see
--   <a>Using the awslogs Log Driver</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> . 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: <tt>sudo docker
--   version | grep "Server API version"</tt></li>
--   </ul>
logConfiguration :: LogDriver -> LogConfiguration

-- | The configuration options to send to the log driver. This parameter
--   requires version 1.19 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: <tt>sudo docker version | grep "Server API
--   version"</tt>
lcOptions :: Lens' LogConfiguration (HashMap Text Text)

-- | The log driver to use for the container. The valid values listed for
--   this parameter are log drivers that the Amazon ECS container agent can
--   communicate with by default. If using the Fargate launch type, the
--   only supported value is <tt>awslogs</tt> . For more information about
--   using the <tt>awslogs</tt> driver, see <a>Using the awslogs Log
--   Driver</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> . 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: <tt>sudo docker version | grep
--   "Server API version"</tt>
lcLogDriver :: Lens' LogConfiguration LogDriver

-- | Details on a volume mount point that is used in a container
--   definition.
--   
--   <i>See:</i> <a>mountPoint</a> smart constructor.
data MountPoint

-- | Creates a value of <a>MountPoint</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mpContainerPath</a> - The path on the container to mount the
--   host volume at.</li>
--   <li><a>mpSourceVolume</a> - The name of the volume to mount.</li>
--   <li><a>mpReadOnly</a> - If this value is <tt>true</tt> , the container
--   has read-only access to the volume. If this value is <tt>false</tt> ,
--   then the container can write to the volume. The default value is
--   <tt>false</tt> .</li>
--   </ul>
mountPoint :: MountPoint

-- | The path on the container to mount the host volume at.
mpContainerPath :: Lens' MountPoint (Maybe Text)

-- | The name of the volume to mount.
mpSourceVolume :: Lens' MountPoint (Maybe Text)

-- | If this value is <tt>true</tt> , the container has read-only access to
--   the volume. If this value is <tt>false</tt> , then the container can
--   write to the volume. The default value is <tt>false</tt> .
mpReadOnly :: Lens' MountPoint (Maybe Bool)

-- | Details on the network bindings between a container and its host
--   container instance. After a task reaches the <tt>RUNNING</tt> status,
--   manual and automatic host and container port assignments are visible
--   in the <tt>networkBindings</tt> section of <tt>DescribeTasks</tt> API
--   responses.
--   
--   <i>See:</i> <a>networkBinding</a> smart constructor.
data NetworkBinding

-- | Creates a value of <a>NetworkBinding</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nbBindIP</a> - The IP address that the container is bound to on
--   the container instance.</li>
--   <li><a>nbProtocol</a> - The protocol used for the network
--   binding.</li>
--   <li><a>nbHostPort</a> - The port number on the host that is used with
--   the network binding.</li>
--   <li><a>nbContainerPort</a> - The port number on the container that is
--   used with the network binding.</li>
--   </ul>
networkBinding :: NetworkBinding

-- | The IP address that the container is bound to on the container
--   instance.
nbBindIP :: Lens' NetworkBinding (Maybe Text)

-- | The protocol used for the network binding.
nbProtocol :: Lens' NetworkBinding (Maybe TransportProtocol)

-- | The port number on the host that is used with the network binding.
nbHostPort :: Lens' NetworkBinding (Maybe Int)

-- | The port number on the container that is used with the network
--   binding.
nbContainerPort :: Lens' NetworkBinding (Maybe Int)

-- | An object representing the network configuration for a task or
--   service.
--   
--   <i>See:</i> <a>networkConfiguration</a> smart constructor.
data NetworkConfiguration

-- | Creates a value of <a>NetworkConfiguration</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ncAwsvpcConfiguration</a> - The VPC subnets and security groups
--   associated with a task.</li>
--   </ul>
networkConfiguration :: NetworkConfiguration

-- | The VPC subnets and security groups associated with a task.
ncAwsvpcConfiguration :: Lens' NetworkConfiguration (Maybe AWSVPCConfiguration)

-- | An object representing the Elastic Network Interface for tasks that
--   use the <tt>awsvpc</tt> network mode.
--   
--   <i>See:</i> <a>networkInterface</a> smart constructor.
data NetworkInterface

-- | Creates a value of <a>NetworkInterface</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>niIpv6Address</a> - The private IPv6 address for the network
--   interface.</li>
--   <li><a>niPrivateIPv4Address</a> - The private IPv4 address for the
--   network interface.</li>
--   <li><a>niAttachmentId</a> - The attachment ID for the network
--   interface.</li>
--   </ul>
networkInterface :: NetworkInterface

-- | The private IPv6 address for the network interface.
niIpv6Address :: Lens' NetworkInterface (Maybe Text)

-- | The private IPv4 address for the network interface.
niPrivateIPv4Address :: Lens' NetworkInterface (Maybe Text)

-- | The attachment ID for the network interface.
niAttachmentId :: Lens' NetworkInterface (Maybe Text)

-- | An object representing a constraint on task placement. For more
--   information, see <a>Task Placement Constraints</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
--   
--   <i>See:</i> <a>placementConstraint</a> smart constructor.
data PlacementConstraint

-- | Creates a value of <a>PlacementConstraint</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcExpression</a> - A cluster query language expression to apply
--   to the constraint. Note you cannot specify an expression if the
--   constraint type is <tt>distinctInstance</tt> . For more information,
--   see <a>Cluster Query Language</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .</li>
--   <li><a>pcType</a> - The type of constraint. Use
--   <tt>distinctInstance</tt> to ensure that each task in a particular
--   group is running on a different container instance. Use
--   <tt>memberOf</tt> to restrict the selection to a group of valid
--   candidates. The value <tt>distinctInstance</tt> is not supported in
--   task definitions.</li>
--   </ul>
placementConstraint :: PlacementConstraint

-- | A cluster query language expression to apply to the constraint. Note
--   you cannot specify an expression if the constraint type is
--   <tt>distinctInstance</tt> . For more information, see <a>Cluster Query
--   Language</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .
pcExpression :: Lens' PlacementConstraint (Maybe Text)

-- | The type of constraint. Use <tt>distinctInstance</tt> to ensure that
--   each task in a particular group is running on a different container
--   instance. Use <tt>memberOf</tt> to restrict the selection to a group
--   of valid candidates. The value <tt>distinctInstance</tt> is not
--   supported in task definitions.
pcType :: Lens' PlacementConstraint (Maybe PlacementConstraintType)

-- | The task placement strategy for a task or service. For more
--   information, see <a>Task Placement Strategies</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
--   
--   <i>See:</i> <a>placementStrategy</a> smart constructor.
data PlacementStrategy

-- | Creates a value of <a>PlacementStrategy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psField</a> - The field to apply the placement strategy
--   against. For the <tt>spread</tt> placement strategy, valid values are
--   <tt>instanceId</tt> (or <tt>host</tt> , which has the same effect), or
--   any platform or custom attribute that is applied to a container
--   instance, such as <tt>attribute:ecs.availability-zone</tt> . For the
--   <tt>binpack</tt> placement strategy, valid values are <tt>cpu</tt> and
--   <tt>memory</tt> . For the <tt>random</tt> placement strategy, this
--   field is not used.</li>
--   <li><a>psType</a> - The type of placement strategy. The
--   <tt>random</tt> placement strategy randomly places tasks on available
--   candidates. The <tt>spread</tt> placement strategy spreads placement
--   across available candidates evenly based on the <tt>field</tt>
--   parameter. The <tt>binpack</tt> strategy places tasks on available
--   candidates that have the least available amount of the resource that
--   is specified with the <tt>field</tt> parameter. For example, if you
--   binpack on memory, a task is placed on the instance with the least
--   amount of remaining memory (but still enough to run the task).</li>
--   </ul>
placementStrategy :: PlacementStrategy

-- | The field to apply the placement strategy against. For the
--   <tt>spread</tt> placement strategy, valid values are
--   <tt>instanceId</tt> (or <tt>host</tt> , which has the same effect), or
--   any platform or custom attribute that is applied to a container
--   instance, such as <tt>attribute:ecs.availability-zone</tt> . For the
--   <tt>binpack</tt> placement strategy, valid values are <tt>cpu</tt> and
--   <tt>memory</tt> . For the <tt>random</tt> placement strategy, this
--   field is not used.
psField :: Lens' PlacementStrategy (Maybe Text)

-- | The type of placement strategy. The <tt>random</tt> placement strategy
--   randomly places tasks on available candidates. The <tt>spread</tt>
--   placement strategy spreads placement across available candidates
--   evenly based on the <tt>field</tt> parameter. The <tt>binpack</tt>
--   strategy places tasks on available candidates that have the least
--   available amount of the resource that is specified with the
--   <tt>field</tt> parameter. For example, if you binpack on memory, a
--   task is placed on the instance with the least amount of remaining
--   memory (but still enough to run the task).
psType :: Lens' PlacementStrategy (Maybe PlacementStrategyType)

-- | Port mappings allow containers to access ports on the host container
--   instance to send or receive traffic. Port mappings are specified as
--   part of the container definition.
--   
--   If using containers in a task with the <tt>awsvpc</tt> or
--   <tt>host</tt> network mode, exposed ports should be specified using
--   <tt>containerPort</tt> . The <tt>hostPort</tt> can be left blank or it
--   must be the same value as the <tt>containerPort</tt> .
--   
--   After a task reaches the <tt>RUNNING</tt> status, manual and automatic
--   host and container port assignments are visible in the
--   <tt>networkBindings</tt> section of <tt>DescribeTasks</tt> API
--   responses.
--   
--   <i>See:</i> <a>portMapping</a> smart constructor.
data PortMapping

-- | Creates a value of <a>PortMapping</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmProtocol</a> - The protocol used for the port mapping. Valid
--   values are <tt>tcp</tt> and <tt>udp</tt> . The default is <tt>tcp</tt>
--   .</li>
--   <li><a>pmHostPort</a> - The port number on the container instance to
--   reserve for your container. If using containers in a task with the
--   <tt>awsvpc</tt> or <tt>host</tt> network mode, the <tt>hostPort</tt>
--   can either be left blank or set to the same value as the
--   <tt>containerPort</tt> . If using containers in a task with the
--   <tt>bridge</tt> network mode, you can specify a non-reserved host port
--   for your container port mapping, or you can omit the <tt>hostPort</tt>
--   (or set it to <tt>0</tt> ) while specifying a <tt>containerPort</tt>
--   and your container automatically receives a port in the ephemeral port
--   range for your container instance operating system and Docker version.
--   The default ephemeral port range for Docker version 1.6.0 and later is
--   listed on the instance under
--   <tt><i>proc</i>sys<i>net</i>ipv4/ip_local_port_range</tt> ; if this
--   kernel parameter is unavailable, the default ephemeral port range from
--   49153 through 65535 is used. You should not attempt to specify a host
--   port in the ephemeral port range as these are reserved for automatic
--   assignment. In general, ports below 32768 are outside of the ephemeral
--   port range. The default reserved ports are 22 for SSH, the Docker
--   ports 2375 and 2376, and the Amazon ECS container agent ports 51678
--   and 51679. Any host port that was previously specified in a running
--   task is also reserved while the task is running (after a task stops,
--   the host port is released). The current reserved ports are displayed
--   in the <tt>remainingResources</tt> of
--   <tt>DescribeContainerInstances</tt> output, and a container instance
--   may have up to 100 reserved ports at a time, including the default
--   reserved ports (automatically assigned ports do not count toward the
--   100 reserved ports limit).</li>
--   <li><a>pmContainerPort</a> - The port number on the container that is
--   bound to the user-specified or automatically assigned host port. If
--   using containers in a task with the <tt>awsvpc</tt> or <tt>host</tt>
--   network mode, exposed ports should be specified using
--   <tt>containerPort</tt> . If using containers in a task with the
--   <tt>bridge</tt> network mode and you specify a container port and not
--   a host port, your container automatically receives a host port in the
--   ephemeral port range (for more information, see <tt>hostPort</tt> ).
--   Port mappings that are automatically assigned in this way do not count
--   toward the 100 reserved ports limit of a container instance.</li>
--   </ul>
portMapping :: PortMapping

-- | The protocol used for the port mapping. Valid values are <tt>tcp</tt>
--   and <tt>udp</tt> . The default is <tt>tcp</tt> .
pmProtocol :: Lens' PortMapping (Maybe TransportProtocol)

-- | The port number on the container instance to reserve for your
--   container. If using containers in a task with the <tt>awsvpc</tt> or
--   <tt>host</tt> network mode, the <tt>hostPort</tt> can either be left
--   blank or set to the same value as the <tt>containerPort</tt> . If
--   using containers in a task with the <tt>bridge</tt> network mode, you
--   can specify a non-reserved host port for your container port mapping,
--   or you can omit the <tt>hostPort</tt> (or set it to <tt>0</tt> ) while
--   specifying a <tt>containerPort</tt> and your container automatically
--   receives a port in the ephemeral port range for your container
--   instance operating system and Docker version. The default ephemeral
--   port range for Docker version 1.6.0 and later is listed on the
--   instance under
--   <tt><i>proc</i>sys<i>net</i>ipv4/ip_local_port_range</tt> ; if this
--   kernel parameter is unavailable, the default ephemeral port range from
--   49153 through 65535 is used. You should not attempt to specify a host
--   port in the ephemeral port range as these are reserved for automatic
--   assignment. In general, ports below 32768 are outside of the ephemeral
--   port range. The default reserved ports are 22 for SSH, the Docker
--   ports 2375 and 2376, and the Amazon ECS container agent ports 51678
--   and 51679. Any host port that was previously specified in a running
--   task is also reserved while the task is running (after a task stops,
--   the host port is released). The current reserved ports are displayed
--   in the <tt>remainingResources</tt> of
--   <tt>DescribeContainerInstances</tt> output, and a container instance
--   may have up to 100 reserved ports at a time, including the default
--   reserved ports (automatically assigned ports do not count toward the
--   100 reserved ports limit).
pmHostPort :: Lens' PortMapping (Maybe Int)

-- | The port number on the container that is bound to the user-specified
--   or automatically assigned host port. If using containers in a task
--   with the <tt>awsvpc</tt> or <tt>host</tt> network mode, exposed ports
--   should be specified using <tt>containerPort</tt> . If using containers
--   in a task with the <tt>bridge</tt> network mode and you specify a
--   container port and not a host port, your container automatically
--   receives a host port in the ephemeral port range (for more
--   information, see <tt>hostPort</tt> ). Port mappings that are
--   automatically assigned in this way do not count toward the 100
--   reserved ports limit of a container instance.
pmContainerPort :: Lens' PortMapping (Maybe Int)

-- | Describes the resources available for a container instance.
--   
--   <i>See:</i> <a>resource</a> smart constructor.
data Resource

-- | Creates a value of <a>Resource</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rStringSetValue</a> - When the <tt>stringSetValue</tt> type is
--   set, the value of the resource must be a string type.</li>
--   <li><a>rIntegerValue</a> - When the <tt>integerValue</tt> type is set,
--   the value of the resource must be an integer.</li>
--   <li><a>rDoubleValue</a> - When the <tt>doubleValue</tt> type is set,
--   the value of the resource must be a double precision floating-point
--   type.</li>
--   <li><a>rLongValue</a> - When the <tt>longValue</tt> type is set, the
--   value of the resource must be an extended precision floating-point
--   type.</li>
--   <li><a>rName</a> - The name of the resource, such as <tt>cpu</tt> ,
--   <tt>memory</tt> , <tt>ports</tt> , or a user-defined resource.</li>
--   <li><a>rType</a> - The type of the resource, such as <tt>INTEGER</tt>
--   , <tt>DOUBLE</tt> , <tt>LONG</tt> , or <tt>STRINGSET</tt> .</li>
--   </ul>
resource :: Resource

-- | When the <tt>stringSetValue</tt> type is set, the value of the
--   resource must be a string type.
rStringSetValue :: Lens' Resource [Text]

-- | When the <tt>integerValue</tt> type is set, the value of the resource
--   must be an integer.
rIntegerValue :: Lens' Resource (Maybe Int)

-- | When the <tt>doubleValue</tt> type is set, the value of the resource
--   must be a double precision floating-point type.
rDoubleValue :: Lens' Resource (Maybe Double)

-- | When the <tt>longValue</tt> type is set, the value of the resource
--   must be an extended precision floating-point type.
rLongValue :: Lens' Resource (Maybe Integer)

-- | The name of the resource, such as <tt>cpu</tt> , <tt>memory</tt> ,
--   <tt>ports</tt> , or a user-defined resource.
rName :: Lens' Resource (Maybe Text)

-- | The type of the resource, such as <tt>INTEGER</tt> , <tt>DOUBLE</tt> ,
--   <tt>LONG</tt> , or <tt>STRINGSET</tt> .
rType :: Lens' Resource (Maybe Text)

-- | Details on an event associated with a service.
--   
--   <i>See:</i> <a>serviceEvent</a> smart constructor.
data ServiceEvent

-- | Creates a value of <a>ServiceEvent</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>seCreatedAt</a> - The Unix time stamp for when the event was
--   triggered.</li>
--   <li><a>seId</a> - The ID string of the event.</li>
--   <li><a>seMessage</a> - The event message.</li>
--   </ul>
serviceEvent :: ServiceEvent

-- | The Unix time stamp for when the event was triggered.
seCreatedAt :: Lens' ServiceEvent (Maybe UTCTime)

-- | The ID string of the event.
seId :: Lens' ServiceEvent (Maybe Text)

-- | The event message.
seMessage :: Lens' ServiceEvent (Maybe Text)

-- | Details of the service registry.
--   
--   <i>See:</i> <a>serviceRegistry</a> smart constructor.
data ServiceRegistry

-- | Creates a value of <a>ServiceRegistry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>srRegistryARN</a> - The Amazon Resource Name (ARN) of the
--   Service Registry. The currently supported service registry is Amazon
--   Route 53 Auto Naming Service. For more information, see <a>Service</a>
--   .</li>
--   <li><a>srPort</a> - The port value used if your Service Discovery
--   service specified an SRV record.</li>
--   </ul>
serviceRegistry :: ServiceRegistry

-- | The Amazon Resource Name (ARN) of the Service Registry. The currently
--   supported service registry is Amazon Route 53 Auto Naming Service. For
--   more information, see <a>Service</a> .
srRegistryARN :: Lens' ServiceRegistry (Maybe Text)

-- | The port value used if your Service Discovery service specified an SRV
--   record.
srPort :: Lens' ServiceRegistry (Maybe Int)

-- | Details on a task in a cluster.
--   
--   <i>See:</i> <a>task</a> smart constructor.
data Task

-- | Creates a value of <a>Task</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tStoppedAt</a> - The Unix time stamp for when the task was
--   stopped (the task transitioned from the <tt>RUNNING</tt> state to the
--   <tt>STOPPED</tt> state).</li>
--   <li><a>tDesiredStatus</a> - The desired status of the task.</li>
--   <li><a>tOverrides</a> - One or more container overrides.</li>
--   <li><a>tClusterARN</a> - The ARN of the cluster that hosts the
--   task.</li>
--   <li><a>tGroup</a> - The name of the task group associated with the
--   task.</li>
--   <li><a>tAttachments</a> - The Elastic Network Adapter associated with
--   the task if the task uses the <tt>awsvpc</tt> network mode.</li>
--   <li><a>tCreatedAt</a> - The Unix time stamp for when the task was
--   created (the task entered the <tt>PENDING</tt> state).</li>
--   <li><a>tPlatformVersion</a> - The platform version on which your task
--   is running. For more information, see <a>AWS Fargate Platform
--   Versions</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tTaskARN</a> - The Amazon Resource Name (ARN) of the task.</li>
--   <li><a>tContainerInstanceARN</a> - The ARN of the container instances
--   that host the task.</li>
--   <li><a>tExecutionStoppedAt</a> - The Unix time stamp for when the task
--   execution stopped.</li>
--   <li><a>tLastStatus</a> - The last known status of the task.</li>
--   <li><a>tMemory</a> - The amount of memory (in MiB) used by the task.
--   It can be expressed as an integer using MiB, for example <tt>1024</tt>
--   , or as a string using GB, for example <tt>1GB</tt> or <tt>1 GB</tt> ,
--   in a task definition but is converted to an integer indicating the MiB
--   when the task definition is registered. If using the EC2 launch type,
--   this field is optional. If using the Fargate launch type, this field
--   is required and you must use one of the following values, which
--   determines your range of supported values for the <tt>cpu</tt>
--   parameter: * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available
--   <tt>cpu</tt> values: 256 (.25 vCPU) * 1024 (1 GB), 2048 (2 GB), 3072
--   (3 GB), 4096 (4 GB) - Available <tt>cpu</tt> values: 512 (.5 vCPU) *
--   2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168
--   (7 GB), 8192 (8 GB) - Available <tt>cpu</tt> values: 1024 (1 vCPU) *
--   Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) -
--   Available <tt>cpu</tt> values: 2048 (2 vCPU) * Between 8192 (8 GB) and
--   30720 (30 GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt>
--   values: 4096 (4 vCPU)</li>
--   <li><a>tPullStoppedAt</a> - The Unix time stamp for when the container
--   image pull completed.</li>
--   <li><a>tContainers</a> - The containers associated with the task.</li>
--   <li><a>tStartedAt</a> - The Unix time stamp for when the task started
--   (the task transitioned from the <tt>PENDING</tt> state to the
--   <tt>RUNNING</tt> state).</li>
--   <li><a>tVersion</a> - The version counter for the task. Every time a
--   task experiences a change that triggers a CloudWatch event, the
--   version counter is incremented. If you are replicating your Amazon ECS
--   task state with CloudWatch Events, you can compare the version of a
--   task reported by the Amazon ECS APIs with the version reported in
--   CloudWatch Events for the task (inside the <tt>detail</tt> object) to
--   verify that the version in your event stream is current.</li>
--   <li><a>tStartedBy</a> - The tag specified when a task is started. If
--   the task is started by an Amazon ECS service, then the
--   <tt>startedBy</tt> parameter contains the deployment ID of the service
--   that starts it.</li>
--   <li><a>tStoppedReason</a> - The reason the task was stopped.</li>
--   <li><a>tConnectivity</a> - The connectivity status of a task.</li>
--   <li><a>tStoppingAt</a> - The Unix time stamp for when the task will
--   stop (transitions from the <tt>RUNNING</tt> state to <tt>STOPPED</tt>
--   ).</li>
--   <li><a>tLaunchType</a> - The launch type on which your task is
--   running.</li>
--   <li><a>tTaskDefinitionARN</a> - The ARN of the task definition that
--   creates the task.</li>
--   <li><a>tHealthStatus</a> - The health status for the task, which is
--   determined by the health of the essential containers in the task. If
--   all essential containers in the task are reporting as <tt>HEALTHY</tt>
--   , then the task status also reports as <tt>HEALTHY</tt> . If any
--   essential containers in the task are reporting as <tt>UNHEALTHY</tt>
--   or <tt>UNKNOWN</tt> , then the task status also reports as
--   <tt>UNHEALTHY</tt> or <tt>UNKNOWN</tt> , accordingly.</li>
--   <li><a>tConnectivityAt</a> - The Unix time stamp for when the task
--   last went into <tt>CONNECTED</tt> status.</li>
--   <li><a>tCpu</a> - The number of CPU units used by the task. It can be
--   expressed as an integer using CPU units, for example <tt>1024</tt> ,
--   or as a string using vCPUs, for example <tt>1 vCPU</tt> or <tt>1
--   vcpu</tt> , in a task definition but is converted to an integer
--   indicating the CPU units when the task definition is registered. If
--   using the EC2 launch type, this field is optional. Supported values
--   are between <tt>128</tt> CPU units (<tt>0.125</tt> vCPUs) and
--   <tt>10240</tt> CPU units (<tt>10</tt> vCPUs). If using the Fargate
--   launch type, this field is required and you must use one of the
--   following values, which determines your range of supported values for
--   the <tt>memory</tt> parameter: * 256 (.25 vCPU) - Available
--   <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512
--   (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB), 2048 (2
--   GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)</li>
--   <li><a>tPullStartedAt</a> - The Unix time stamp for when the container
--   image pull began.</li>
--   </ul>
task :: Task

-- | The Unix time stamp for when the task was stopped (the task
--   transitioned from the <tt>RUNNING</tt> state to the <tt>STOPPED</tt>
--   state).
tStoppedAt :: Lens' Task (Maybe UTCTime)

-- | The desired status of the task.
tDesiredStatus :: Lens' Task (Maybe Text)

-- | One or more container overrides.
tOverrides :: Lens' Task (Maybe TaskOverride)

-- | The ARN of the cluster that hosts the task.
tClusterARN :: Lens' Task (Maybe Text)

-- | The name of the task group associated with the task.
tGroup :: Lens' Task (Maybe Text)

-- | The Elastic Network Adapter associated with the task if the task uses
--   the <tt>awsvpc</tt> network mode.
tAttachments :: Lens' Task [Attachment]

-- | The Unix time stamp for when the task was created (the task entered
--   the <tt>PENDING</tt> state).
tCreatedAt :: Lens' Task (Maybe UTCTime)

-- | The platform version on which your task is running. For more
--   information, see <a>AWS Fargate Platform Versions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tPlatformVersion :: Lens' Task (Maybe Text)

-- | The Amazon Resource Name (ARN) of the task.
tTaskARN :: Lens' Task (Maybe Text)

-- | The ARN of the container instances that host the task.
tContainerInstanceARN :: Lens' Task (Maybe Text)

-- | The Unix time stamp for when the task execution stopped.
tExecutionStoppedAt :: Lens' Task (Maybe UTCTime)

-- | The last known status of the task.
tLastStatus :: Lens' Task (Maybe Text)

-- | The amount of memory (in MiB) used by the task. It can be expressed as
--   an integer using MiB, for example <tt>1024</tt> , or as a string using
--   GB, for example <tt>1GB</tt> or <tt>1 GB</tt> , in a task definition
--   but is converted to an integer indicating the MiB when the task
--   definition is registered. If using the EC2 launch type, this field is
--   optional. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of supported values for the <tt>cpu</tt> parameter: * 512 (0.5 GB),
--   1024 (1 GB), 2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25
--   vCPU) * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available
--   <tt>cpu</tt> values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available
--   <tt>cpu</tt> values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16
--   GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048
--   (2 vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024
--   (1 GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)
tMemory :: Lens' Task (Maybe Text)

-- | The Unix time stamp for when the container image pull completed.
tPullStoppedAt :: Lens' Task (Maybe UTCTime)

-- | The containers associated with the task.
tContainers :: Lens' Task [Container]

-- | The Unix time stamp for when the task started (the task transitioned
--   from the <tt>PENDING</tt> state to the <tt>RUNNING</tt> state).
tStartedAt :: Lens' Task (Maybe UTCTime)

-- | The version counter for the task. Every time a task experiences a
--   change that triggers a CloudWatch event, the version counter is
--   incremented. If you are replicating your Amazon ECS task state with
--   CloudWatch Events, you can compare the version of a task reported by
--   the Amazon ECS APIs with the version reported in CloudWatch Events for
--   the task (inside the <tt>detail</tt> object) to verify that the
--   version in your event stream is current.
tVersion :: Lens' Task (Maybe Integer)

-- | The tag specified when a task is started. If the task is started by an
--   Amazon ECS service, then the <tt>startedBy</tt> parameter contains the
--   deployment ID of the service that starts it.
tStartedBy :: Lens' Task (Maybe Text)

-- | The reason the task was stopped.
tStoppedReason :: Lens' Task (Maybe Text)

-- | The connectivity status of a task.
tConnectivity :: Lens' Task (Maybe Connectivity)

-- | The Unix time stamp for when the task will stop (transitions from the
--   <tt>RUNNING</tt> state to <tt>STOPPED</tt> ).
tStoppingAt :: Lens' Task (Maybe UTCTime)

-- | The launch type on which your task is running.
tLaunchType :: Lens' Task (Maybe LaunchType)

-- | The ARN of the task definition that creates the task.
tTaskDefinitionARN :: Lens' Task (Maybe Text)

-- | The health status for the task, which is determined by the health of
--   the essential containers in the task. If all essential containers in
--   the task are reporting as <tt>HEALTHY</tt> , then the task status also
--   reports as <tt>HEALTHY</tt> . If any essential containers in the task
--   are reporting as <tt>UNHEALTHY</tt> or <tt>UNKNOWN</tt> , then the
--   task status also reports as <tt>UNHEALTHY</tt> or <tt>UNKNOWN</tt> ,
--   accordingly.
tHealthStatus :: Lens' Task (Maybe HealthStatus)

-- | The Unix time stamp for when the task last went into
--   <tt>CONNECTED</tt> status.
tConnectivityAt :: Lens' Task (Maybe UTCTime)

-- | The number of CPU units used by the task. It can be expressed as an
--   integer using CPU units, for example <tt>1024</tt> , or as a string
--   using vCPUs, for example <tt>1 vCPU</tt> or <tt>1 vcpu</tt> , in a
--   task definition but is converted to an integer indicating the CPU
--   units when the task definition is registered. If using the EC2 launch
--   type, this field is optional. Supported values are between
--   <tt>128</tt> CPU units (<tt>0.125</tt> vCPUs) and <tt>10240</tt> CPU
--   units (<tt>10</tt> vCPUs). If using the Fargate launch type, this
--   field is required and you must use one of the following values, which
--   determines your range of supported values for the <tt>memory</tt>
--   parameter: * 256 (.25 vCPU) - Available <tt>memory</tt> values: 512
--   (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512 (.5 vCPU) - Available
--   <tt>memory</tt> values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB) * 1024 (1 vCPU) - Available <tt>memory</tt> values: 2048 (2 GB),
--   3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192
--   (8 GB) * 2048 (2 vCPU) - Available <tt>memory</tt> values: Between
--   4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) * 4096 (4
--   vCPU) - Available <tt>memory</tt> values: Between 8192 (8 GB) and
--   30720 (30 GB) in increments of 1024 (1 GB)
tCpu :: Lens' Task (Maybe Text)

-- | The Unix time stamp for when the container image pull began.
tPullStartedAt :: Lens' Task (Maybe UTCTime)

-- | Details of a task definition.
--   
--   <i>See:</i> <a>taskDefinition</a> smart constructor.
data TaskDefinition

-- | Creates a value of <a>TaskDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdStatus</a> - The status of the task definition.</li>
--   <li><a>tdExecutionRoleARN</a> - The Amazon Resource Name (ARN) of the
--   task execution role that the Amazon ECS container agent and the Docker
--   daemon can assume.</li>
--   <li><a>tdRequiresCompatibilities</a> - The launch type the task is
--   using.</li>
--   <li><a>tdFamily</a> - The family of your task definition, used as the
--   definition name.</li>
--   <li><a>tdContainerDefinitions</a> - A list of container definitions in
--   JSON format that describe the different containers that make up your
--   task. For more information about container definition parameters and
--   defaults, see <a>Amazon ECS Task Definitions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .</li>
--   <li><a>tdMemory</a> - The amount (in MiB) of memory used by the task.
--   If using the EC2 launch type, this field is optional and any value can
--   be used. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of valid values for the <tt>cpu</tt> parameter: * 512 (0.5 GB), 1024
--   (1 GB), 2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25 vCPU) *
--   1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available
--   <tt>cpu</tt> values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4
--   GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available
--   <tt>cpu</tt> values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16
--   GB) in increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048
--   (2 vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024
--   (1 GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)</li>
--   <li><a>tdTaskRoleARN</a> - The ARN of the IAM role that containers in
--   this task can assume. All containers in this task are granted the
--   permissions that are specified in this role. IAM roles for tasks on
--   Windows require that the <tt>-EnableTaskIAMRole</tt> option is set
--   when you launch the Amazon ECS-optimized Windows AMI. Your containers
--   must also run some configuration code in order to take advantage of
--   the feature. For more information, see <a>Windows IAM Roles for
--   Tasks</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tdPlacementConstraints</a> - An array of placement constraint
--   objects to use for tasks. This field is not valid if using the Fargate
--   launch type for your task.</li>
--   <li><a>tdNetworkMode</a> - The Docker networking mode to use for the
--   containers in the task. The valid values are <tt>none</tt> ,
--   <tt>bridge</tt> , <tt>awsvpc</tt> , and <tt>host</tt> . The default
--   Docker network mode is <tt>bridge</tt> . If using the Fargate launch
--   type, the <tt>awsvpc</tt> network mode is required. If using the EC2
--   launch type, any network mode can be used. If the network mode is set
--   to <tt>none</tt> , you can't specify port mappings in your container
--   definitions, and the task's containers do not have external
--   connectivity. The <tt>host</tt> and <tt>awsvpc</tt> network modes
--   offer the highest networking performance for containers because they
--   use the EC2 network stack instead of the virtualized network stack
--   provided by the <tt>bridge</tt> mode. With the <tt>host</tt> and
--   <tt>awsvpc</tt> network modes, exposed container ports are mapped
--   directly to the corresponding host port (for the <tt>host</tt> network
--   mode) or the attached elastic network interface port (for the
--   <tt>awsvpc</tt> network mode), so you cannot take advantage of dynamic
--   host port mappings. If the network mode is <tt>awsvpc</tt> , the task
--   is allocated an Elastic Network Interface, and you must specify a
--   <a>NetworkConfiguration</a> when you create a service or run a task
--   with the task definition. For more information, see <a>Task
--   Networking</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> . If the network mode is <tt>host</tt> , you can't run
--   multiple instantiations of the same task on a single container
--   instance when port mappings are used. Docker for Windows uses
--   different network modes than Docker for Linux. When you register a
--   task definition with Windows containers, you must not specify a
--   network mode. If you use the console to register a task definition
--   with Windows containers, you must choose the <tt><a>default</a></tt>
--   network mode object. For more information, see <a>Network settings</a>
--   in the <i>Docker run reference</i> .</li>
--   <li><a>tdTaskDefinitionARN</a> - The full Amazon Resource Name (ARN)
--   of the task definition.</li>
--   <li><a>tdCompatibilities</a> - The launch type to use with your task.
--   For more information, see <a>Amazon ECS Launch Types</a> in the
--   <i>Amazon Elastic Container Service Developer Guide</i> .</li>
--   <li><a>tdRevision</a> - The revision of the task in a particular
--   family. The revision is a version number of a task definition in a
--   family. When you register a task definition for the first time, the
--   revision is <tt>1</tt> ; each time you register a new revision of a
--   task definition in the same family, the revision value always
--   increases by one (even if you have deregistered previous revisions in
--   this family).</li>
--   <li><a>tdVolumes</a> - The list of volumes in a task. If you are using
--   the Fargate launch type, the <tt>host</tt> and <tt>sourcePath</tt>
--   parameters are not supported. For more information about volume
--   definition parameters and defaults, see <a>Amazon ECS Task
--   Definitions</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tdCpu</a> - The number of <tt>cpu</tt> units used by the task.
--   If using the EC2 launch type, this field is optional and any value can
--   be used. If using the Fargate launch type, this field is required and
--   you must use one of the following values, which determines your range
--   of valid values for the <tt>memory</tt> parameter: * 256 (.25 vCPU) -
--   Available <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2
--   GB) * 512 (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB),
--   2048 (2 GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)</li>
--   <li><a>tdRequiresAttributes</a> - The container instance attributes
--   required by your task. This field is not valid if using the Fargate
--   launch type for your task.</li>
--   </ul>
taskDefinition :: TaskDefinition

-- | The status of the task definition.
tdStatus :: Lens' TaskDefinition (Maybe TaskDefinitionStatus)

-- | The Amazon Resource Name (ARN) of the task execution role that the
--   Amazon ECS container agent and the Docker daemon can assume.
tdExecutionRoleARN :: Lens' TaskDefinition (Maybe Text)

-- | The launch type the task is using.
tdRequiresCompatibilities :: Lens' TaskDefinition [Compatibility]

-- | The family of your task definition, used as the definition name.
tdFamily :: Lens' TaskDefinition (Maybe Text)

-- | A list of container definitions in JSON format that describe the
--   different containers that make up your task. For more information
--   about container definition parameters and defaults, see <a>Amazon ECS
--   Task Definitions</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> .
tdContainerDefinitions :: Lens' TaskDefinition [ContainerDefinition]

-- | The amount (in MiB) of memory used by the task. If using the EC2
--   launch type, this field is optional and any value can be used. If
--   using the Fargate launch type, this field is required and you must use
--   one of the following values, which determines your range of valid
--   values for the <tt>cpu</tt> parameter: * 512 (0.5 GB), 1024 (1 GB),
--   2048 (2 GB) - Available <tt>cpu</tt> values: 256 (.25 vCPU) * 1024 (1
--   GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available <tt>cpu</tt>
--   values: 512 (.5 vCPU) * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available <tt>cpu</tt>
--   values: 1024 (1 vCPU) * Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) - Available <tt>cpu</tt> values: 2048 (2
--   vCPU) * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB) - Available <tt>cpu</tt> values: 4096 (4 vCPU)
tdMemory :: Lens' TaskDefinition (Maybe Text)

-- | The ARN of the IAM role that containers in this task can assume. All
--   containers in this task are granted the permissions that are specified
--   in this role. IAM roles for tasks on Windows require that the
--   <tt>-EnableTaskIAMRole</tt> option is set when you launch the Amazon
--   ECS-optimized Windows AMI. Your containers must also run some
--   configuration code in order to take advantage of the feature. For more
--   information, see <a>Windows IAM Roles for Tasks</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tdTaskRoleARN :: Lens' TaskDefinition (Maybe Text)

-- | An array of placement constraint objects to use for tasks. This field
--   is not valid if using the Fargate launch type for your task.
tdPlacementConstraints :: Lens' TaskDefinition [TaskDefinitionPlacementConstraint]

-- | The Docker networking mode to use for the containers in the task. The
--   valid values are <tt>none</tt> , <tt>bridge</tt> , <tt>awsvpc</tt> ,
--   and <tt>host</tt> . The default Docker network mode is <tt>bridge</tt>
--   . If using the Fargate launch type, the <tt>awsvpc</tt> network mode
--   is required. If using the EC2 launch type, any network mode can be
--   used. If the network mode is set to <tt>none</tt> , you can't specify
--   port mappings in your container definitions, and the task's containers
--   do not have external connectivity. The <tt>host</tt> and
--   <tt>awsvpc</tt> network modes offer the highest networking performance
--   for containers because they use the EC2 network stack instead of the
--   virtualized network stack provided by the <tt>bridge</tt> mode. With
--   the <tt>host</tt> and <tt>awsvpc</tt> network modes, exposed container
--   ports are mapped directly to the corresponding host port (for the
--   <tt>host</tt> network mode) or the attached elastic network interface
--   port (for the <tt>awsvpc</tt> network mode), so you cannot take
--   advantage of dynamic host port mappings. If the network mode is
--   <tt>awsvpc</tt> , the task is allocated an Elastic Network Interface,
--   and you must specify a <a>NetworkConfiguration</a> when you create a
--   service or run a task with the task definition. For more information,
--   see <a>Task Networking</a> in the <i>Amazon Elastic Container Service
--   Developer Guide</i> . If the network mode is <tt>host</tt> , you can't
--   run multiple instantiations of the same task on a single container
--   instance when port mappings are used. Docker for Windows uses
--   different network modes than Docker for Linux. When you register a
--   task definition with Windows containers, you must not specify a
--   network mode. If you use the console to register a task definition
--   with Windows containers, you must choose the <tt><a>default</a></tt>
--   network mode object. For more information, see <a>Network settings</a>
--   in the <i>Docker run reference</i> .
tdNetworkMode :: Lens' TaskDefinition (Maybe NetworkMode)

-- | The full Amazon Resource Name (ARN) of the task definition.
tdTaskDefinitionARN :: Lens' TaskDefinition (Maybe Text)

-- | The launch type to use with your task. For more information, see
--   <a>Amazon ECS Launch Types</a> in the <i>Amazon Elastic Container
--   Service Developer Guide</i> .
tdCompatibilities :: Lens' TaskDefinition [Compatibility]

-- | The revision of the task in a particular family. The revision is a
--   version number of a task definition in a family. When you register a
--   task definition for the first time, the revision is <tt>1</tt> ; each
--   time you register a new revision of a task definition in the same
--   family, the revision value always increases by one (even if you have
--   deregistered previous revisions in this family).
tdRevision :: Lens' TaskDefinition (Maybe Int)

-- | The list of volumes in a task. If you are using the Fargate launch
--   type, the <tt>host</tt> and <tt>sourcePath</tt> parameters are not
--   supported. For more information about volume definition parameters and
--   defaults, see <a>Amazon ECS Task Definitions</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tdVolumes :: Lens' TaskDefinition [Volume]

-- | The number of <tt>cpu</tt> units used by the task. If using the EC2
--   launch type, this field is optional and any value can be used. If
--   using the Fargate launch type, this field is required and you must use
--   one of the following values, which determines your range of valid
--   values for the <tt>memory</tt> parameter: * 256 (.25 vCPU) - Available
--   <tt>memory</tt> values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) * 512
--   (.5 vCPU) - Available <tt>memory</tt> values: 1024 (1 GB), 2048 (2
--   GB), 3072 (3 GB), 4096 (4 GB) * 1024 (1 vCPU) - Available
--   <tt>memory</tt> values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5
--   GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) * 2048 (2 vCPU) - Available
--   <tt>memory</tt> values: Between 4096 (4 GB) and 16384 (16 GB) in
--   increments of 1024 (1 GB) * 4096 (4 vCPU) - Available <tt>memory</tt>
--   values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1
--   GB)
tdCpu :: Lens' TaskDefinition (Maybe Text)

-- | The container instance attributes required by your task. This field is
--   not valid if using the Fargate launch type for your task.
tdRequiresAttributes :: Lens' TaskDefinition [Attribute]

-- | An object representing a constraint on task placement in the task
--   definition.
--   
--   If you are using the Fargate launch type, task placement constraints
--   are not supported.
--   
--   For more information, see <a>Task Placement Constraints</a> in the
--   <i>Amazon Elastic Container Service Developer Guide</i> .
--   
--   <i>See:</i> <a>taskDefinitionPlacementConstraint</a> smart
--   constructor.
data TaskDefinitionPlacementConstraint

-- | Creates a value of <a>TaskDefinitionPlacementConstraint</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tdpcExpression</a> - A cluster query language expression to
--   apply to the constraint. For more information, see <a>Cluster Query
--   Language</a> in the <i>Amazon Elastic Container Service Developer
--   Guide</i> .</li>
--   <li><a>tdpcType</a> - The type of constraint. The
--   <tt>DistinctInstance</tt> constraint ensures that each task in a
--   particular group is running on a different container instance. The
--   <tt>MemberOf</tt> constraint restricts selection to be from a group of
--   valid candidates.</li>
--   </ul>
taskDefinitionPlacementConstraint :: TaskDefinitionPlacementConstraint

-- | A cluster query language expression to apply to the constraint. For
--   more information, see <a>Cluster Query Language</a> in the <i>Amazon
--   Elastic Container Service Developer Guide</i> .
tdpcExpression :: Lens' TaskDefinitionPlacementConstraint (Maybe Text)

-- | The type of constraint. The <tt>DistinctInstance</tt> constraint
--   ensures that each task in a particular group is running on a different
--   container instance. The <tt>MemberOf</tt> constraint restricts
--   selection to be from a group of valid candidates.
tdpcType :: Lens' TaskDefinitionPlacementConstraint (Maybe TaskDefinitionPlacementConstraintType)

-- | The overrides associated with a task.
--   
--   <i>See:</i> <a>taskOverride</a> smart constructor.
data TaskOverride

-- | Creates a value of <a>TaskOverride</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>toContainerOverrides</a> - One or more container overrides sent
--   to a task.</li>
--   <li><a>toExecutionRoleARN</a> - The Amazon Resource Name (ARN) of the
--   task execution role that the Amazon ECS container agent and the Docker
--   daemon can assume.</li>
--   <li><a>toTaskRoleARN</a> - The Amazon Resource Name (ARN) of the IAM
--   role that containers in this task can assume. All containers in this
--   task are granted the permissions that are specified in this role.</li>
--   </ul>
taskOverride :: TaskOverride

-- | One or more container overrides sent to a task.
toContainerOverrides :: Lens' TaskOverride [ContainerOverride]

-- | The Amazon Resource Name (ARN) of the task execution role that the
--   Amazon ECS container agent and the Docker daemon can assume.
toExecutionRoleARN :: Lens' TaskOverride (Maybe Text)

-- | The Amazon Resource Name (ARN) of the IAM role that containers in this
--   task can assume. All containers in this task are granted the
--   permissions that are specified in this role.
toTaskRoleARN :: Lens' TaskOverride (Maybe Text)

-- | The container path, mount options, and size of the tmpfs mount.
--   
--   <i>See:</i> <a>tmpfs</a> smart constructor.
data Tmpfs

-- | Creates a value of <a>Tmpfs</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tMountOptions</a> - The list of tmpfs volume mount options.
--   Valid values: <tt>"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev"
--   | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" |
--   "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" |
--   "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" |
--   "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" |
--   "relatime" | "norelatime" | "strictatime" | "nostrictatime"</tt></li>
--   <li><a>tContainerPath</a> - The absolute file path where the tmpfs
--   volume will be mounted.</li>
--   <li><a>tSize</a> - The size of the tmpfs volume.</li>
--   </ul>
tmpfs :: Text -> Int -> Tmpfs

-- | The list of tmpfs volume mount options. Valid values: <tt>"defaults" |
--   "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec"
--   | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" |
--   "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" |
--   "unbindable" | "runbindable" | "private" | "rprivate" | "shared" |
--   "rshared" | "slave" | "rslave" | "relatime" | "norelatime" |
--   "strictatime" | "nostrictatime"</tt>
tMountOptions :: Lens' Tmpfs [Text]

-- | The absolute file path where the tmpfs volume will be mounted.
tContainerPath :: Lens' Tmpfs Text

-- | The size of the tmpfs volume.
tSize :: Lens' Tmpfs Int

-- | The <tt>ulimit</tt> settings to pass to the container.
--   
--   <i>See:</i> <a>ulimit</a> smart constructor.
data Ulimit

-- | Creates a value of <a>Ulimit</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uName</a> - The <tt>type</tt> of the <tt>ulimit</tt> .</li>
--   <li><a>uSoftLimit</a> - The soft limit for the ulimit type.</li>
--   <li><a>uHardLimit</a> - The hard limit for the ulimit type.</li>
--   </ul>
ulimit :: UlimitName -> Int -> Int -> Ulimit

-- | The <tt>type</tt> of the <tt>ulimit</tt> .
uName :: Lens' Ulimit UlimitName

-- | The soft limit for the ulimit type.
uSoftLimit :: Lens' Ulimit Int

-- | The hard limit for the ulimit type.
uHardLimit :: Lens' Ulimit Int

-- | The Docker and Amazon ECS container agent version information about a
--   container instance.
--   
--   <i>See:</i> <a>versionInfo</a> smart constructor.
data VersionInfo

-- | Creates a value of <a>VersionInfo</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>viAgentHash</a> - The Git commit hash for the Amazon ECS
--   container agent build on the <a>amazon-ecs-agent</a> GitHub
--   repository.</li>
--   <li><a>viAgentVersion</a> - The version number of the Amazon ECS
--   container agent.</li>
--   <li><a>viDockerVersion</a> - The Docker version running on the
--   container instance.</li>
--   </ul>
versionInfo :: VersionInfo

-- | The Git commit hash for the Amazon ECS container agent build on the
--   <a>amazon-ecs-agent</a> GitHub repository.
viAgentHash :: Lens' VersionInfo (Maybe Text)

-- | The version number of the Amazon ECS container agent.
viAgentVersion :: Lens' VersionInfo (Maybe Text)

-- | The Docker version running on the container instance.
viDockerVersion :: Lens' VersionInfo (Maybe Text)

-- | A data volume used in a task definition.
--   
--   <i>See:</i> <a>volume</a> smart constructor.
data Volume

-- | Creates a value of <a>Volume</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vName</a> - The name of the volume. Up to 255 letters
--   (uppercase and lowercase), numbers, hyphens, and underscores are
--   allowed. This name is referenced in the <tt>sourceVolume</tt>
--   parameter of container definition <tt>mountPoints</tt> .</li>
--   <li><a>vHost</a> - The contents of the <tt>host</tt> parameter
--   determine whether your data volume persists on the host container
--   instance and where it is stored. If the host parameter is empty, then
--   the Docker daemon assigns a host path for your data volume, but the
--   data is not guaranteed to persist after the containers associated with
--   it stop running. Windows containers can mount whole directories on the
--   same drive as <tt>&gt; env:ProgramData</tt> . Windows containers
--   cannot mount directories on a different drive, and mount point cannot
--   be across drives. For example, you can mount
--   <tt>C:mypath:C:mypath</tt> and <tt>D::D:@ , but not
--   </tt>D:mypath:C:mypath<tt> or </tt>D::C:mypath@ .</li>
--   </ul>
volume :: Volume

-- | The name of the volume. Up to 255 letters (uppercase and lowercase),
--   numbers, hyphens, and underscores are allowed. This name is referenced
--   in the <tt>sourceVolume</tt> parameter of container definition
--   <tt>mountPoints</tt> .
vName :: Lens' Volume (Maybe Text)

-- | The contents of the <tt>host</tt> parameter determine whether your
--   data volume persists on the host container instance and where it is
--   stored. If the host parameter is empty, then the Docker daemon assigns
--   a host path for your data volume, but the data is not guaranteed to
--   persist after the containers associated with it stop running. Windows
--   containers can mount whole directories on the same drive as <tt>&gt;
--   env:ProgramData</tt> . Windows containers cannot mount directories on
--   a different drive, and mount point cannot be across drives. For
--   example, you can mount <tt>C:mypath:C:mypath</tt> and <tt>D::D:@ , but
--   not </tt>D:mypath:C:mypath<tt> or </tt>D::C:mypath@ .
vHost :: Lens' Volume (Maybe HostVolumeProperties)

-- | Details on a data volume from another container in the same task
--   definition.
--   
--   <i>See:</i> <a>volumeFrom</a> smart constructor.
data VolumeFrom

-- | Creates a value of <a>VolumeFrom</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vfSourceContainer</a> - The name of another container within
--   the same task definition to mount volumes from.</li>
--   <li><a>vfReadOnly</a> - If this value is <tt>true</tt> , the container
--   has read-only access to the volume. If this value is <tt>false</tt> ,
--   then the container can write to the volume. The default value is
--   <tt>false</tt> .</li>
--   </ul>
volumeFrom :: VolumeFrom

-- | The name of another container within the same task definition to mount
--   volumes from.
vfSourceContainer :: Lens' VolumeFrom (Maybe Text)

-- | If this value is <tt>true</tt> , the container has read-only access to
--   the volume. If this value is <tt>false</tt> , then the container can
--   write to the volume. The default value is <tt>false</tt> .
vfReadOnly :: Lens' VolumeFrom (Maybe Bool)
