{-# 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.PipeTargetEcsTaskParameters
-- 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.PipeTargetEcsTaskParameters 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.CapacityProviderStrategyItem
import Amazonka.Pipes.Types.EcsTaskOverride
import Amazonka.Pipes.Types.LaunchType
import Amazonka.Pipes.Types.NetworkConfiguration
import Amazonka.Pipes.Types.PlacementConstraint
import Amazonka.Pipes.Types.PlacementStrategy
import Amazonka.Pipes.Types.PropagateTags
import Amazonka.Pipes.Types.Tag
import qualified Amazonka.Prelude as Prelude

-- | The parameters for using an Amazon ECS task as a target.
--
-- /See:/ 'newPipeTargetEcsTaskParameters' smart constructor.
data PipeTargetEcsTaskParameters = PipeTargetEcsTaskParameters'
  { -- | The capacity provider strategy to use for the task.
    --
    -- If a @capacityProviderStrategy@ is specified, the @launchType@ parameter
    -- must be omitted. If no @capacityProviderStrategy@ or launchType is
    -- specified, the @defaultCapacityProviderStrategy@ for the cluster is
    -- used.
    PipeTargetEcsTaskParameters -> Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy :: Prelude.Maybe [CapacityProviderStrategyItem],
    -- | Specifies whether to enable Amazon ECS managed tags for the task. For
    -- more information, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html Tagging Your Amazon ECS Resources>
    -- in the Amazon Elastic Container Service Developer Guide.
    PipeTargetEcsTaskParameters -> Maybe Bool
enableECSManagedTags :: Prelude.Maybe Prelude.Bool,
    -- | Whether or not to enable the execute command functionality for the
    -- containers in this task. If true, this enables execute command
    -- functionality on all containers in the task.
    PipeTargetEcsTaskParameters -> Maybe Bool
enableExecuteCommand :: Prelude.Maybe Prelude.Bool,
    -- | Specifies an Amazon ECS task group for the task. The maximum length is
    -- 255 characters.
    PipeTargetEcsTaskParameters -> Maybe Text
group' :: Prelude.Maybe Prelude.Text,
    -- | Specifies the launch type on which your task is running. The launch type
    -- that you specify here must match one of the launch type
    -- (compatibilities) of the target task. The @FARGATE@ value is supported
    -- only in the Regions where Fargate with Amazon ECS is supported. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS-Fargate.html Fargate on Amazon ECS>
    -- in the /Amazon Elastic Container Service Developer Guide/.
    PipeTargetEcsTaskParameters -> Maybe LaunchType
launchType :: Prelude.Maybe LaunchType,
    -- | Use this structure if the Amazon ECS task uses the @awsvpc@ network
    -- mode. This structure specifies the VPC subnets and security groups
    -- associated with the task, and whether a public IP address is to be used.
    -- This structure is required if @LaunchType@ is @FARGATE@ because the
    -- @awsvpc@ mode is required for Fargate tasks.
    --
    -- If you specify @NetworkConfiguration@ when the target ECS task does not
    -- use the @awsvpc@ network mode, the task fails.
    PipeTargetEcsTaskParameters -> Maybe NetworkConfiguration
networkConfiguration :: Prelude.Maybe NetworkConfiguration,
    -- | The overrides that are associated with a task.
    PipeTargetEcsTaskParameters -> Maybe EcsTaskOverride
overrides :: Prelude.Maybe EcsTaskOverride,
    -- | 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 runtime).
    PipeTargetEcsTaskParameters -> Maybe [PlacementConstraint]
placementConstraints :: Prelude.Maybe [PlacementConstraint],
    -- | The placement strategy objects to use for the task. You can specify a
    -- maximum of five strategy rules per task.
    PipeTargetEcsTaskParameters -> Maybe [PlacementStrategy]
placementStrategy :: Prelude.Maybe [PlacementStrategy],
    -- | Specifies the platform version for the task. Specify only the numeric
    -- portion of the platform version, such as @1.1.0@.
    --
    -- This structure is used only if @LaunchType@ is @FARGATE@. For more
    -- information about valid platform versions, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Fargate Platform Versions>
    -- in the /Amazon Elastic Container Service Developer Guide/.
    PipeTargetEcsTaskParameters -> Maybe Text
platformVersion :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether to propagate the tags from the task definition to the
    -- task. If no value is specified, the tags are not propagated. Tags can
    -- only be propagated to the task during task creation. To add tags to a
    -- task after task creation, use the @TagResource@ API action.
    PipeTargetEcsTaskParameters -> Maybe PropagateTags
propagateTags :: Prelude.Maybe PropagateTags,
    -- | The reference ID to use for the task.
    PipeTargetEcsTaskParameters -> Maybe (Sensitive Text)
referenceId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The metadata that you apply to the task to help you categorize and
    -- organize them. Each tag consists of a key and an optional value, both of
    -- which you define. To learn more, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-tags RunTask>
    -- in the Amazon ECS API Reference.
    PipeTargetEcsTaskParameters -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The number of tasks to create based on @TaskDefinition@. The default is
    -- 1.
    PipeTargetEcsTaskParameters -> Maybe Natural
taskCount :: Prelude.Maybe Prelude.Natural,
    -- | The ARN of the task definition to use if the event target is an Amazon
    -- ECS task.
    PipeTargetEcsTaskParameters -> Text
taskDefinitionArn :: Prelude.Text
  }
  deriving (PipeTargetEcsTaskParameters -> PipeTargetEcsTaskParameters -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipeTargetEcsTaskParameters -> PipeTargetEcsTaskParameters -> Bool
$c/= :: PipeTargetEcsTaskParameters -> PipeTargetEcsTaskParameters -> Bool
== :: PipeTargetEcsTaskParameters -> PipeTargetEcsTaskParameters -> Bool
$c== :: PipeTargetEcsTaskParameters -> PipeTargetEcsTaskParameters -> Bool
Prelude.Eq, Int -> PipeTargetEcsTaskParameters -> ShowS
[PipeTargetEcsTaskParameters] -> ShowS
PipeTargetEcsTaskParameters -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PipeTargetEcsTaskParameters] -> ShowS
$cshowList :: [PipeTargetEcsTaskParameters] -> ShowS
show :: PipeTargetEcsTaskParameters -> String
$cshow :: PipeTargetEcsTaskParameters -> String
showsPrec :: Int -> PipeTargetEcsTaskParameters -> ShowS
$cshowsPrec :: Int -> PipeTargetEcsTaskParameters -> ShowS
Prelude.Show, forall x.
Rep PipeTargetEcsTaskParameters x -> PipeTargetEcsTaskParameters
forall x.
PipeTargetEcsTaskParameters -> Rep PipeTargetEcsTaskParameters x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PipeTargetEcsTaskParameters x -> PipeTargetEcsTaskParameters
$cfrom :: forall x.
PipeTargetEcsTaskParameters -> Rep PipeTargetEcsTaskParameters x
Prelude.Generic)

