packages feed

amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsEcsTaskDefinitionContainerDefinitionsDetails.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsDetails
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsEnvironmentDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsEnvironmentFilesDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails

-- | A container definition that describes a container in the task.
--
-- /See:/ 'newAwsEcsTaskDefinitionContainerDefinitionsDetails' smart constructor.
data AwsEcsTaskDefinitionContainerDefinitionsDetails = AwsEcsTaskDefinitionContainerDefinitionsDetails'
  { -- | The command that is passed to the container.
    command :: Prelude.Maybe [Prelude.Text],
    -- | The number of CPU units reserved for the container.
    cpu :: Prelude.Maybe Prelude.Int,
    -- | The dependencies that are defined for container startup and shutdown.
    dependsOn :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails],
    -- | Whether to disable networking within the container.
    disableNetworking :: Prelude.Maybe Prelude.Bool,
    -- | A list of DNS search domains that are presented to the container.
    dnsSearchDomains :: Prelude.Maybe [Prelude.Text],
    -- | A list of DNS servers that are presented to the container.
    dnsServers :: Prelude.Maybe [Prelude.Text],
    -- | A key-value map of labels to add to the container.
    dockerLabels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | A list of strings to provide custom labels for SELinux and AppArmor
    -- multi-level security systems.
    dockerSecurityOptions :: Prelude.Maybe [Prelude.Text],
    -- | The entry point that is passed to the container.
    entryPoint :: Prelude.Maybe [Prelude.Text],
    -- | The environment variables to pass to a container.
    environment :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsEnvironmentDetails],
    -- | A list of files containing the environment variables to pass to a
    -- container.
    environmentFiles :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsEnvironmentFilesDetails],
    -- | Whether the container is essential. All tasks must have at least one
    -- essential container.
    essential :: Prelude.Maybe Prelude.Bool,
    -- | A list of hostnames and IP address mappings to append to the
    -- __\/etc\/hosts__ file on the container.
    extraHosts :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails],
    -- | The FireLens configuration for the container. Specifies and configures a
    -- log router for container logs.
    firelensConfiguration :: Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails,
    -- | The container health check command and associated configuration
    -- parameters for the container.
    healthCheck :: Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails,
    -- | The hostname to use for the container.
    hostname :: Prelude.Maybe Prelude.Text,
    -- | The image used to start the container.
    image :: Prelude.Maybe Prelude.Text,
    -- | If set to true, then containerized applications can be deployed that
    -- require @stdin@ or a @tty@ to be allocated.
    interactive :: Prelude.Maybe Prelude.Bool,
    -- | A list of links for the container in the form
    -- @ @/@container_name@/@:@/@alias@/@ @. Allows containers to communicate
    -- with each other without the need for port mappings.
    links :: Prelude.Maybe [Prelude.Text],
    -- | Linux-specific modifications that are applied to the container, such as
    -- Linux kernel capabilities.
    linuxParameters :: Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails,
    -- | The log configuration specification for the container.
    logConfiguration :: Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails,
    -- | The amount (in MiB) of memory to present to the container. If the
    -- container attempts to exceed the memory specified here, the container is
    -- shut down. The total amount of memory reserved for all containers within
    -- a task must be lower than the task memory value, if one is specified.
    memory :: Prelude.Maybe Prelude.Int,
    -- | The soft limit (in MiB) of memory to reserve for the container.
    memoryReservation :: Prelude.Maybe Prelude.Int,
    -- | The mount points for the data volumes in the container.
    mountPoints :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails],
    -- | The name of the container.
    name :: Prelude.Maybe Prelude.Text,
    -- | The list of port mappings for the container.
    portMappings :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails],
    -- | Whether the container is given elevated privileges on the host container
    -- instance. The elevated privileges are similar to the root user.
    privileged :: Prelude.Maybe Prelude.Bool,
    -- | Whether to allocate a TTY to the container.
    pseudoTerminal :: Prelude.Maybe Prelude.Bool,
    -- | Whether the container is given read-only access to its root file system.
    readonlyRootFilesystem :: Prelude.Maybe Prelude.Bool,
    -- | The private repository authentication credentials to use.
    repositoryCredentials :: Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails,
    -- | The type and amount of a resource to assign to a container. The only
    -- supported resource is a GPU.
    resourceRequirements :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails],
    -- | The secrets to pass to the container.
    secrets :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails],
    -- | The number of seconds to wait before giving up on resolving dependencies
    -- for a container.
    startTimeout :: Prelude.Maybe Prelude.Int,
    -- | The number of seconds to wait before the container is stopped if it
    -- doesn\'t shut down normally on its own.
    stopTimeout :: Prelude.Maybe Prelude.Int,
    -- | A list of namespaced kernel parameters to set in the container.
    systemControls :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails],
    -- | A list of ulimits to set in the container.
    ulimits :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails],
    -- | The user to use inside the container.
    --
    -- The value can use one of the following formats.
    --
    -- -   @ @/@user@/@ @
    --
    -- -   @ @/@user@/@ @:@ @/@group@/@ @
    --
    -- -   @ @/@uid@/@ @
    --
    -- -   @ @/@uid@/@ @:@ @/@gid@/@ @
    --
    -- -   @ @/@user@/@ @:@ @/@gid@/@ @
    --
    -- -   @ @/@uid@/@ @:@ @/@group@/@ @
    user :: Prelude.Maybe Prelude.Text,
    -- | Data volumes to mount from another container.
    volumesFrom :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails],
    -- | The working directory in which to run commands inside the container.
    workingDirectory :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AwsEcsTaskDefinitionContainerDefinitionsDetails' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'command', 'awsEcsTaskDefinitionContainerDefinitionsDetails_command' - The command that is passed to the container.
