{-# 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.Scheduler.Types.EcsParameters -- 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.Scheduler.Types.EcsParameters 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.Scheduler.Types.CapacityProviderStrategyItem import Amazonka.Scheduler.Types.LaunchType import Amazonka.Scheduler.Types.NetworkConfiguration import Amazonka.Scheduler.Types.PlacementConstraint import Amazonka.Scheduler.Types.PlacementStrategy import Amazonka.Scheduler.Types.PropagateTags -- | The templated target type for the Amazon ECS -- -- API operation. -- -- /See:/ 'newEcsParameters' smart constructor. data EcsParameters = EcsParameters' { -- | The capacity provider strategy to use for the task. capacityProviderStrategy :: Prelude.Maybe [CapacityProviderStrategyItem], -- | Specifies whether to enable Amazon ECS managed tags for the task. For -- more information, see -- -- in the /Amazon ECS Developer Guide/. 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. enableExecuteCommand :: Prelude.Maybe Prelude.Bool, -- | Specifies an ECS task group for the task. The maximum length is 255 -- characters. 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 -- -- in the /Amazon ECS Developer Guide/. launchType :: Prelude.Maybe LaunchType, -- | This structure specifies the network configuration for an ECS task. networkConfiguration :: Prelude.Maybe NetworkConfiguration, -- | 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). placementConstraints :: Prelude.Maybe [PlacementConstraint], -- | The task placement strategy for a task or service. 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@. 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 Amazon ECS\'s -- -- API action. propagateTags :: Prelude.Maybe PropagateTags, -- | The reference ID to use for the task. referenceId :: Prelude.Maybe 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. For more information, see -- -- in the /Amazon ECS API Reference/. tags :: Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text], -- | The number of tasks to create based on @TaskDefinition@. The default is -- @1@. taskCount :: Prelude.Maybe Prelude.Natural, -- | The Amazon Resource Name (ARN) of the task definition to use if the -- event target is an Amazon ECS task. taskDefinitionArn :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'EcsParameters' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'capacityProviderStrategy', 'ecsParameters_capacityProviderStrategy' - The capacity provider strategy to use for the task. -- -- 'enableECSManagedTags', 'ecsParameters_enableECSManagedTags' - Specifies whether to enable Amazon ECS managed tags for the task. For -- more information, see -- -- in the /Amazon ECS Developer Guide/. -- -- 'enableExecuteCommand', 'ecsParameters_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'', 'ecsParameters_group' - Specifies an ECS task group for the task. The maximum length is 255 -- characters. -- -- 'launchType', 'ecsParameters_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 -- -- in the /Amazon ECS Developer Guide/. -- -- 'networkConfiguration', 'ecsParameters_networkConfiguration' - This structure specifies the network configuration for an ECS task. -- -- 'placementConstraints', 'ecsParameters_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', 'ecsParameters_placementStrategy' - The task placement strategy for a task or service. -- -- 'platformVersion', 'ecsParameters_platformVersion' - Specifies the platform version for the task. Specify only the numeric -- portion of the platform version, such as @1.1.0@. -- -- 'propagateTags', 'ecsParameters_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 Amazon ECS\'s -- -- API action. -- -- 'referenceId', 'ecsParameters_referenceId' - The reference ID to use for the task. -- -- 'tags', 'ecsParameters_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. For more information, see -- -- in the /Amazon ECS API Reference/. -- -- 'taskCount', 'ecsParameters_taskCount' - The number of tasks to create based on @TaskDefinition@. The default is -- @1@. -- -- 'taskDefinitionArn', 'ecsParameters_taskDefinitionArn' - The Amazon Resource Name (ARN) of the task definition to use if the -- event target is an Amazon ECS task. newEcsParameters :: -- | 'taskDefinitionArn' Prelude.Text -> EcsParameters newEcsParameters pTaskDefinitionArn_ = EcsParameters' { capacityProviderStrategy = Prelude.Nothing, enableECSManagedTags = Prelude.Nothing, enableExecuteCommand = Prelude.Nothing, group' = Prelude.Nothing, launchType = Prelude.Nothing, networkConfiguration = Prelude.Nothing, placementConstraints = Prelude.Nothing, placementStrategy = Prelude.Nothing, platformVersion = Prelude.Nothing, propagateTags = Prelude.Nothing, referenceId = Prelude.Nothing, tags = Prelude.Nothing, taskCount = Prelude.Nothing, taskDefinitionArn = pTaskDefinitionArn_ } -- | The capacity provider strategy to use for the task. ecsParameters_capacityProviderStrategy :: Lens.Lens' EcsParameters (Prelude.Maybe [CapacityProviderStrategyItem]) ecsParameters_capacityProviderStrategy = Lens.lens (\EcsParameters' {capacityProviderStrategy} -> capacityProviderStrategy) (\s@EcsParameters' {} a -> s {capacityProviderStrategy = a} :: EcsParameters) Prelude.. Lens.mapping Lens.coerced -- | Specifies whether to enable Amazon ECS managed tags for the task. For -- more information, see -- -- in the /Amazon ECS Developer Guide/. ecsParameters_enableECSManagedTags :: Lens.Lens' EcsParameters (Prelude.Maybe Prelude.Bool) ecsParameters_enableECSManagedTags = Lens.lens (\EcsParameters' {enableECSManagedTags} -> enableECSManagedTags) (\s@EcsParameters' {} a -> s {enableECSManagedTags = a} :: EcsParameters) -- | 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. ecsParameters_enableExecuteCommand :: Lens.Lens' EcsParameters (Prelude.Maybe Prelude.Bool) ecsParameters_enableExecuteCommand = Lens.lens (\EcsParameters' {enableExecuteCommand} -> enableExecuteCommand) (\s@EcsParameters' {} a -> s {enableExecuteCommand = a} :: EcsParameters) -- | Specifies an ECS task group for the task. The maximum length is 255 -- characters. ecsParameters_group :: Lens.Lens' EcsParameters (Prelude.Maybe Prelude.Text) ecsParameters_group = Lens.lens (\EcsParameters' {group'} -> group') (\s@EcsParameters' {} a -> s {group' = a} :: EcsParameters) -- | 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 -- -- in the /Amazon ECS Developer Guide/. ecsParameters_launchType :: Lens.Lens' EcsParameters (Prelude.Maybe LaunchType) ecsParameters_launchType = Lens.lens (\EcsParameters' {launchType} -> launchType) (\s@EcsParameters' {} a -> s {launchType = a} :: EcsParameters) -- | This structure specifies the network configuration for an ECS task. ecsParameters_networkConfiguration :: Lens.Lens' EcsParameters (Prelude.Maybe NetworkConfiguration) ecsParameters_networkConfiguration = Lens.lens (\EcsParameters' {networkConfiguration} -> networkConfiguration) (\s@EcsParameters' {} a -> s {networkConfiguration = a} :: EcsParameters) -- | 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). ecsParameters_placementConstraints :: Lens.Lens' EcsParameters (Prelude.Maybe [PlacementConstraint]) ecsParameters_placementConstraints = Lens.lens (\EcsParameters' {placementConstraints} -> placementConstraints) (\s@EcsParameters' {} a -> s {placementConstraints = a} :: EcsParameters) Prelude.. Lens.mapping Lens.coerced -- | The task placement strategy for a task or service. ecsParameters_placementStrategy :: Lens.Lens' EcsParameters (Prelude.Maybe [PlacementStrategy]) ecsParameters_placementStrategy = Lens.lens (\EcsParameters' {placementStrategy} -> placementStrategy) (\s@EcsParameters' {} a -> s {placementStrategy = a} :: EcsParameters) Prelude.. Lens.mapping Lens.coerced -- | Specifies the platform version for the task. Specify only the numeric -- portion of the platform version, such as @1.1.0@. ecsParameters_platformVersion :: Lens.Lens' EcsParameters (Prelude.Maybe Prelude.Text) ecsParameters_platformVersion = Lens.lens (\EcsParameters' {platformVersion} -> platformVersion) (\s@EcsParameters' {} a -> s {platformVersion = a} :: EcsParameters) -- | 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 Amazon ECS\'s -- -- API action. ecsParameters_propagateTags :: Lens.Lens' EcsParameters (Prelude.Maybe PropagateTags) ecsParameters_propagateTags = Lens.lens (\EcsParameters' {propagateTags} -> propagateTags) (\s@EcsParameters' {} a -> s {propagateTags = a} :: EcsParameters) -- | The reference ID to use for the task. ecsParameters_referenceId :: Lens.Lens' EcsParameters (Prelude.Maybe Prelude.Text) ecsParameters_referenceId = Lens.lens (\EcsParameters' {referenceId} -> referenceId) (\s@EcsParameters' {} a -> s {referenceId = a} :: EcsParameters) -- | 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. For more information, see -- -- in the /Amazon ECS API Reference/. ecsParameters_tags :: Lens.Lens' EcsParameters (Prelude.Maybe [Prelude.HashMap Prelude.Text Prelude.Text]) ecsParameters_tags = Lens.lens (\EcsParameters' {tags} -> tags) (\s@EcsParameters' {} a -> s {tags = a} :: EcsParameters) Prelude.. Lens.mapping Lens.coerced -- | The number of tasks to create based on @TaskDefinition@. The default is -- @1@. ecsParameters_taskCount :: Lens.Lens' EcsParameters (Prelude.Maybe Prelude.Natural) ecsParameters_taskCount = Lens.lens (\EcsParameters' {taskCount} -> taskCount) (\s@EcsParameters' {} a -> s {taskCount = a} :: EcsParameters) -- | The Amazon Resource Name (ARN) of the task definition to use if the -- event target is an Amazon ECS task. ecsParameters_taskDefinitionArn :: Lens.Lens' EcsParameters Prelude.Text ecsParameters_taskDefinitionArn = Lens.lens (\EcsParameters' {taskDefinitionArn} -> taskDefinitionArn) (\s@EcsParameters' {} a -> s {taskDefinitionArn = a} :: EcsParameters) instance Data.FromJSON EcsParameters where parseJSON = Data.withObject "EcsParameters" ( \x -> EcsParameters' Prelude.<$> ( x Data..:? "CapacityProviderStrategy" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "EnableECSManagedTags") Prelude.<*> (x Data..:? "EnableExecuteCommand") Prelude.<*> (x Data..:? "Group") Prelude.<*> (x Data..:? "LaunchType") Prelude.<*> (x Data..:? "NetworkConfiguration") Prelude.<*> ( x Data..:? "PlacementConstraints" Data..!= Prelude.mempty ) Prelude.<*> ( x Data..:? "PlacementStrategy" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "PlatformVersion") Prelude.<*> (x Data..:? "PropagateTags") Prelude.<*> (x Data..:? "ReferenceId") Prelude.<*> (x Data..:? "Tags" Data..!= Prelude.mempty) Prelude.<*> (x Data..:? "TaskCount") Prelude.<*> (x Data..: "TaskDefinitionArn") ) instance Prelude.Hashable EcsParameters where hashWithSalt _salt EcsParameters' {..} = _salt `Prelude.hashWithSalt` capacityProviderStrategy `Prelude.hashWithSalt` enableECSManagedTags `Prelude.hashWithSalt` enableExecuteCommand `Prelude.hashWithSalt` group' `Prelude.hashWithSalt` launchType `Prelude.hashWithSalt` networkConfiguration `Prelude.hashWithSalt` placementConstraints `Prelude.hashWithSalt` placementStrategy `Prelude.hashWithSalt` platformVersion `Prelude.hashWithSalt` propagateTags `Prelude.hashWithSalt` referenceId `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` taskCount `Prelude.hashWithSalt` taskDefinitionArn instance Prelude.NFData EcsParameters where rnf EcsParameters' {..} = Prelude.rnf capacityProviderStrategy `Prelude.seq` Prelude.rnf enableECSManagedTags `Prelude.seq` Prelude.rnf enableExecuteCommand `Prelude.seq` Prelude.rnf group' `Prelude.seq` Prelude.rnf launchType `Prelude.seq` Prelude.rnf networkConfiguration `Prelude.seq` Prelude.rnf placementConstraints `Prelude.seq` Prelude.rnf placementStrategy `Prelude.seq` Prelude.rnf platformVersion `Prelude.seq` Prelude.rnf propagateTags `Prelude.seq` Prelude.rnf referenceId `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf taskCount `Prelude.seq` Prelude.rnf taskDefinitionArn instance Data.ToJSON EcsParameters where toJSON EcsParameters' {..} = Data.object ( Prelude.catMaybes [ ("CapacityProviderStrategy" Data..=) Prelude.<$> capacityProviderStrategy, ("EnableECSManagedTags" Data..=) Prelude.<$> enableECSManagedTags, ("EnableExecuteCommand" Data..=) Prelude.<$> enableExecuteCommand, ("Group" Data..=) Prelude.<$> group', ("LaunchType" Data..=) Prelude.<$> launchType, ("NetworkConfiguration" Data..=) Prelude.<$> networkConfiguration, ("PlacementConstraints" Data..=) Prelude.<$> placementConstraints, ("PlacementStrategy" Data..=) Prelude.<$> placementStrategy, ("PlatformVersion" Data..=) Prelude.<$> platformVersion, ("PropagateTags" Data..=) Prelude.<$> propagateTags, ("ReferenceId" Data..=) Prelude.<$> referenceId, ("Tags" Data..=) Prelude.<$> tags, ("TaskCount" Data..=) Prelude.<$> taskCount, Prelude.Just ("TaskDefinitionArn" Data..= taskDefinitionArn) ] )