-- |
-- Create a value of 'PipeTargetEcsTaskParameters' 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:
--
-- 'capacityProviderStrategy', 'pipeTargetEcsTaskParameters_capacityProviderStrategy' - The capacity provider strategy to use for the task.
--
-- If a @capacityProviderStrategy@ is specified, the @launchType@ parameter
-- must be omitted. If no @capacityProviderStrategy@ or launchType is
-- specified, the @defaultCapacityProviderStrategy@ for the cluster is
-- used.
--
-- 'enableECSManagedTags', 'pipeTargetEcsTaskParameters_enableECSManagedTags' - Specifies whether to enable Amazon ECS managed tags for the task. For
-- more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html Tagging Your Amazon ECS Resources>
-- in the Amazon Elastic Container Service Developer Guide.
--
-- 'enableExecuteCommand', 'pipeTargetEcsTaskParameters_enableExecuteCommand' - Whether or not to enable the execute command functionality for the
-- containers in this task. If true, this enables execute command
-- functionality on all containers in the task.
--
-- 'group'', 'pipeTargetEcsTaskParameters_group' - Specifies an Amazon ECS task group for the task. The maximum length is
-- 255 characters.
--
-- 'launchType', 'pipeTargetEcsTaskParameters_launchType' - Specifies the launch type on which your task is running. The launch type
-- that you specify here must match one of the launch type
-- (compatibilities) of the target task. The @FARGATE@ value is supported
-- only in the Regions where Fargate with Amazon ECS is supported. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS-Fargate.html Fargate on Amazon ECS>
-- in the /Amazon Elastic Container Service Developer Guide/.
--
-- 'networkConfiguration', 'pipeTargetEcsTaskParameters_networkConfiguration' - Use this structure if the Amazon ECS task uses the @awsvpc@ network
-- mode. This structure specifies the VPC subnets and security groups
-- associated with the task, and whether a public IP address is to be used.
-- This structure is required if @LaunchType@ is @FARGATE@ because the
-- @awsvpc@ mode is required for Fargate tasks.
--
-- If you specify @NetworkConfiguration@ when the target ECS task does not
-- use the @awsvpc@ network mode, the task fails.
--
-- 'overrides', 'pipeTargetEcsTaskParameters_overrides' - The overrides that are associated with a task.
--
-- 'placementConstraints', 'pipeTargetEcsTaskParameters_placementConstraints' - 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 runtime).
--
-- 'placementStrategy', 'pipeTargetEcsTaskParameters_placementStrategy' - The placement strategy objects to use for the task. You can specify a
-- maximum of five strategy rules per task.
--
-- 'platformVersion', 'pipeTargetEcsTaskParameters_platformVersion' - Specifies the platform version for the task. Specify only the numeric
-- portion of the platform version, such as @1.1.0@.
--
-- This structure is used only if @LaunchType@ is @FARGATE@. For more
-- information about valid platform versions, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Fargate Platform Versions>
-- in the /Amazon Elastic Container Service Developer Guide/.
--
-- 'propagateTags', 'pipeTargetEcsTaskParameters_propagateTags' - Specifies whether to propagate the tags from the task definition to the
-- task. If no value is specified, the tags are not propagated. Tags can
-- only be propagated to the task during task creation. To add tags to a
-- task after task creation, use the @TagResource@ API action.
--
-- 'referenceId', 'pipeTargetEcsTaskParameters_referenceId' - The reference ID to use for the task.
--
-- 'tags', 'pipeTargetEcsTaskParameters_tags' - The metadata that you apply to the task to help you categorize and
-- organize them. Each tag consists of a key and an optional value, both of
-- which you define. To learn more, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-tags RunTask>
-- in the Amazon ECS API Reference.
--
-- 'taskCount', 'pipeTargetEcsTaskParameters_taskCount' - The number of tasks to create based on @TaskDefinition@. The default is
-- 1.
--
-- 'taskDefinitionArn', 'pipeTargetEcsTaskParameters_taskDefinitionArn' - The ARN of the task definition to use if the event target is an Amazon
-- ECS task.
newPipeTargetEcsTaskParameters ::
  -- | 'taskDefinitionArn'
  Prelude.Text ->
  PipeTargetEcsTaskParameters