--
-- 'cpu', 'awsEcsTaskDefinitionContainerDefinitionsDetails_cpu' - The number of CPU units reserved for the container.
--
-- 'dependsOn', 'awsEcsTaskDefinitionContainerDefinitionsDetails_dependsOn' - The dependencies that are defined for container startup and shutdown.
--
-- 'disableNetworking', 'awsEcsTaskDefinitionContainerDefinitionsDetails_disableNetworking' - Whether to disable networking within the container.
--
-- 'dnsSearchDomains', 'awsEcsTaskDefinitionContainerDefinitionsDetails_dnsSearchDomains' - A list of DNS search domains that are presented to the container.
--
-- 'dnsServers', 'awsEcsTaskDefinitionContainerDefinitionsDetails_dnsServers' - A list of DNS servers that are presented to the container.
--
-- 'dockerLabels', 'awsEcsTaskDefinitionContainerDefinitionsDetails_dockerLabels' - A key-value map of labels to add to the container.
--
-- 'dockerSecurityOptions', 'awsEcsTaskDefinitionContainerDefinitionsDetails_dockerSecurityOptions' - A list of strings to provide custom labels for SELinux and AppArmor
-- multi-level security systems.
--
-- 'entryPoint', 'awsEcsTaskDefinitionContainerDefinitionsDetails_entryPoint' - The entry point that is passed to the container.
--
-- 'environment', 'awsEcsTaskDefinitionContainerDefinitionsDetails_environment' - The environment variables to pass to a container.
--
-- 'environmentFiles', 'awsEcsTaskDefinitionContainerDefinitionsDetails_environmentFiles' - A list of files containing the environment variables to pass to a
-- container.
--
-- 'essential', 'awsEcsTaskDefinitionContainerDefinitionsDetails_essential' - Whether the container is essential. All tasks must have at least one
-- essential container.
--
-- 'extraHosts', 'awsEcsTaskDefinitionContainerDefinitionsDetails_extraHosts' - A list of hostnames and IP address mappings to append to the
-- __\/etc\/hosts__ file on the container.
--
-- 'firelensConfiguration', 'awsEcsTaskDefinitionContainerDefinitionsDetails_firelensConfiguration' - The FireLens configuration for the container. Specifies and configures a
-- log router for container logs.
--
-- 'healthCheck', 'awsEcsTaskDefinitionContainerDefinitionsDetails_healthCheck' - The container health check command and associated configuration
-- parameters for the container.
--
-- 'hostname', 'awsEcsTaskDefinitionContainerDefinitionsDetails_hostname' - The hostname to use for the container.
--
-- 'image', 'awsEcsTaskDefinitionContainerDefinitionsDetails_image' - The image used to start the container.
--
-- 'interactive', 'awsEcsTaskDefinitionContainerDefinitionsDetails_interactive' - If set to true, then containerized applications can be deployed that
-- require @stdin@ or a @tty@ to be allocated.
--
-- 'links', 'awsEcsTaskDefinitionContainerDefinitionsDetails_links' - A list of links for the container in the form
-- @ @/@container_name@/@:@/@alias@/@ @. Allows containers to communicate
-- with each other without the need for port mappings.
--
-- 'linuxParameters', 'awsEcsTaskDefinitionContainerDefinitionsDetails_linuxParameters' - Linux-specific modifications that are applied to the container, such as
-- Linux kernel capabilities.
--
-- 'logConfiguration', 'awsEcsTaskDefinitionContainerDefinitionsDetails_logConfiguration' - The log configuration specification for the container.
--
-- 'memory', 'awsEcsTaskDefinitionContainerDefinitionsDetails_memory' - The amount (in MiB) of memory to present to the container. If the
-- container attempts to exceed the memory specified here, the container is
-- shut down. The total amount of memory reserved for all containers within
-- a task must be lower than the task memory value, if one is specified.
--
-- 'memoryReservation', 'awsEcsTaskDefinitionContainerDefinitionsDetails_memoryReservation' - The soft limit (in MiB) of memory to reserve for the container.
--
-- 'mountPoints', 'awsEcsTaskDefinitionContainerDefinitionsDetails_mountPoints' - The mount points for the data volumes in the container.
--
-- 'name', 'awsEcsTaskDefinitionContainerDefinitionsDetails_name' - The name of the container.
--
-- 'portMappings', 'awsEcsTaskDefinitionContainerDefinitionsDetails_portMappings' - The list of port mappings for the container.
--
-- 'privileged', 'awsEcsTaskDefinitionContainerDefinitionsDetails_privileged' - Whether the container is given elevated privileges on the host container
-- instance. The elevated privileges are similar to the root user.
--
-- 'pseudoTerminal', 'awsEcsTaskDefinitionContainerDefinitionsDetails_pseudoTerminal' - Whether to allocate a TTY to the container.
--
-- 'readonlyRootFilesystem', 'awsEcsTaskDefinitionContainerDefinitionsDetails_readonlyRootFilesystem' - Whether the container is given read-only access to its root file system.
--
-- 'repositoryCredentials', 'awsEcsTaskDefinitionContainerDefinitionsDetails_repositoryCredentials' - The private repository authentication credentials to use.
--
-- 'resourceRequirements', 'awsEcsTaskDefinitionContainerDefinitionsDetails_resourceRequirements' - The type and amount of a resource to assign to a container. The only
-- supported resource is a GPU.
--
-- 'secrets', 'awsEcsTaskDefinitionContainerDefinitionsDetails_secrets' - The secrets to pass to the container.
--
-- 'startTimeout', 'awsEcsTaskDefinitionContainerDefinitionsDetails_startTimeout' - The number of seconds to wait before giving up on resolving dependencies
-- for a container.
--
-- 'stopTimeout', 'awsEcsTaskDefinitionContainerDefinitionsDetails_stopTimeout' - The number of seconds to wait before the container is stopped if it
-- doesn\'t shut down normally on its own.
--
-- 'systemControls', 'awsEcsTaskDefinitionContainerDefinitionsDetails_systemControls' - A list of namespaced kernel parameters to set in the container.
--
-- 'ulimits', 'awsEcsTaskDefinitionContainerDefinitionsDetails_ulimits' - A list of ulimits to set in the container.
--
-- 'user', 'awsEcsTaskDefinitionContainerDefinitionsDetails_user' - The user to use inside the container.
--
-- The value can use one of the following formats.
--
-- -   @ @/@user@/@ @
--
-- -   @ @/@user@/@ @:@ @/@group@/@ @
--
-- -   @ @/@uid@/@ @
--
-- -   @ @/@uid@/@ @:@ @/@gid@/@ @
--
-- -   @ @/@user@/@ @:@ @/@gid@/@ @
--
-- -   @ @/@uid@/@ @:@ @/@group@/@ @
--
-- 'volumesFrom', 'awsEcsTaskDefinitionContainerDefinitionsDetails_volumesFrom' - Data volumes to mount from another container.
--
-- 'workingDirectory', 'awsEcsTaskDefinitionContainerDefinitionsDetails_workingDirectory' - The working directory in which to run commands inside the container.
newAwsEcsTaskDefinitionContainerDefinitionsDetails ::
  AwsEcsTaskDefinitionContainerDefinitionsDetails
