packages feed

amazonka-pipes-2.0: gen/Amazonka/Pipes/Types/EcsTaskOverride.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.Pipes.Types.EcsTaskOverride
-- 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.Pipes.Types.EcsTaskOverride where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Pipes.Types.EcsContainerOverride
import Amazonka.Pipes.Types.EcsEphemeralStorage
import Amazonka.Pipes.Types.EcsInferenceAcceleratorOverride
import qualified Amazonka.Prelude as Prelude

-- | The overrides that are associated with a task.
--
-- /See:/ 'newEcsTaskOverride' smart constructor.
data EcsTaskOverride = EcsTaskOverride'
  { -- | One or more container overrides that are sent to a task.
    containerOverrides :: Prelude.Maybe [EcsContainerOverride],
    -- | The cpu override for the task.
    cpu :: Prelude.Maybe Prelude.Text,
    -- | The ephemeral storage setting override for the task.
    --
    -- This parameter is only supported for tasks hosted on Fargate that use
    -- the following platform versions:
    --
    -- -   Linux platform version @1.4.0@ or later.
    --
    -- -   Windows platform version @1.0.0@ or later.
    ephemeralStorage :: Prelude.Maybe EcsEphemeralStorage,
    -- | The Amazon Resource Name (ARN) of the task execution IAM role override
    -- for the task. For more information, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html Amazon ECS task execution IAM role>
    -- in the /Amazon Elastic Container Service Developer Guide/.
    executionRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The Elastic Inference accelerator override for the task.
    inferenceAcceleratorOverrides :: Prelude.Maybe [EcsInferenceAcceleratorOverride],
    -- | The memory override for the task.
    memory :: Prelude.Maybe Prelude.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. For more information, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html IAM Role for Tasks>
    -- in the /Amazon Elastic Container Service Developer Guide/.
    taskRoleArn :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'EcsTaskOverride' 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:
--
-- 'containerOverrides', 'ecsTaskOverride_containerOverrides' - One or more container overrides that are sent to a task.
--
-- 'cpu', 'ecsTaskOverride_cpu' - The cpu override for the task.
--
-- 'ephemeralStorage', 'ecsTaskOverride_ephemeralStorage' - The ephemeral storage setting override for the task.
--
-- This parameter is only supported for tasks hosted on Fargate that use
-- the following platform versions:
--
-- -   Linux platform version @1.4.0@ or later.
--
-- -   Windows platform version @1.0.0@ or later.
--
-- 'executionRoleArn', 'ecsTaskOverride_executionRoleArn' - The Amazon Resource Name (ARN) of the task execution IAM role override
-- for the task. For more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html Amazon ECS task execution IAM role>
-- in the /Amazon Elastic Container Service Developer Guide/.
--
-- 'inferenceAcceleratorOverrides', 'ecsTaskOverride_inferenceAcceleratorOverrides' - The Elastic Inference accelerator override for the task.
--
-- 'memory', 'ecsTaskOverride_memory' - The memory override for the task.
--
-- 'taskRoleArn', 'ecsTaskOverride_taskRoleArn' - 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. For more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html IAM Role for Tasks>
-- in the /Amazon Elastic Container Service Developer Guide/.
newEcsTaskOverride ::
  EcsTaskOverride
newEcsTaskOverride =
  EcsTaskOverride'
    { containerOverrides =
        Prelude.Nothing,
      cpu = Prelude.Nothing,
      ephemeralStorage = Prelude.Nothing,
      executionRoleArn = Prelude.Nothing,
      inferenceAcceleratorOverrides = Prelude.Nothing,
      memory = Prelude.Nothing,
      taskRoleArn = Prelude.Nothing
    }

-- | One or more container overrides that are sent to a task.
ecsTaskOverride_containerOverrides :: Lens.Lens' EcsTaskOverride (Prelude.Maybe [EcsContainerOverride])
ecsTaskOverride_containerOverrides = Lens.lens (\EcsTaskOverride' {containerOverrides} -> containerOverrides) (\s@EcsTaskOverride' {} a -> s {containerOverrides = a} :: EcsTaskOverride) Prelude.. Lens.mapping Lens.coerced

-- | The cpu override for the task.
ecsTaskOverride_cpu :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
ecsTaskOverride_cpu = Lens.lens (\EcsTaskOverride' {cpu} -> cpu) (\s@EcsTaskOverride' {} a -> s {cpu = a} :: EcsTaskOverride)

-- | The ephemeral storage setting override for the task.
--
-- This parameter is only supported for tasks hosted on Fargate that use
-- the following platform versions:
--
-- -   Linux platform version @1.4.0@ or later.
--
-- -   Windows platform version @1.0.0@ or later.
ecsTaskOverride_ephemeralStorage :: Lens.Lens' EcsTaskOverride (Prelude.Maybe EcsEphemeralStorage)
ecsTaskOverride_ephemeralStorage = Lens.lens (\EcsTaskOverride' {ephemeralStorage} -> ephemeralStorage) (\s@EcsTaskOverride' {} a -> s {ephemeralStorage = a} :: EcsTaskOverride)

-- | The Amazon Resource Name (ARN) of the task execution IAM role override
-- for the task. For more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html Amazon ECS task execution IAM role>
-- in the /Amazon Elastic Container Service Developer Guide/.
ecsTaskOverride_executionRoleArn :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
ecsTaskOverride_executionRoleArn = Lens.lens (\EcsTaskOverride' {executionRoleArn} -> executionRoleArn) (\s@EcsTaskOverride' {} a -> s {executionRoleArn = a} :: EcsTaskOverride)

-- | The Elastic Inference accelerator override for the task.
ecsTaskOverride_inferenceAcceleratorOverrides :: Lens.Lens' EcsTaskOverride (Prelude.Maybe [EcsInferenceAcceleratorOverride])
ecsTaskOverride_inferenceAcceleratorOverrides = Lens.lens (\EcsTaskOverride' {inferenceAcceleratorOverrides} -> inferenceAcceleratorOverrides) (\s@EcsTaskOverride' {} a -> s {inferenceAcceleratorOverrides = a} :: EcsTaskOverride) Prelude.. Lens.mapping Lens.coerced

-- | The memory override for the task.
ecsTaskOverride_memory :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
ecsTaskOverride_memory = Lens.lens (\EcsTaskOverride' {memory} -> memory) (\s@EcsTaskOverride' {} a -> s {memory = a} :: EcsTaskOverride)

-- | 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. For more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html IAM Role for Tasks>
-- in the /Amazon Elastic Container Service Developer Guide/.
ecsTaskOverride_taskRoleArn :: Lens.Lens' EcsTaskOverride (Prelude.Maybe Prelude.Text)
ecsTaskOverride_taskRoleArn = Lens.lens (\EcsTaskOverride' {taskRoleArn} -> taskRoleArn) (\s@EcsTaskOverride' {} a -> s {taskRoleArn = a} :: EcsTaskOverride)

instance Data.FromJSON EcsTaskOverride where
  parseJSON =
    Data.withObject
      "EcsTaskOverride"
      ( \x ->
          EcsTaskOverride'
            Prelude.<$> ( x
                            Data..:? "ContainerOverrides"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "Cpu")
            Prelude.<*> (x Data..:? "EphemeralStorage")
            Prelude.<*> (x Data..:? "ExecutionRoleArn")
            Prelude.<*> ( x
                            Data..:? "InferenceAcceleratorOverrides"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "Memory")
            Prelude.<*> (x Data..:? "TaskRoleArn")
      )

instance Prelude.Hashable EcsTaskOverride where
  hashWithSalt _salt EcsTaskOverride' {..} =
    _salt
      `Prelude.hashWithSalt` containerOverrides
      `Prelude.hashWithSalt` cpu
      `Prelude.hashWithSalt` ephemeralStorage
      `Prelude.hashWithSalt` executionRoleArn
      `Prelude.hashWithSalt` inferenceAcceleratorOverrides
      `Prelude.hashWithSalt` memory
      `Prelude.hashWithSalt` taskRoleArn

instance Prelude.NFData EcsTaskOverride where
  rnf EcsTaskOverride' {..} =
    Prelude.rnf containerOverrides
      `Prelude.seq` Prelude.rnf cpu
      `Prelude.seq` Prelude.rnf ephemeralStorage
      `Prelude.seq` Prelude.rnf executionRoleArn
      `Prelude.seq` Prelude.rnf inferenceAcceleratorOverrides
      `Prelude.seq` Prelude.rnf memory
      `Prelude.seq` Prelude.rnf taskRoleArn

instance Data.ToJSON EcsTaskOverride where
  toJSON EcsTaskOverride' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ContainerOverrides" Data..=)
              Prelude.<$> containerOverrides,
            ("Cpu" Data..=) Prelude.<$> cpu,
            ("EphemeralStorage" Data..=)
              Prelude.<$> ephemeralStorage,
            ("ExecutionRoleArn" Data..=)
              Prelude.<$> executionRoleArn,
            ("InferenceAcceleratorOverrides" Data..=)
              Prelude.<$> inferenceAcceleratorOverrides,
            ("Memory" Data..=) Prelude.<$> memory,
            ("TaskRoleArn" Data..=) Prelude.<$> taskRoleArn
          ]
      )