newPipeTargetEcsTaskParameters :: Text -> PipeTargetEcsTaskParameters
newPipeTargetEcsTaskParameters Text
pTaskDefinitionArn_ =
  PipeTargetEcsTaskParameters'
    { $sel:capacityProviderStrategy:PipeTargetEcsTaskParameters' :: Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy =
        forall a. Maybe a
Prelude.Nothing,
      $sel:enableECSManagedTags:PipeTargetEcsTaskParameters' :: Maybe Bool
enableECSManagedTags = forall a. Maybe a
Prelude.Nothing,
      $sel:enableExecuteCommand:PipeTargetEcsTaskParameters' :: Maybe Bool
enableExecuteCommand = forall a. Maybe a
Prelude.Nothing,
      $sel:group':PipeTargetEcsTaskParameters' :: Maybe Text
group' = forall a. Maybe a
Prelude.Nothing,
      $sel:launchType:PipeTargetEcsTaskParameters' :: Maybe LaunchType
launchType = forall a. Maybe a
Prelude.Nothing,
      $sel:networkConfiguration:PipeTargetEcsTaskParameters' :: Maybe NetworkConfiguration
networkConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:overrides:PipeTargetEcsTaskParameters' :: Maybe EcsTaskOverride
overrides = forall a. Maybe a
Prelude.Nothing,
      $sel:placementConstraints:PipeTargetEcsTaskParameters' :: Maybe [PlacementConstraint]
placementConstraints = forall a. Maybe a
Prelude.Nothing,
      $sel:placementStrategy:PipeTargetEcsTaskParameters' :: Maybe [PlacementStrategy]
placementStrategy = forall a. Maybe a
Prelude.Nothing,
      $sel:platformVersion:PipeTargetEcsTaskParameters' :: Maybe Text
platformVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:propagateTags:PipeTargetEcsTaskParameters' :: Maybe PropagateTags
propagateTags = forall a. Maybe a
Prelude.Nothing,
      $sel:referenceId:PipeTargetEcsTaskParameters' :: Maybe (Sensitive Text)
referenceId = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:PipeTargetEcsTaskParameters' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:taskCount:PipeTargetEcsTaskParameters' :: Maybe Natural
taskCount = forall a. Maybe a
Prelude.Nothing,
      $sel:taskDefinitionArn:PipeTargetEcsTaskParameters' :: Text
taskDefinitionArn = Text
pTaskDefinitionArn_
    }