newAwsEcsTaskDefinitionContainerDefinitionsDetails =
  AwsEcsTaskDefinitionContainerDefinitionsDetails'
    { command =
        Prelude.Nothing,
      cpu = Prelude.Nothing,
      dependsOn =
        Prelude.Nothing,
      disableNetworking =
        Prelude.Nothing,
      dnsSearchDomains =
        Prelude.Nothing,
      dnsServers =
        Prelude.Nothing,
      dockerLabels =
        Prelude.Nothing,
      dockerSecurityOptions =
        Prelude.Nothing,
      entryPoint =
        Prelude.Nothing,
      environment =
        Prelude.Nothing,
      environmentFiles =
        Prelude.Nothing,
      essential =
        Prelude.Nothing,
      extraHosts =
        Prelude.Nothing,
      firelensConfiguration =
        Prelude.Nothing,
      healthCheck =
        Prelude.Nothing,
      hostname = Prelude.Nothing,
      image = Prelude.Nothing,
      interactive =
        Prelude.Nothing,
      links = Prelude.Nothing,
      linuxParameters =
        Prelude.Nothing,
      logConfiguration =
        Prelude.Nothing,
      memory = Prelude.Nothing,
      memoryReservation =
        Prelude.Nothing,
      mountPoints =
        Prelude.Nothing,
      name = Prelude.Nothing,
      portMappings =
        Prelude.Nothing,
      privileged =
        Prelude.Nothing,
      pseudoTerminal =
        Prelude.Nothing,
      readonlyRootFilesystem =
        Prelude.Nothing,
      repositoryCredentials =
        Prelude.Nothing,
      resourceRequirements =
        Prelude.Nothing,
      secrets = Prelude.Nothing,
      startTimeout =
        Prelude.Nothing,
      stopTimeout =
        Prelude.Nothing,
      systemControls =
        Prelude.Nothing,
      ulimits = Prelude.Nothing,
      user = Prelude.Nothing,
      volumesFrom =
        Prelude.Nothing,
      workingDirectory =
        Prelude.Nothing
    }

-- | The command that is passed to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_command :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [Prelude.Text])
awsEcsTaskDefinitionContainerDefinitionsDetails_command = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {command} -> command) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {command = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The number of CPU units reserved for the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_cpu :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsDetails_cpu = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {cpu} -> cpu) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {cpu = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The dependencies that are defined for container startup and shutdown.
awsEcsTaskDefinitionContainerDefinitionsDetails_dependsOn :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsDependsOnDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_dependsOn = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {dependsOn} -> dependsOn) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {dependsOn = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | Whether to disable networking within the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_disableNetworking :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsDetails_disableNetworking = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {disableNetworking} -> disableNetworking) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {disableNetworking = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | A list of DNS search domains that are presented to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_dnsSearchDomains :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [Prelude.Text])
awsEcsTaskDefinitionContainerDefinitionsDetails_dnsSearchDomains = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {dnsSearchDomains} -> dnsSearchDomains) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {dnsSearchDomains = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | A list of DNS servers that are presented to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_dnsServers :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [Prelude.Text])
awsEcsTaskDefinitionContainerDefinitionsDetails_dnsServers = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {dnsServers} -> dnsServers) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {dnsServers = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | A key-value map of labels to add to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_dockerLabels :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
awsEcsTaskDefinitionContainerDefinitionsDetails_dockerLabels = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {dockerLabels} -> dockerLabels) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {dockerLabels = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | A list of strings to provide custom labels for SELinux and AppArmor
-- multi-level security systems.
awsEcsTaskDefinitionContainerDefinitionsDetails_dockerSecurityOptions :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [Prelude.Text])
awsEcsTaskDefinitionContainerDefinitionsDetails_dockerSecurityOptions = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {dockerSecurityOptions} -> dockerSecurityOptions) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {dockerSecurityOptions = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The entry point that is passed to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_entryPoint :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [Prelude.Text])
awsEcsTaskDefinitionContainerDefinitionsDetails_entryPoint = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {entryPoint} -> entryPoint) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {entryPoint = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The environment variables to pass to a container.
awsEcsTaskDefinitionContainerDefinitionsDetails_environment :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsEnvironmentDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_environment = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {environment} -> environment) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {environment = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | A list of files containing the environment variables to pass to a
-- container.
awsEcsTaskDefinitionContainerDefinitionsDetails_environmentFiles :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsEnvironmentFilesDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_environmentFiles = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {environmentFiles} -> environmentFiles) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {environmentFiles = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | Whether the container is essential. All tasks must have at least one
-- essential container.
awsEcsTaskDefinitionContainerDefinitionsDetails_essential :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsDetails_essential = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {essential} -> essential) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {essential = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | A list of hostnames and IP address mappings to append to the
-- __\/etc\/hosts__ file on the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_extraHosts :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsExtraHostsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_extraHosts = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {extraHosts} -> extraHosts) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {extraHosts = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The FireLens configuration for the container. Specifies and configures a
-- log router for container logs.
awsEcsTaskDefinitionContainerDefinitionsDetails_firelensConfiguration :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsFirelensConfigurationDetails)
awsEcsTaskDefinitionContainerDefinitionsDetails_firelensConfiguration = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {firelensConfiguration} -> firelensConfiguration) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {firelensConfiguration = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The container health check command and associated configuration
-- parameters for the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_healthCheck :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsHealthCheckDetails)
awsEcsTaskDefinitionContainerDefinitionsDetails_healthCheck = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {healthCheck} -> healthCheck) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {healthCheck = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The hostname to use for the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_hostname :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Text)
awsEcsTaskDefinitionContainerDefinitionsDetails_hostname = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {hostname} -> hostname) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {hostname = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The image used to start the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_image :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Text)
awsEcsTaskDefinitionContainerDefinitionsDetails_image = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {image} -> image) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {image = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | If set to true, then containerized applications can be deployed that
-- require @stdin@ or a @tty@ to be allocated.
awsEcsTaskDefinitionContainerDefinitionsDetails_interactive :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsDetails_interactive = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {interactive} -> interactive) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {interactive = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | A list of links for the container in the form
-- @ @/@container_name@/@:@/@alias@/@ @. Allows containers to communicate
-- with each other without the need for port mappings.
awsEcsTaskDefinitionContainerDefinitionsDetails_links :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [Prelude.Text])
awsEcsTaskDefinitionContainerDefinitionsDetails_links = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {links} -> links) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {links = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | Linux-specific modifications that are applied to the container, such as
-- Linux kernel capabilities.
awsEcsTaskDefinitionContainerDefinitionsDetails_linuxParameters :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
awsEcsTaskDefinitionContainerDefinitionsDetails_linuxParameters = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {linuxParameters} -> linuxParameters) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {linuxParameters = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The log configuration specification for the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_logConfiguration :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsLogConfigurationDetails)
awsEcsTaskDefinitionContainerDefinitionsDetails_logConfiguration = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {logConfiguration} -> logConfiguration) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {logConfiguration = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The amount (in MiB) of memory to present to the container. If the
-- container attempts to exceed the memory specified here, the container is
-- shut down. The total amount of memory reserved for all containers within
-- a task must be lower than the task memory value, if one is specified.
awsEcsTaskDefinitionContainerDefinitionsDetails_memory :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsDetails_memory = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {memory} -> memory) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {memory = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The soft limit (in MiB) of memory to reserve for the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_memoryReservation :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsDetails_memoryReservation = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {memoryReservation} -> memoryReservation) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {memoryReservation = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The mount points for the data volumes in the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_mountPoints :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsMountPointsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_mountPoints = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {mountPoints} -> mountPoints) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {mountPoints = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The name of the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_name :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Text)
awsEcsTaskDefinitionContainerDefinitionsDetails_name = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {name} -> name) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {name = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The list of port mappings for the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_portMappings :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsPortMappingsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_portMappings = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {portMappings} -> portMappings) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {portMappings = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | Whether the container is given elevated privileges on the host container
-- instance. The elevated privileges are similar to the root user.
awsEcsTaskDefinitionContainerDefinitionsDetails_privileged :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsDetails_privileged = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {privileged} -> privileged) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {privileged = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | Whether to allocate a TTY to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_pseudoTerminal :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsDetails_pseudoTerminal = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {pseudoTerminal} -> pseudoTerminal) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {pseudoTerminal = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | Whether the container is given read-only access to its root file system.
awsEcsTaskDefinitionContainerDefinitionsDetails_readonlyRootFilesystem :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsDetails_readonlyRootFilesystem = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {readonlyRootFilesystem} -> readonlyRootFilesystem) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {readonlyRootFilesystem = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The private repository authentication credentials to use.
awsEcsTaskDefinitionContainerDefinitionsDetails_repositoryCredentials :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsRepositoryCredentialsDetails)
awsEcsTaskDefinitionContainerDefinitionsDetails_repositoryCredentials = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {repositoryCredentials} -> repositoryCredentials) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {repositoryCredentials = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The type and amount of a resource to assign to a container. The only
-- supported resource is a GPU.
awsEcsTaskDefinitionContainerDefinitionsDetails_resourceRequirements :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsResourceRequirementsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_resourceRequirements = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {resourceRequirements} -> resourceRequirements) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {resourceRequirements = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The secrets to pass to the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_secrets :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsSecretsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_secrets = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {secrets} -> secrets) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {secrets = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The number of seconds to wait before giving up on resolving dependencies
-- for a container.
awsEcsTaskDefinitionContainerDefinitionsDetails_startTimeout :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsDetails_startTimeout = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {startTimeout} -> startTimeout) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {startTimeout = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | The number of seconds to wait before the container is stopped if it
-- doesn\'t shut down normally on its own.
awsEcsTaskDefinitionContainerDefinitionsDetails_stopTimeout :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsDetails_stopTimeout = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {stopTimeout} -> stopTimeout) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {stopTimeout = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | A list of namespaced kernel parameters to set in the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_systemControls :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsSystemControlsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_systemControls = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {systemControls} -> systemControls) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {systemControls = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | A list of ulimits to set in the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_ulimits :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsUlimitsDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_ulimits = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {ulimits} -> ulimits) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {ulimits = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The user to use inside the container.
--
-- The value can use one of the following formats.
--
-- -   @ @/@user@/@ @
--
-- -   @ @/@user@/@ @:@ @/@group@/@ @
--
-- -   @ @/@uid@/@ @
--
-- -   @ @/@uid@/@ @:@ @/@gid@/@ @
--
-- -   @ @/@user@/@ @:@ @/@gid@/@ @
--
-- -   @ @/@uid@/@ @:@ @/@group@/@ @
awsEcsTaskDefinitionContainerDefinitionsDetails_user :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Text)
awsEcsTaskDefinitionContainerDefinitionsDetails_user = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {user} -> user) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {user = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

-- | Data volumes to mount from another container.
awsEcsTaskDefinitionContainerDefinitionsDetails_volumesFrom :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsVolumesFromDetails])
awsEcsTaskDefinitionContainerDefinitionsDetails_volumesFrom = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {volumesFrom} -> volumesFrom) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {volumesFrom = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails) Prelude.. Lens.mapping Lens.coerced