-- | The capacity provider strategy to use for the task.
--
-- If a @capacityProviderStrategy@ is specified, the @launchType@ parameter
-- must be omitted. If no @capacityProviderStrategy@ or launchType is
-- specified, the @defaultCapacityProviderStrategy@ for the cluster is
-- used.
pipeTargetEcsTaskParameters_capacityProviderStrategy :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [CapacityProviderStrategyItem])
pipeTargetEcsTaskParameters_capacityProviderStrategy :: Lens'
  PipeTargetEcsTaskParameters (Maybe [CapacityProviderStrategyItem])
pipeTargetEcsTaskParameters_capacityProviderStrategy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
$sel:capacityProviderStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy} -> Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe [CapacityProviderStrategyItem]
a -> PipeTargetEcsTaskParameters
s {$sel:capacityProviderStrategy:PipeTargetEcsTaskParameters' :: Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy = Maybe [CapacityProviderStrategyItem]
a} :: PipeTargetEcsTaskParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specifies whether to enable Amazon ECS managed tags for the task. For
-- more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html Tagging Your Amazon ECS Resources>
-- in the Amazon Elastic Container Service Developer Guide.
pipeTargetEcsTaskParameters_enableECSManagedTags :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Bool)
pipeTargetEcsTaskParameters_enableECSManagedTags :: Lens' PipeTargetEcsTaskParameters (Maybe Bool)
pipeTargetEcsTaskParameters_enableECSManagedTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe Bool
enableECSManagedTags :: Maybe Bool
$sel:enableECSManagedTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
enableECSManagedTags} -> Maybe Bool
enableECSManagedTags) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe Bool
a -> PipeTargetEcsTaskParameters
s {$sel:enableECSManagedTags:PipeTargetEcsTaskParameters' :: Maybe Bool
enableECSManagedTags = Maybe Bool
a} :: PipeTargetEcsTaskParameters)

-- | Whether or not to enable the execute command functionality for the
-- containers in this task. If true, this enables execute command
-- functionality on all containers in the task.
pipeTargetEcsTaskParameters_enableExecuteCommand :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Bool)
pipeTargetEcsTaskParameters_enableExecuteCommand :: Lens' PipeTargetEcsTaskParameters (Maybe Bool)
pipeTargetEcsTaskParameters_enableExecuteCommand = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe Bool
enableExecuteCommand :: Maybe Bool
$sel:enableExecuteCommand:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
enableExecuteCommand} -> Maybe Bool
enableExecuteCommand) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe Bool
a -> PipeTargetEcsTaskParameters
s {$sel:enableExecuteCommand:PipeTargetEcsTaskParameters' :: Maybe Bool
enableExecuteCommand = Maybe Bool
a} :: PipeTargetEcsTaskParameters)

-- | Specifies an Amazon ECS task group for the task. The maximum length is
-- 255 characters.
pipeTargetEcsTaskParameters_group :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Text)
pipeTargetEcsTaskParameters_group :: Lens' PipeTargetEcsTaskParameters (Maybe Text)
pipeTargetEcsTaskParameters_group = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe Text
group' :: Maybe Text
$sel:group':PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
group'} -> Maybe Text
group') (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe Text
a -> PipeTargetEcsTaskParameters
s {$sel:group':PipeTargetEcsTaskParameters' :: Maybe Text
group' = Maybe Text
a} :: PipeTargetEcsTaskParameters)

-- | Specifies the launch type on which your task is running. The launch type
-- that you specify here must match one of the launch type
-- (compatibilities) of the target task. The @FARGATE@ value is supported
-- only in the Regions where Fargate with Amazon ECS is supported. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS-Fargate.html Fargate on Amazon ECS>
-- in the /Amazon Elastic Container Service Developer Guide/.
pipeTargetEcsTaskParameters_launchType :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe LaunchType)
pipeTargetEcsTaskParameters_launchType :: Lens' PipeTargetEcsTaskParameters (Maybe LaunchType)
pipeTargetEcsTaskParameters_launchType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe LaunchType
launchType :: Maybe LaunchType
$sel:launchType:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe LaunchType
launchType} -> Maybe LaunchType
launchType) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe LaunchType
a -> PipeTargetEcsTaskParameters
s {$sel:launchType:PipeTargetEcsTaskParameters' :: Maybe LaunchType
launchType = Maybe LaunchType
a} :: PipeTargetEcsTaskParameters)