-- | The working directory in which to run commands inside the container.
awsEcsTaskDefinitionContainerDefinitionsDetails_workingDirectory :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsDetails (Prelude.Maybe Prelude.Text)
awsEcsTaskDefinitionContainerDefinitionsDetails_workingDirectory = Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsDetails' {workingDirectory} -> workingDirectory) (\s@AwsEcsTaskDefinitionContainerDefinitionsDetails' {} a -> s {workingDirectory = a} :: AwsEcsTaskDefinitionContainerDefinitionsDetails)

instance
  Data.FromJSON
    AwsEcsTaskDefinitionContainerDefinitionsDetails
  where
  parseJSON =
    Data.withObject
      "AwsEcsTaskDefinitionContainerDefinitionsDetails"
      ( \x ->
          AwsEcsTaskDefinitionContainerDefinitionsDetails'
            Prelude.<$> (x Data..:? "Command" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "Cpu")
            Prelude.<*> (x Data..:? "DependsOn" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "DisableNetworking")
            Prelude.<*> ( x
                            Data..:? "DnsSearchDomains"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "DnsServers" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "DockerLabels" Data..!= Prelude.mempty)
            Prelude.<*> ( x
                            Data..:? "DockerSecurityOptions"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "EntryPoint" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "Environment" Data..!= Prelude.mempty)
            Prelude.<*> ( x
                            Data..:? "EnvironmentFiles"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "Essential")
            Prelude.<*> (x Data..:? "ExtraHosts" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "FirelensConfiguration")
            Prelude.<*> (x Data..:? "HealthCheck")
            Prelude.<*> (x Data..:? "Hostname")
            Prelude.<*> (x Data..:? "Image")
            Prelude.<*> (x Data..:? "Interactive")
            Prelude.<*> (x Data..:? "Links" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "LinuxParameters")
            Prelude.<*> (x Data..:? "LogConfiguration")
            Prelude.<*> (x Data..:? "Memory")
            Prelude.<*> (x Data..:? "MemoryReservation")
            Prelude.<*> (x Data..:? "MountPoints" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "Name")
            Prelude.<*> (x Data..:? "PortMappings" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "Privileged")
            Prelude.<*> (x Data..:? "PseudoTerminal")
            Prelude.<*> (x Data..:? "ReadonlyRootFilesystem")
            Prelude.<*> (x Data..:? "RepositoryCredentials")
            Prelude.<*> ( x
                            Data..:? "ResourceRequirements"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "Secrets" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "StartTimeout")
            Prelude.<*> (x Data..:? "StopTimeout")
            Prelude.<*> (x Data..:? "SystemControls" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "Ulimits" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "User")
            Prelude.<*> (x Data..:? "VolumesFrom" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "WorkingDirectory")
      )