-- | Use this structure if the Amazon ECS task uses the @awsvpc@ network
-- mode. This structure specifies the VPC subnets and security groups
-- associated with the task, and whether a public IP address is to be used.
-- This structure is required if @LaunchType@ is @FARGATE@ because the
-- @awsvpc@ mode is required for Fargate tasks.
--
-- If you specify @NetworkConfiguration@ when the target ECS task does not
-- use the @awsvpc@ network mode, the task fails.
pipeTargetEcsTaskParameters_networkConfiguration :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe NetworkConfiguration)
pipeTargetEcsTaskParameters_networkConfiguration :: Lens' PipeTargetEcsTaskParameters (Maybe NetworkConfiguration)
pipeTargetEcsTaskParameters_networkConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe NetworkConfiguration
networkConfiguration :: Maybe NetworkConfiguration
$sel:networkConfiguration:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe NetworkConfiguration
networkConfiguration} -> Maybe NetworkConfiguration
networkConfiguration) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe NetworkConfiguration
a -> PipeTargetEcsTaskParameters
s {$sel:networkConfiguration:PipeTargetEcsTaskParameters' :: Maybe NetworkConfiguration
networkConfiguration = Maybe NetworkConfiguration
a} :: PipeTargetEcsTaskParameters)

-- | The overrides that are associated with a task.
pipeTargetEcsTaskParameters_overrides :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe EcsTaskOverride)
pipeTargetEcsTaskParameters_overrides :: Lens' PipeTargetEcsTaskParameters (Maybe EcsTaskOverride)
pipeTargetEcsTaskParameters_overrides = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe EcsTaskOverride
overrides :: Maybe EcsTaskOverride
$sel:overrides:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe EcsTaskOverride
overrides} -> Maybe EcsTaskOverride
overrides) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe EcsTaskOverride
a -> PipeTargetEcsTaskParameters
s {$sel:overrides:PipeTargetEcsTaskParameters' :: Maybe EcsTaskOverride
overrides = Maybe EcsTaskOverride
a} :: PipeTargetEcsTaskParameters)

-- | 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 runtime).
pipeTargetEcsTaskParameters_placementConstraints :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [PlacementConstraint])
pipeTargetEcsTaskParameters_placementConstraints :: Lens' PipeTargetEcsTaskParameters (Maybe [PlacementConstraint])
pipeTargetEcsTaskParameters_placementConstraints = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe [PlacementConstraint]
placementConstraints :: Maybe [PlacementConstraint]
$sel:placementConstraints:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementConstraint]
placementConstraints} -> Maybe [PlacementConstraint]
placementConstraints) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe [PlacementConstraint]
a -> PipeTargetEcsTaskParameters
s {$sel:placementConstraints:PipeTargetEcsTaskParameters' :: Maybe [PlacementConstraint]
placementConstraints = Maybe [PlacementConstraint]
a} :: PipeTargetEcsTaskParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The placement strategy objects to use for the task. You can specify a
-- maximum of five strategy rules per task.
pipeTargetEcsTaskParameters_placementStrategy :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [PlacementStrategy])
pipeTargetEcsTaskParameters_placementStrategy :: Lens' PipeTargetEcsTaskParameters (Maybe [PlacementStrategy])
pipeTargetEcsTaskParameters_placementStrategy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe [PlacementStrategy]
placementStrategy :: Maybe [PlacementStrategy]
$sel:placementStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementStrategy]
placementStrategy} -> Maybe [PlacementStrategy]
placementStrategy) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe [PlacementStrategy]
a -> PipeTargetEcsTaskParameters
s {$sel:placementStrategy:PipeTargetEcsTaskParameters' :: Maybe [PlacementStrategy]
placementStrategy = Maybe [PlacementStrategy]
a} :: PipeTargetEcsTaskParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specifies the platform version for the task. Specify only the numeric
-- portion of the platform version, such as @1.1.0@.
--
-- This structure is used only if @LaunchType@ is @FARGATE@. For more
-- information about valid platform versions, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html Fargate Platform Versions>
-- in the /Amazon Elastic Container Service Developer Guide/.
pipeTargetEcsTaskParameters_platformVersion :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Text)
pipeTargetEcsTaskParameters_platformVersion :: Lens' PipeTargetEcsTaskParameters (Maybe Text)
pipeTargetEcsTaskParameters_platformVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe Text
platformVersion :: Maybe Text
$sel:platformVersion:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
platformVersion} -> Maybe Text
platformVersion) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe Text
a -> PipeTargetEcsTaskParameters
s {$sel:platformVersion:PipeTargetEcsTaskParameters' :: Maybe Text
platformVersion = Maybe Text
a} :: PipeTargetEcsTaskParameters)

-- | Specifies whether to propagate the tags from the task definition to the
-- task. If no value is specified, the tags are not propagated. Tags can
-- only be propagated to the task during task creation. To add tags to a
-- task after task creation, use the @TagResource@ API action.
pipeTargetEcsTaskParameters_propagateTags :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe PropagateTags)
pipeTargetEcsTaskParameters_propagateTags :: Lens' PipeTargetEcsTaskParameters (Maybe PropagateTags)
pipeTargetEcsTaskParameters_propagateTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe PropagateTags
propagateTags :: Maybe PropagateTags
$sel:propagateTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe PropagateTags
propagateTags} -> Maybe PropagateTags
propagateTags) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe PropagateTags
a -> PipeTargetEcsTaskParameters
s {$sel:propagateTags:PipeTargetEcsTaskParameters' :: Maybe PropagateTags
propagateTags = Maybe PropagateTags
a} :: PipeTargetEcsTaskParameters)

-- | The reference ID to use for the task.
pipeTargetEcsTaskParameters_referenceId :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Text)
pipeTargetEcsTaskParameters_referenceId :: Lens' PipeTargetEcsTaskParameters (Maybe Text)
pipeTargetEcsTaskParameters_referenceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe (Sensitive Text)
referenceId :: Maybe (Sensitive Text)
$sel:referenceId:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe (Sensitive Text)
referenceId} -> Maybe (Sensitive Text)
referenceId) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe (Sensitive Text)
a -> PipeTargetEcsTaskParameters
s {$sel:referenceId:PipeTargetEcsTaskParameters' :: Maybe (Sensitive Text)
referenceId = Maybe (Sensitive Text)
a} :: PipeTargetEcsTaskParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The metadata that you apply to the task to help you categorize and
-- organize them. Each tag consists of a key and an optional value, both of
-- which you define. To learn more, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html#ECS-RunTask-request-tags RunTask>
-- in the Amazon ECS API Reference.
pipeTargetEcsTaskParameters_tags :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe [Tag])
pipeTargetEcsTaskParameters_tags :: Lens' PipeTargetEcsTaskParameters (Maybe [Tag])
pipeTargetEcsTaskParameters_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe [Tag]
a -> PipeTargetEcsTaskParameters
s {$sel:tags:PipeTargetEcsTaskParameters' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: PipeTargetEcsTaskParameters) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of tasks to create based on @TaskDefinition@. The default is
-- 1.
pipeTargetEcsTaskParameters_taskCount :: Lens.Lens' PipeTargetEcsTaskParameters (Prelude.Maybe Prelude.Natural)
pipeTargetEcsTaskParameters_taskCount :: Lens' PipeTargetEcsTaskParameters (Maybe Natural)
pipeTargetEcsTaskParameters_taskCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Maybe Natural
taskCount :: Maybe Natural
$sel:taskCount:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Natural
taskCount} -> Maybe Natural
taskCount) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Maybe Natural
a -> PipeTargetEcsTaskParameters
s {$sel:taskCount:PipeTargetEcsTaskParameters' :: Maybe Natural
taskCount = Maybe Natural
a} :: PipeTargetEcsTaskParameters)

-- | The ARN of the task definition to use if the event target is an Amazon
-- ECS task.
pipeTargetEcsTaskParameters_taskDefinitionArn :: Lens.Lens' PipeTargetEcsTaskParameters Prelude.Text
pipeTargetEcsTaskParameters_taskDefinitionArn :: Lens' PipeTargetEcsTaskParameters Text
pipeTargetEcsTaskParameters_taskDefinitionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PipeTargetEcsTaskParameters' {Text
taskDefinitionArn :: Text
$sel:taskDefinitionArn:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Text
taskDefinitionArn} -> Text
taskDefinitionArn) (\s :: PipeTargetEcsTaskParameters
s@PipeTargetEcsTaskParameters' {} Text
a -> PipeTargetEcsTaskParameters
s {$sel:taskDefinitionArn:PipeTargetEcsTaskParameters' :: Text
taskDefinitionArn = Text
a} :: PipeTargetEcsTaskParameters)