instance
  Prelude.Hashable
    AwsEcsTaskDefinitionContainerDefinitionsDetails
  where
  hashWithSalt
    _salt
    AwsEcsTaskDefinitionContainerDefinitionsDetails' {..} =
      _salt
        `Prelude.hashWithSalt` command
        `Prelude.hashWithSalt` cpu
        `Prelude.hashWithSalt` dependsOn
        `Prelude.hashWithSalt` disableNetworking
        `Prelude.hashWithSalt` dnsSearchDomains
        `Prelude.hashWithSalt` dnsServers
        `Prelude.hashWithSalt` dockerLabels
        `Prelude.hashWithSalt` dockerSecurityOptions
        `Prelude.hashWithSalt` entryPoint
        `Prelude.hashWithSalt` environment
        `Prelude.hashWithSalt` environmentFiles
        `Prelude.hashWithSalt` essential
        `Prelude.hashWithSalt` extraHosts
        `Prelude.hashWithSalt` firelensConfiguration
        `Prelude.hashWithSalt` healthCheck
        `Prelude.hashWithSalt` hostname
        `Prelude.hashWithSalt` image
        `Prelude.hashWithSalt` interactive
        `Prelude.hashWithSalt` links
        `Prelude.hashWithSalt` linuxParameters
        `Prelude.hashWithSalt` logConfiguration
        `Prelude.hashWithSalt` memory
        `Prelude.hashWithSalt` memoryReservation
        `Prelude.hashWithSalt` mountPoints
        `Prelude.hashWithSalt` name
        `Prelude.hashWithSalt` portMappings
        `Prelude.hashWithSalt` privileged
        `Prelude.hashWithSalt` pseudoTerminal
        `Prelude.hashWithSalt` readonlyRootFilesystem
        `Prelude.hashWithSalt` repositoryCredentials
        `Prelude.hashWithSalt` resourceRequirements
        `Prelude.hashWithSalt` secrets
        `Prelude.hashWithSalt` startTimeout
        `Prelude.hashWithSalt` stopTimeout
        `Prelude.hashWithSalt` systemControls
        `Prelude.hashWithSalt` ulimits
        `Prelude.hashWithSalt` user
        `Prelude.hashWithSalt` volumesFrom
        `Prelude.hashWithSalt` workingDirectory

instance
  Prelude.NFData
    AwsEcsTaskDefinitionContainerDefinitionsDetails
  where
  rnf
    AwsEcsTaskDefinitionContainerDefinitionsDetails' {..} =
      Prelude.rnf command
        `Prelude.seq` Prelude.rnf cpu
        `Prelude.seq` Prelude.rnf dependsOn
        `Prelude.seq` Prelude.rnf disableNetworking
        `Prelude.seq` Prelude.rnf dnsSearchDomains
        `Prelude.seq` Prelude.rnf dnsServers
        `Prelude.seq` Prelude.rnf dockerLabels
        `Prelude.seq` Prelude.rnf dockerSecurityOptions
        `Prelude.seq` Prelude.rnf entryPoint
        `Prelude.seq` Prelude.rnf environment
        `Prelude.seq` Prelude.rnf environmentFiles
        `Prelude.seq` Prelude.rnf essential
        `Prelude.seq` Prelude.rnf extraHosts
        `Prelude.seq` Prelude.rnf firelensConfiguration
        `Prelude.seq` Prelude.rnf healthCheck
        `Prelude.seq` Prelude.rnf hostname
        `Prelude.seq` Prelude.rnf image
        `Prelude.seq` Prelude.rnf interactive
        `Prelude.seq` Prelude.rnf links
        `Prelude.seq` Prelude.rnf linuxParameters
        `Prelude.seq` Prelude.rnf logConfiguration
        `Prelude.seq` Prelude.rnf memory
        `Prelude.seq` Prelude.rnf
          memoryReservation
        `Prelude.seq` Prelude.rnf
          mountPoints
        `Prelude.seq` Prelude.rnf name
        `Prelude.seq` Prelude.rnf
          portMappings
        `Prelude.seq` Prelude.rnf
          privileged
        `Prelude.seq` Prelude.rnf
          pseudoTerminal
        `Prelude.seq` Prelude.rnf
          readonlyRootFilesystem
        `Prelude.seq` Prelude.rnf
          repositoryCredentials
        `Prelude.seq` Prelude.rnf
          resourceRequirements
        `Prelude.seq` Prelude.rnf
          secrets
        `Prelude.seq` Prelude.rnf
          startTimeout
        `Prelude.seq` Prelude.rnf
          stopTimeout
        `Prelude.seq` Prelude.rnf
          systemControls
        `Prelude.seq` Prelude.rnf
          ulimits
        `Prelude.seq` Prelude.rnf
          user
        `Prelude.seq` Prelude.rnf
          volumesFrom
        `Prelude.seq` Prelude.rnf
          workingDirectory