instance Data.FromJSON PipeTargetEcsTaskParameters where
  parseJSON :: Value -> Parser PipeTargetEcsTaskParameters
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"PipeTargetEcsTaskParameters"
      ( \Object
x ->
          Maybe [CapacityProviderStrategyItem]
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe LaunchType
-> Maybe NetworkConfiguration
-> Maybe EcsTaskOverride
-> Maybe [PlacementConstraint]
-> Maybe [PlacementStrategy]
-> Maybe Text
-> Maybe PropagateTags
-> Maybe (Sensitive Text)
-> Maybe [Tag]
-> Maybe Natural
-> Text
-> PipeTargetEcsTaskParameters
PipeTargetEcsTaskParameters'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CapacityProviderStrategy"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EnableECSManagedTags")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EnableExecuteCommand")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Group")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LaunchType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"NetworkConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Overrides")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PlacementConstraints"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PlacementStrategy"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PlatformVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PropagateTags")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ReferenceId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TaskCount")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"TaskDefinitionArn")
      )

instance Prelude.Hashable PipeTargetEcsTaskParameters where
  hashWithSalt :: Int -> PipeTargetEcsTaskParameters -> Int
hashWithSalt Int
_salt PipeTargetEcsTaskParameters' {Maybe Bool
Maybe Natural
Maybe [CapacityProviderStrategyItem]
Maybe [PlacementConstraint]
Maybe [PlacementStrategy]
Maybe [Tag]
Maybe Text
Maybe (Sensitive Text)
Maybe EcsTaskOverride
Maybe LaunchType
Maybe NetworkConfiguration
Maybe PropagateTags
Text
taskDefinitionArn :: Text
taskCount :: Maybe Natural
tags :: Maybe [Tag]
referenceId :: Maybe (Sensitive Text)
propagateTags :: Maybe PropagateTags
platformVersion :: Maybe Text
placementStrategy :: Maybe [PlacementStrategy]
placementConstraints :: Maybe [PlacementConstraint]
overrides :: Maybe EcsTaskOverride
networkConfiguration :: Maybe NetworkConfiguration
launchType :: Maybe LaunchType
group' :: Maybe Text
enableExecuteCommand :: Maybe Bool
enableECSManagedTags :: Maybe Bool
capacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
$sel:taskDefinitionArn:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Text
$sel:taskCount:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Natural
$sel:tags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [Tag]
$sel:referenceId:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe (Sensitive Text)
$sel:propagateTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe PropagateTags
$sel:platformVersion:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
$sel:placementStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementStrategy]
$sel:placementConstraints:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementConstraint]
$sel:overrides:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe EcsTaskOverride
$sel:networkConfiguration:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe NetworkConfiguration
$sel:launchType:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe LaunchType
$sel:group':PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
$sel:enableExecuteCommand:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
$sel:enableECSManagedTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
$sel:capacityProviderStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [CapacityProviderStrategyItem]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableECSManagedTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableExecuteCommand
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
group'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchType
launchType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NetworkConfiguration
networkConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EcsTaskOverride
overrides
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PlacementConstraint]
placementConstraints
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PlacementStrategy]
placementStrategy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platformVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PropagateTags
propagateTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
referenceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
taskCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
taskDefinitionArn

instance Prelude.NFData PipeTargetEcsTaskParameters where
  rnf :: PipeTargetEcsTaskParameters -> ()
rnf PipeTargetEcsTaskParameters' {Maybe Bool
Maybe Natural
Maybe [CapacityProviderStrategyItem]
Maybe [PlacementConstraint]
Maybe [PlacementStrategy]
Maybe [Tag]
Maybe Text
Maybe (Sensitive Text)
Maybe EcsTaskOverride
Maybe LaunchType
Maybe NetworkConfiguration
Maybe PropagateTags
Text
taskDefinitionArn :: Text
taskCount :: Maybe Natural
tags :: Maybe [Tag]
referenceId :: Maybe (Sensitive Text)
propagateTags :: Maybe PropagateTags
platformVersion :: Maybe Text
placementStrategy :: Maybe [PlacementStrategy]
placementConstraints :: Maybe [PlacementConstraint]
overrides :: Maybe EcsTaskOverride
networkConfiguration :: Maybe NetworkConfiguration
launchType :: Maybe LaunchType
group' :: Maybe Text
enableExecuteCommand :: Maybe Bool
enableECSManagedTags :: Maybe Bool
capacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
$sel:taskDefinitionArn:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Text
$sel:taskCount:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Natural
$sel:tags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [Tag]
$sel:referenceId:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe (Sensitive Text)
$sel:propagateTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe PropagateTags
$sel:platformVersion:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
$sel:placementStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementStrategy]
$sel:placementConstraints:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementConstraint]
$sel:overrides:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe EcsTaskOverride
$sel:networkConfiguration:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe NetworkConfiguration
$sel:launchType:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe LaunchType
$sel:group':PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
$sel:enableExecuteCommand:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
$sel:enableECSManagedTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
$sel:capacityProviderStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [CapacityProviderStrategyItem]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableECSManagedTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableExecuteCommand
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
group'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchType
launchType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NetworkConfiguration
networkConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EcsTaskOverride
overrides
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PlacementConstraint]
placementConstraints
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PlacementStrategy]
placementStrategy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platformVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PropagateTags
propagateTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
referenceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
taskCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
taskDefinitionArn

instance Data.ToJSON PipeTargetEcsTaskParameters where
  toJSON :: PipeTargetEcsTaskParameters -> Value
toJSON PipeTargetEcsTaskParameters' {Maybe Bool
Maybe Natural
Maybe [CapacityProviderStrategyItem]
Maybe [PlacementConstraint]
Maybe [PlacementStrategy]
Maybe [Tag]
Maybe Text
Maybe (Sensitive Text)
Maybe EcsTaskOverride
Maybe LaunchType
Maybe NetworkConfiguration
Maybe PropagateTags
Text
taskDefinitionArn :: Text
taskCount :: Maybe Natural
tags :: Maybe [Tag]
referenceId :: Maybe (Sensitive Text)
propagateTags :: Maybe PropagateTags
platformVersion :: Maybe Text
placementStrategy :: Maybe [PlacementStrategy]
placementConstraints :: Maybe [PlacementConstraint]
overrides :: Maybe EcsTaskOverride
networkConfiguration :: Maybe NetworkConfiguration
launchType :: Maybe LaunchType
group' :: Maybe Text
enableExecuteCommand :: Maybe Bool
enableECSManagedTags :: Maybe Bool
capacityProviderStrategy :: Maybe [CapacityProviderStrategyItem]
$sel:taskDefinitionArn:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Text
$sel:taskCount:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Natural
$sel:tags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [Tag]
$sel:referenceId:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe (Sensitive Text)
$sel:propagateTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe PropagateTags
$sel:platformVersion:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
$sel:placementStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementStrategy]
$sel:placementConstraints:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [PlacementConstraint]
$sel:overrides:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe EcsTaskOverride
$sel:networkConfiguration:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe NetworkConfiguration
$sel:launchType:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe LaunchType
$sel:group':PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Text
$sel:enableExecuteCommand:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
$sel:enableECSManagedTags:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe Bool
$sel:capacityProviderStrategy:PipeTargetEcsTaskParameters' :: PipeTargetEcsTaskParameters -> Maybe [CapacityProviderStrategyItem]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"CapacityProviderStrategy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [CapacityProviderStrategyItem]
capacityProviderStrategy,
            (Key
"EnableECSManagedTags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
enableECSManagedTags,
            (Key
"EnableExecuteCommand" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
enableExecuteCommand,
            (Key
"Group" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
group',
            (Key
"LaunchType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LaunchType
launchType,
            (Key
"NetworkConfiguration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe NetworkConfiguration
networkConfiguration,
            (Key
"Overrides" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EcsTaskOverride
overrides,
            (Key
"PlacementConstraints" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [PlacementConstraint]
placementConstraints,
            (Key
"PlacementStrategy" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [PlacementStrategy]
placementStrategy,
            (Key
"PlatformVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
platformVersion,
            (Key
"PropagateTags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PropagateTags
propagateTags,
            (Key
"ReferenceId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive Text)
referenceId,
            (Key
"Tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags,
            (Key
"TaskCount" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
taskCount,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"TaskDefinitionArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
taskDefinitionArn)
          ]
      )