instance
  Data.ToJSON
    AwsEcsTaskDefinitionContainerDefinitionsDetails
  where
  toJSON
    AwsEcsTaskDefinitionContainerDefinitionsDetails' {..} =
      Data.object
        ( Prelude.catMaybes
            [ ("Command" Data..=) Prelude.<$> command,
              ("Cpu" Data..=) Prelude.<$> cpu,
              ("DependsOn" Data..=) Prelude.<$> dependsOn,
              ("DisableNetworking" Data..=)
                Prelude.<$> disableNetworking,
              ("DnsSearchDomains" Data..=)
                Prelude.<$> dnsSearchDomains,
              ("DnsServers" Data..=) Prelude.<$> dnsServers,
              ("DockerLabels" Data..=) Prelude.<$> dockerLabels,
              ("DockerSecurityOptions" Data..=)
                Prelude.<$> dockerSecurityOptions,
              ("EntryPoint" Data..=) Prelude.<$> entryPoint,
              ("Environment" Data..=) Prelude.<$> environment,
              ("EnvironmentFiles" Data..=)
                Prelude.<$> environmentFiles,
              ("Essential" Data..=) Prelude.<$> essential,
              ("ExtraHosts" Data..=) Prelude.<$> extraHosts,
              ("FirelensConfiguration" Data..=)
                Prelude.<$> firelensConfiguration,
              ("HealthCheck" Data..=) Prelude.<$> healthCheck,
              ("Hostname" Data..=) Prelude.<$> hostname,
              ("Image" Data..=) Prelude.<$> image,
              ("Interactive" Data..=) Prelude.<$> interactive,
              ("Links" Data..=) Prelude.<$> links,
              ("LinuxParameters" Data..=)
                Prelude.<$> linuxParameters,
              ("LogConfiguration" Data..=)
                Prelude.<$> logConfiguration,
              ("Memory" Data..=) Prelude.<$> memory,
              ("MemoryReservation" Data..=)
                Prelude.<$> memoryReservation,
              ("MountPoints" Data..=) Prelude.<$> mountPoints,
              ("Name" Data..=) Prelude.<$> name,
              ("PortMappings" Data..=) Prelude.<$> portMappings,
              ("Privileged" Data..=) Prelude.<$> privileged,
              ("PseudoTerminal" Data..=)
                Prelude.<$> pseudoTerminal,
              ("ReadonlyRootFilesystem" Data..=)
                Prelude.<$> readonlyRootFilesystem,
              ("RepositoryCredentials" Data..=)
                Prelude.<$> repositoryCredentials,
              ("ResourceRequirements" Data..=)
                Prelude.<$> resourceRequirements,
              ("Secrets" Data..=) Prelude.<$> secrets,
              ("StartTimeout" Data..=) Prelude.<$> startTimeout,
              ("StopTimeout" Data..=) Prelude.<$> stopTimeout,
              ("SystemControls" Data..=)
                Prelude.<$> systemControls,
              ("Ulimits" Data..=) Prelude.<$> ulimits,
              ("User" Data..=) Prelude.<$> user,
              ("VolumesFrom" Data..=) Prelude.<$> volumesFrom,
              ("WorkingDirectory" Data..=)
                Prelude.<$> workingDirectory
            ]
        )