{-# 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.EC2.Types.SpotFleetRequestConfigData
-- 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.EC2.Types.SpotFleetRequestConfigData where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.AllocationStrategy
import Amazonka.EC2.Types.ExcessCapacityTerminationPolicy
import Amazonka.EC2.Types.FleetType
import Amazonka.EC2.Types.InstanceInterruptionBehavior
import Amazonka.EC2.Types.LaunchTemplateConfig
import Amazonka.EC2.Types.LoadBalancersConfig
import Amazonka.EC2.Types.OnDemandAllocationStrategy
import Amazonka.EC2.Types.SpotFleetLaunchSpecification
import Amazonka.EC2.Types.SpotMaintenanceStrategies
import Amazonka.EC2.Types.TagSpecification
import Amazonka.EC2.Types.TargetCapacityUnitType
import qualified Amazonka.Prelude as Prelude

-- | Describes the configuration of a Spot Fleet request.
--
-- /See:/ 'newSpotFleetRequestConfigData' smart constructor.
data SpotFleetRequestConfigData = SpotFleetRequestConfigData'
  { -- | The strategy that determines how to allocate the target Spot Instance
    -- capacity across the Spot Instance pools specified by the Spot Fleet
    -- launch configuration. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-allocation-strategy.html Allocation strategies for Spot Instances>
    -- in the /Amazon EC2 User Guide/.
    --
    -- [priceCapacityOptimized (recommended)]
    --     Spot Fleet identifies the pools with the highest capacity
    --     availability for the number of instances that are launching. This
    --     means that we will request Spot Instances from the pools that we
    --     believe have the lowest chance of interruption in the near term.
    --     Spot Fleet then requests Spot Instances from the lowest priced of
    --     these pools.
    --
    -- [capacityOptimized]
    --     Spot Fleet identifies the pools with the highest capacity
    --     availability for the number of instances that are launching. This
    --     means that we will request Spot Instances from the pools that we
    --     believe have the lowest chance of interruption in the near term. To
    --     give certain instance types a higher chance of launching first, use
    --     @capacityOptimizedPrioritized@. Set a priority for each instance
    --     type by using the @Priority@ parameter for
    --     @LaunchTemplateOverrides@. You can assign the same priority to
    --     different @LaunchTemplateOverrides@. EC2 implements the priorities
    --     on a best-effort basis, but optimizes for capacity first.
    --     @capacityOptimizedPrioritized@ is supported only if your Spot Fleet
    --     uses a launch template. Note that if the
    --     @OnDemandAllocationStrategy@ is set to @prioritized@, the same
    --     priority is applied when fulfilling On-Demand capacity.
    --
    -- [diversified]
    --     Spot Fleet requests instances from all of the Spot Instance pools
    --     that you specify.
    --
    -- [lowestPrice]
    --     Spot Fleet requests instances from the lowest priced Spot Instance
    --     pool that has available capacity. If the lowest priced pool doesn\'t
    --     have available capacity, the Spot Instances come from the next
    --     lowest priced pool that has available capacity. If a pool runs out
    --     of capacity before fulfilling your desired capacity, Spot Fleet will
    --     continue to fulfill your request by drawing from the next lowest
    --     priced pool. To ensure that your desired capacity is met, you might
    --     receive Spot Instances from several pools. Because this strategy
    --     only considers instance price and not capacity availability, it
    --     might lead to high interruption rates.
    --
    -- Default: @lowestPrice@
    SpotFleetRequestConfigData -> Maybe AllocationStrategy
allocationStrategy :: Prelude.Maybe AllocationStrategy,
    -- | A unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of your listings. This helps to avoid duplicate listings.
    -- For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
    SpotFleetRequestConfigData -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | Reserved.
    SpotFleetRequestConfigData -> Maybe Text
context :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether running Spot Instances should be terminated if you
    -- decrease the target capacity of the Spot Fleet request below the current
    -- size of the Spot Fleet.
    SpotFleetRequestConfigData -> Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy :: Prelude.Maybe ExcessCapacityTerminationPolicy,
    -- | The number of units fulfilled by this request compared to the set target
    -- capacity. You cannot set this value.
    SpotFleetRequestConfigData -> Maybe Double
fulfilledCapacity :: Prelude.Maybe Prelude.Double,
    -- | The behavior when a Spot Instance is interrupted. The default is
    -- @terminate@.
    SpotFleetRequestConfigData -> Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior :: Prelude.Maybe InstanceInterruptionBehavior,
    -- | The number of Spot pools across which to allocate your target Spot
    -- capacity. Valid only when Spot __AllocationStrategy__ is set to
    -- @lowest-price@. Spot Fleet selects the cheapest Spot pools and evenly
    -- allocates your target Spot capacity across the number of Spot pools that
    -- you specify.
    --
    -- Note that Spot Fleet attempts to draw Spot Instances from the number of
    -- pools that you specify on a best effort basis. If a pool runs out of
    -- Spot capacity before fulfilling your target capacity, Spot Fleet will
    -- continue to fulfill your request by drawing from the next cheapest pool.
    -- To ensure that your target capacity is met, you might receive Spot
    -- Instances from more than the number of pools that you specified.
    -- Similarly, if most of the pools have no Spot capacity, you might receive
    -- your full target capacity from fewer than the number of pools that you
    -- specified.
    SpotFleetRequestConfigData -> Maybe Int
instancePoolsToUseCount :: Prelude.Maybe Prelude.Int,
    -- | The launch specifications for the Spot Fleet request. If you specify
    -- @LaunchSpecifications@, you can\'t specify @LaunchTemplateConfigs@. If
    -- you include On-Demand capacity in your request, you must use
    -- @LaunchTemplateConfigs@.
    SpotFleetRequestConfigData -> Maybe [SpotFleetLaunchSpecification]
launchSpecifications :: Prelude.Maybe [SpotFleetLaunchSpecification],
    -- | The launch template and overrides. If you specify
    -- @LaunchTemplateConfigs@, you can\'t specify @LaunchSpecifications@. If
    -- you include On-Demand capacity in your request, you must use
    -- @LaunchTemplateConfigs@.
    SpotFleetRequestConfigData -> Maybe [LaunchTemplateConfig]
launchTemplateConfigs :: Prelude.Maybe [LaunchTemplateConfig],
    -- | One or more Classic Load Balancers and target groups to attach to the
    -- Spot Fleet request. Spot Fleet registers the running Spot Instances with
    -- the specified Classic Load Balancers and target groups.
    --
    -- With Network Load Balancers, Spot Fleet cannot register instances that
    -- have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1,
    -- G2, HI1, HS1, M1, M2, M3, and T1.
    SpotFleetRequestConfigData -> Maybe LoadBalancersConfig
loadBalancersConfig :: Prelude.Maybe LoadBalancersConfig,
    -- | The order of the launch template overrides to use in fulfilling
    -- On-Demand capacity. If you specify @lowestPrice@, Spot Fleet uses price
    -- to determine the order, launching the lowest price first. If you specify
    -- @prioritized@, Spot Fleet uses the priority that you assign to each Spot
    -- Fleet launch template override, launching the highest priority first. If
    -- you do not specify a value, Spot Fleet defaults to @lowestPrice@.
    SpotFleetRequestConfigData -> Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy :: Prelude.Maybe OnDemandAllocationStrategy,
    -- | The number of On-Demand units fulfilled by this request compared to the
    -- set target On-Demand capacity.
    SpotFleetRequestConfigData -> Maybe Double
onDemandFulfilledCapacity :: Prelude.Maybe Prelude.Double,
    -- | The maximum amount per hour for On-Demand Instances that you\'re willing
    -- to pay. You can use the @onDemandMaxTotalPrice@ parameter, the
    -- @spotMaxTotalPrice@ parameter, or both parameters to ensure that your
    -- fleet cost does not exceed your budget. If you set a maximum price per
    -- hour for the On-Demand Instances and Spot Instances in your request,
    -- Spot Fleet will launch instances until it reaches the maximum amount
    -- you\'re willing to pay. When the maximum amount you\'re willing to pay
    -- is reached, the fleet stops launching instances even if it hasn’t met
    -- the target capacity.
    SpotFleetRequestConfigData -> Maybe Text
onDemandMaxTotalPrice :: Prelude.Maybe Prelude.Text,
    -- | The number of On-Demand units to request. You can choose to set the
    -- target capacity in terms of instances or a performance characteristic
    -- that is important to your application workload, such as vCPUs, memory,
    -- or I\/O. If the request type is @maintain@, you can specify a target
    -- capacity of 0 and add capacity later.
    SpotFleetRequestConfigData -> Maybe Int
onDemandTargetCapacity :: Prelude.Maybe Prelude.Int,
    -- | Indicates whether Spot Fleet should replace unhealthy instances.
    SpotFleetRequestConfigData -> Maybe Bool
replaceUnhealthyInstances :: Prelude.Maybe Prelude.Bool,
    -- | The strategies for managing your Spot Instances that are at an elevated
    -- risk of being interrupted.
    SpotFleetRequestConfigData -> Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies :: Prelude.Maybe SpotMaintenanceStrategies,
    -- | The maximum amount per hour for Spot Instances that you\'re willing to
    -- pay. You can use the @spotdMaxTotalPrice@ parameter, the
    -- @onDemandMaxTotalPrice@ parameter, or both parameters to ensure that
    -- your fleet cost does not exceed your budget. If you set a maximum price
    -- per hour for the On-Demand Instances and Spot Instances in your request,
    -- Spot Fleet will launch instances until it reaches the maximum amount
    -- you\'re willing to pay. When the maximum amount you\'re willing to pay
    -- is reached, the fleet stops launching instances even if it hasn’t met
    -- the target capacity.
    SpotFleetRequestConfigData -> Maybe Text
spotMaxTotalPrice :: Prelude.Maybe Prelude.Text,
    -- | The maximum price per unit hour that you are willing to pay for a Spot
    -- Instance. We do not recommend using this parameter because it can lead
    -- to increased interruptions. If you do not specify this parameter, you
    -- will pay the current Spot price.
    --
    -- If you specify a maximum price, your instances will be interrupted more
    -- frequently than if you do not specify this parameter.
    SpotFleetRequestConfigData -> Maybe Text
spotPrice :: Prelude.Maybe Prelude.Text,
    -- | The key-value pair for tagging the Spot Fleet request on creation. The
    -- value for @ResourceType@ must be @spot-fleet-request@, otherwise the
    -- Spot Fleet request fails. To tag instances at launch, specify the tags
    -- in the
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template launch template>
    -- (valid only if you use @LaunchTemplateConfigs@) or in the
    -- @ @<https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotFleetTagSpecification.html SpotFleetTagSpecification>@ @
    -- (valid only if you use @LaunchSpecifications@). For information about
    -- tagging after launch, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources Tagging Your Resources>.
    SpotFleetRequestConfigData -> Maybe [TagSpecification]
tagSpecifications :: Prelude.Maybe [TagSpecification],
    -- | The unit for the target capacity.
    --
    -- Default: @units@ (translates to number of instances)
    SpotFleetRequestConfigData -> Maybe TargetCapacityUnitType
targetCapacityUnitType :: Prelude.Maybe TargetCapacityUnitType,
    -- | Indicates whether running Spot Instances are terminated when the Spot
    -- Fleet request expires.
    SpotFleetRequestConfigData -> Maybe Bool
terminateInstancesWithExpiration :: Prelude.Maybe Prelude.Bool,
    -- | The type of request. Indicates whether the Spot Fleet only requests the
    -- target capacity or also attempts to maintain it. When this value is
    -- @request@, the Spot Fleet only places the required requests. It does not
    -- attempt to replenish Spot Instances if capacity is diminished, nor does
    -- it submit requests in alternative Spot pools if capacity is not
    -- available. When this value is @maintain@, the Spot Fleet maintains the
    -- target capacity. The Spot Fleet places the required requests to meet
    -- capacity and automatically replenishes any interrupted instances.
    -- Default: @maintain@. @instant@ is listed but is not used by Spot Fleet.
    SpotFleetRequestConfigData -> Maybe FleetType
type' :: Prelude.Maybe FleetType,
    -- | The start date and time of the request, in UTC format
    -- (/YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). By default, Amazon EC2 starts
    -- fulfilling the request immediately.
    SpotFleetRequestConfigData -> Maybe ISO8601
validFrom :: Prelude.Maybe Data.ISO8601,
    -- | The end date and time of the request, in UTC format
    -- (/YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). After the end date and time, no new
    -- Spot Instance requests are placed or able to fulfill the request. If no
    -- value is specified, the Spot Fleet request remains until you cancel it.
    SpotFleetRequestConfigData -> Maybe ISO8601
validUntil :: Prelude.Maybe Data.ISO8601,
    -- | The Amazon Resource Name (ARN) of an Identity and Access Management
    -- (IAM) role that grants the Spot Fleet the permission to request, launch,
    -- terminate, and tag instances on your behalf. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html#spot-fleet-prerequisites Spot Fleet prerequisites>
    -- in the /Amazon EC2 User Guide/. Spot Fleet can terminate Spot Instances
    -- on your behalf when you cancel its Spot Fleet request using
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CancelSpotFleetRequests CancelSpotFleetRequests>
    -- or when the Spot Fleet request expires, if you set
    -- @TerminateInstancesWithExpiration@.
    SpotFleetRequestConfigData -> Text
iamFleetRole :: Prelude.Text,
    -- | The number of units to request for the Spot Fleet. You can choose to set
    -- the target capacity in terms of instances or a performance
    -- characteristic that is important to your application workload, such as
    -- vCPUs, memory, or I\/O. If the request type is @maintain@, you can
    -- specify a target capacity of 0 and add capacity later.
    SpotFleetRequestConfigData -> Int
targetCapacity :: Prelude.Int
  }
  deriving (SpotFleetRequestConfigData -> SpotFleetRequestConfigData -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SpotFleetRequestConfigData -> SpotFleetRequestConfigData -> Bool
$c/= :: SpotFleetRequestConfigData -> SpotFleetRequestConfigData -> Bool
== :: SpotFleetRequestConfigData -> SpotFleetRequestConfigData -> Bool
$c== :: SpotFleetRequestConfigData -> SpotFleetRequestConfigData -> Bool
Prelude.Eq, ReadPrec [SpotFleetRequestConfigData]
ReadPrec SpotFleetRequestConfigData
Int -> ReadS SpotFleetRequestConfigData
ReadS [SpotFleetRequestConfigData]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SpotFleetRequestConfigData]
$creadListPrec :: ReadPrec [SpotFleetRequestConfigData]
readPrec :: ReadPrec SpotFleetRequestConfigData
$creadPrec :: ReadPrec SpotFleetRequestConfigData
readList :: ReadS [SpotFleetRequestConfigData]
$creadList :: ReadS [SpotFleetRequestConfigData]
readsPrec :: Int -> ReadS SpotFleetRequestConfigData
$creadsPrec :: Int -> ReadS SpotFleetRequestConfigData
Prelude.Read, Int -> SpotFleetRequestConfigData -> ShowS
[SpotFleetRequestConfigData] -> ShowS
SpotFleetRequestConfigData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SpotFleetRequestConfigData] -> ShowS
$cshowList :: [SpotFleetRequestConfigData] -> ShowS
show :: SpotFleetRequestConfigData -> String
$cshow :: SpotFleetRequestConfigData -> String
showsPrec :: Int -> SpotFleetRequestConfigData -> ShowS
$cshowsPrec :: Int -> SpotFleetRequestConfigData -> ShowS
Prelude.Show, forall x.
Rep SpotFleetRequestConfigData x -> SpotFleetRequestConfigData
forall x.
SpotFleetRequestConfigData -> Rep SpotFleetRequestConfigData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep SpotFleetRequestConfigData x -> SpotFleetRequestConfigData
$cfrom :: forall x.
SpotFleetRequestConfigData -> Rep SpotFleetRequestConfigData x
Prelude.Generic)

-- |
-- Create a value of 'SpotFleetRequestConfigData' 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:
--
-- 'allocationStrategy', 'spotFleetRequestConfigData_allocationStrategy' - The strategy that determines how to allocate the target Spot Instance
-- capacity across the Spot Instance pools specified by the Spot Fleet
-- launch configuration. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-allocation-strategy.html Allocation strategies for Spot Instances>
-- in the /Amazon EC2 User Guide/.
--
-- [priceCapacityOptimized (recommended)]
--     Spot Fleet identifies the pools with the highest capacity
--     availability for the number of instances that are launching. This
--     means that we will request Spot Instances from the pools that we
--     believe have the lowest chance of interruption in the near term.
--     Spot Fleet then requests Spot Instances from the lowest priced of
--     these pools.
--
-- [capacityOptimized]
--     Spot Fleet identifies the pools with the highest capacity
--     availability for the number of instances that are launching. This
--     means that we will request Spot Instances from the pools that we
--     believe have the lowest chance of interruption in the near term. To
--     give certain instance types a higher chance of launching first, use
--     @capacityOptimizedPrioritized@. Set a priority for each instance
--     type by using the @Priority@ parameter for
--     @LaunchTemplateOverrides@. You can assign the same priority to
--     different @LaunchTemplateOverrides@. EC2 implements the priorities
--     on a best-effort basis, but optimizes for capacity first.
--     @capacityOptimizedPrioritized@ is supported only if your Spot Fleet
--     uses a launch template. Note that if the
--     @OnDemandAllocationStrategy@ is set to @prioritized@, the same
--     priority is applied when fulfilling On-Demand capacity.
--
-- [diversified]
--     Spot Fleet requests instances from all of the Spot Instance pools
--     that you specify.
--
-- [lowestPrice]
--     Spot Fleet requests instances from the lowest priced Spot Instance
--     pool that has available capacity. If the lowest priced pool doesn\'t
--     have available capacity, the Spot Instances come from the next
--     lowest priced pool that has available capacity. If a pool runs out
--     of capacity before fulfilling your desired capacity, Spot Fleet will
--     continue to fulfill your request by drawing from the next lowest
--     priced pool. To ensure that your desired capacity is met, you might
--     receive Spot Instances from several pools. Because this strategy
--     only considers instance price and not capacity availability, it
--     might lead to high interruption rates.
--
-- Default: @lowestPrice@
--
-- 'clientToken', 'spotFleetRequestConfigData_clientToken' - A unique, case-sensitive identifier that you provide to ensure the
-- idempotency of your listings. This helps to avoid duplicate listings.
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
--
-- 'context', 'spotFleetRequestConfigData_context' - Reserved.
--
-- 'excessCapacityTerminationPolicy', 'spotFleetRequestConfigData_excessCapacityTerminationPolicy' - Indicates whether running Spot Instances should be terminated if you
-- decrease the target capacity of the Spot Fleet request below the current
-- size of the Spot Fleet.
--
-- 'fulfilledCapacity', 'spotFleetRequestConfigData_fulfilledCapacity' - The number of units fulfilled by this request compared to the set target
-- capacity. You cannot set this value.
--
-- 'instanceInterruptionBehavior', 'spotFleetRequestConfigData_instanceInterruptionBehavior' - The behavior when a Spot Instance is interrupted. The default is
-- @terminate@.
--
-- 'instancePoolsToUseCount', 'spotFleetRequestConfigData_instancePoolsToUseCount' - The number of Spot pools across which to allocate your target Spot
-- capacity. Valid only when Spot __AllocationStrategy__ is set to
-- @lowest-price@. Spot Fleet selects the cheapest Spot pools and evenly
-- allocates your target Spot capacity across the number of Spot pools that
-- you specify.
--
-- Note that Spot Fleet attempts to draw Spot Instances from the number of
-- pools that you specify on a best effort basis. If a pool runs out of
-- Spot capacity before fulfilling your target capacity, Spot Fleet will
-- continue to fulfill your request by drawing from the next cheapest pool.
-- To ensure that your target capacity is met, you might receive Spot
-- Instances from more than the number of pools that you specified.
-- Similarly, if most of the pools have no Spot capacity, you might receive
-- your full target capacity from fewer than the number of pools that you
-- specified.
--
-- 'launchSpecifications', 'spotFleetRequestConfigData_launchSpecifications' - The launch specifications for the Spot Fleet request. If you specify
-- @LaunchSpecifications@, you can\'t specify @LaunchTemplateConfigs@. If
-- you include On-Demand capacity in your request, you must use
-- @LaunchTemplateConfigs@.
--
-- 'launchTemplateConfigs', 'spotFleetRequestConfigData_launchTemplateConfigs' - The launch template and overrides. If you specify
-- @LaunchTemplateConfigs@, you can\'t specify @LaunchSpecifications@. If
-- you include On-Demand capacity in your request, you must use
-- @LaunchTemplateConfigs@.
--
-- 'loadBalancersConfig', 'spotFleetRequestConfigData_loadBalancersConfig' - One or more Classic Load Balancers and target groups to attach to the
-- Spot Fleet request. Spot Fleet registers the running Spot Instances with
-- the specified Classic Load Balancers and target groups.
--
-- With Network Load Balancers, Spot Fleet cannot register instances that
-- have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1,
-- G2, HI1, HS1, M1, M2, M3, and T1.
--
-- 'onDemandAllocationStrategy', 'spotFleetRequestConfigData_onDemandAllocationStrategy' - The order of the launch template overrides to use in fulfilling
-- On-Demand capacity. If you specify @lowestPrice@, Spot Fleet uses price
-- to determine the order, launching the lowest price first. If you specify
-- @prioritized@, Spot Fleet uses the priority that you assign to each Spot
-- Fleet launch template override, launching the highest priority first. If
-- you do not specify a value, Spot Fleet defaults to @lowestPrice@.
--
-- 'onDemandFulfilledCapacity', 'spotFleetRequestConfigData_onDemandFulfilledCapacity' - The number of On-Demand units fulfilled by this request compared to the
-- set target On-Demand capacity.
--
-- 'onDemandMaxTotalPrice', 'spotFleetRequestConfigData_onDemandMaxTotalPrice' - The maximum amount per hour for On-Demand Instances that you\'re willing
-- to pay. You can use the @onDemandMaxTotalPrice@ parameter, the
-- @spotMaxTotalPrice@ parameter, or both parameters to ensure that your
-- fleet cost does not exceed your budget. If you set a maximum price per
-- hour for the On-Demand Instances and Spot Instances in your request,
-- Spot Fleet will launch instances until it reaches the maximum amount
-- you\'re willing to pay. When the maximum amount you\'re willing to pay
-- is reached, the fleet stops launching instances even if it hasn’t met
-- the target capacity.
--
-- 'onDemandTargetCapacity', 'spotFleetRequestConfigData_onDemandTargetCapacity' - The number of On-Demand units to request. You can choose to set the
-- target capacity in terms of instances or a performance characteristic
-- that is important to your application workload, such as vCPUs, memory,
-- or I\/O. If the request type is @maintain@, you can specify a target
-- capacity of 0 and add capacity later.
--
-- 'replaceUnhealthyInstances', 'spotFleetRequestConfigData_replaceUnhealthyInstances' - Indicates whether Spot Fleet should replace unhealthy instances.
--
-- 'spotMaintenanceStrategies', 'spotFleetRequestConfigData_spotMaintenanceStrategies' - The strategies for managing your Spot Instances that are at an elevated
-- risk of being interrupted.
--
-- 'spotMaxTotalPrice', 'spotFleetRequestConfigData_spotMaxTotalPrice' - The maximum amount per hour for Spot Instances that you\'re willing to
-- pay. You can use the @spotdMaxTotalPrice@ parameter, the
-- @onDemandMaxTotalPrice@ parameter, or both parameters to ensure that
-- your fleet cost does not exceed your budget. If you set a maximum price
-- per hour for the On-Demand Instances and Spot Instances in your request,
-- Spot Fleet will launch instances until it reaches the maximum amount
-- you\'re willing to pay. When the maximum amount you\'re willing to pay
-- is reached, the fleet stops launching instances even if it hasn’t met
-- the target capacity.
--
-- 'spotPrice', 'spotFleetRequestConfigData_spotPrice' - The maximum price per unit hour that you are willing to pay for a Spot
-- Instance. We do not recommend using this parameter because it can lead
-- to increased interruptions. If you do not specify this parameter, you
-- will pay the current Spot price.
--
-- If you specify a maximum price, your instances will be interrupted more
-- frequently than if you do not specify this parameter.
--
-- 'tagSpecifications', 'spotFleetRequestConfigData_tagSpecifications' - The key-value pair for tagging the Spot Fleet request on creation. The
-- value for @ResourceType@ must be @spot-fleet-request@, otherwise the
-- Spot Fleet request fails. To tag instances at launch, specify the tags
-- in the
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template launch template>
-- (valid only if you use @LaunchTemplateConfigs@) or in the
-- @ @<https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotFleetTagSpecification.html SpotFleetTagSpecification>@ @
-- (valid only if you use @LaunchSpecifications@). For information about
-- tagging after launch, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources Tagging Your Resources>.
--
-- 'targetCapacityUnitType', 'spotFleetRequestConfigData_targetCapacityUnitType' - The unit for the target capacity.
--
-- Default: @units@ (translates to number of instances)
--
-- 'terminateInstancesWithExpiration', 'spotFleetRequestConfigData_terminateInstancesWithExpiration' - Indicates whether running Spot Instances are terminated when the Spot
-- Fleet request expires.
--
-- 'type'', 'spotFleetRequestConfigData_type' - The type of request. Indicates whether the Spot Fleet only requests the
-- target capacity or also attempts to maintain it. When this value is
-- @request@, the Spot Fleet only places the required requests. It does not
-- attempt to replenish Spot Instances if capacity is diminished, nor does
-- it submit requests in alternative Spot pools if capacity is not
-- available. When this value is @maintain@, the Spot Fleet maintains the
-- target capacity. The Spot Fleet places the required requests to meet
-- capacity and automatically replenishes any interrupted instances.
-- Default: @maintain@. @instant@ is listed but is not used by Spot Fleet.
--
-- 'validFrom', 'spotFleetRequestConfigData_validFrom' - The start date and time of the request, in UTC format
-- (/YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). By default, Amazon EC2 starts
-- fulfilling the request immediately.
--
-- 'validUntil', 'spotFleetRequestConfigData_validUntil' - The end date and time of the request, in UTC format
-- (/YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). After the end date and time, no new
-- Spot Instance requests are placed or able to fulfill the request. If no
-- value is specified, the Spot Fleet request remains until you cancel it.
--
-- 'iamFleetRole', 'spotFleetRequestConfigData_iamFleetRole' - The Amazon Resource Name (ARN) of an Identity and Access Management
-- (IAM) role that grants the Spot Fleet the permission to request, launch,
-- terminate, and tag instances on your behalf. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html#spot-fleet-prerequisites Spot Fleet prerequisites>
-- in the /Amazon EC2 User Guide/. Spot Fleet can terminate Spot Instances
-- on your behalf when you cancel its Spot Fleet request using
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CancelSpotFleetRequests CancelSpotFleetRequests>
-- or when the Spot Fleet request expires, if you set
-- @TerminateInstancesWithExpiration@.
--
-- 'targetCapacity', 'spotFleetRequestConfigData_targetCapacity' - The number of units to request for the Spot Fleet. You can choose to set
-- the target capacity in terms of instances or a performance
-- characteristic that is important to your application workload, such as
-- vCPUs, memory, or I\/O. If the request type is @maintain@, you can
-- specify a target capacity of 0 and add capacity later.
newSpotFleetRequestConfigData ::
  -- | 'iamFleetRole'
  Prelude.Text ->
  -- | 'targetCapacity'
  Prelude.Int ->
  SpotFleetRequestConfigData
newSpotFleetRequestConfigData :: Text -> Int -> SpotFleetRequestConfigData
newSpotFleetRequestConfigData
  Text
pIamFleetRole_
  Int
pTargetCapacity_ =
    SpotFleetRequestConfigData'
      { $sel:allocationStrategy:SpotFleetRequestConfigData' :: Maybe AllocationStrategy
allocationStrategy =
          forall a. Maybe a
Prelude.Nothing,
        $sel:clientToken:SpotFleetRequestConfigData' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
        $sel:context:SpotFleetRequestConfigData' :: Maybe Text
context = forall a. Maybe a
Prelude.Nothing,
        $sel:excessCapacityTerminationPolicy:SpotFleetRequestConfigData' :: Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy =
          forall a. Maybe a
Prelude.Nothing,
        $sel:fulfilledCapacity:SpotFleetRequestConfigData' :: Maybe Double
fulfilledCapacity = forall a. Maybe a
Prelude.Nothing,
        $sel:instanceInterruptionBehavior:SpotFleetRequestConfigData' :: Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior = forall a. Maybe a
Prelude.Nothing,
        $sel:instancePoolsToUseCount:SpotFleetRequestConfigData' :: Maybe Int
instancePoolsToUseCount = forall a. Maybe a
Prelude.Nothing,
        $sel:launchSpecifications:SpotFleetRequestConfigData' :: Maybe [SpotFleetLaunchSpecification]
launchSpecifications = forall a. Maybe a
Prelude.Nothing,
        $sel:launchTemplateConfigs:SpotFleetRequestConfigData' :: Maybe [LaunchTemplateConfig]
launchTemplateConfigs = forall a. Maybe a
Prelude.Nothing,
        $sel:loadBalancersConfig:SpotFleetRequestConfigData' :: Maybe LoadBalancersConfig
loadBalancersConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:onDemandAllocationStrategy:SpotFleetRequestConfigData' :: Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy = forall a. Maybe a
Prelude.Nothing,
        $sel:onDemandFulfilledCapacity:SpotFleetRequestConfigData' :: Maybe Double
onDemandFulfilledCapacity = forall a. Maybe a
Prelude.Nothing,
        $sel:onDemandMaxTotalPrice:SpotFleetRequestConfigData' :: Maybe Text
onDemandMaxTotalPrice = forall a. Maybe a
Prelude.Nothing,
        $sel:onDemandTargetCapacity:SpotFleetRequestConfigData' :: Maybe Int
onDemandTargetCapacity = forall a. Maybe a
Prelude.Nothing,
        $sel:replaceUnhealthyInstances:SpotFleetRequestConfigData' :: Maybe Bool
replaceUnhealthyInstances = forall a. Maybe a
Prelude.Nothing,
        $sel:spotMaintenanceStrategies:SpotFleetRequestConfigData' :: Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies = forall a. Maybe a
Prelude.Nothing,
        $sel:spotMaxTotalPrice:SpotFleetRequestConfigData' :: Maybe Text
spotMaxTotalPrice = forall a. Maybe a
Prelude.Nothing,
        $sel:spotPrice:SpotFleetRequestConfigData' :: Maybe Text
spotPrice = forall a. Maybe a
Prelude.Nothing,
        $sel:tagSpecifications:SpotFleetRequestConfigData' :: Maybe [TagSpecification]
tagSpecifications = forall a. Maybe a
Prelude.Nothing,
        $sel:targetCapacityUnitType:SpotFleetRequestConfigData' :: Maybe TargetCapacityUnitType
targetCapacityUnitType = forall a. Maybe a
Prelude.Nothing,
        $sel:terminateInstancesWithExpiration:SpotFleetRequestConfigData' :: Maybe Bool
terminateInstancesWithExpiration =
          forall a. Maybe a
Prelude.Nothing,
        $sel:type':SpotFleetRequestConfigData' :: Maybe FleetType
type' = forall a. Maybe a
Prelude.Nothing,
        $sel:validFrom:SpotFleetRequestConfigData' :: Maybe ISO8601
validFrom = forall a. Maybe a
Prelude.Nothing,
        $sel:validUntil:SpotFleetRequestConfigData' :: Maybe ISO8601
validUntil = forall a. Maybe a
Prelude.Nothing,
        $sel:iamFleetRole:SpotFleetRequestConfigData' :: Text
iamFleetRole = Text
pIamFleetRole_,
        $sel:targetCapacity:SpotFleetRequestConfigData' :: Int
targetCapacity = Int
pTargetCapacity_
      }

-- | The strategy that determines how to allocate the target Spot Instance
-- capacity across the Spot Instance pools specified by the Spot Fleet
-- launch configuration. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-allocation-strategy.html Allocation strategies for Spot Instances>
-- in the /Amazon EC2 User Guide/.
--
-- [priceCapacityOptimized (recommended)]
--     Spot Fleet identifies the pools with the highest capacity
--     availability for the number of instances that are launching. This
--     means that we will request Spot Instances from the pools that we
--     believe have the lowest chance of interruption in the near term.
--     Spot Fleet then requests Spot Instances from the lowest priced of
--     these pools.
--
-- [capacityOptimized]
--     Spot Fleet identifies the pools with the highest capacity
--     availability for the number of instances that are launching. This
--     means that we will request Spot Instances from the pools that we
--     believe have the lowest chance of interruption in the near term. To
--     give certain instance types a higher chance of launching first, use
--     @capacityOptimizedPrioritized@. Set a priority for each instance
--     type by using the @Priority@ parameter for
--     @LaunchTemplateOverrides@. You can assign the same priority to
--     different @LaunchTemplateOverrides@. EC2 implements the priorities
--     on a best-effort basis, but optimizes for capacity first.
--     @capacityOptimizedPrioritized@ is supported only if your Spot Fleet
--     uses a launch template. Note that if the
--     @OnDemandAllocationStrategy@ is set to @prioritized@, the same
--     priority is applied when fulfilling On-Demand capacity.
--
-- [diversified]
--     Spot Fleet requests instances from all of the Spot Instance pools
--     that you specify.
--
-- [lowestPrice]
--     Spot Fleet requests instances from the lowest priced Spot Instance
--     pool that has available capacity. If the lowest priced pool doesn\'t
--     have available capacity, the Spot Instances come from the next
--     lowest priced pool that has available capacity. If a pool runs out
--     of capacity before fulfilling your desired capacity, Spot Fleet will
--     continue to fulfill your request by drawing from the next lowest
--     priced pool. To ensure that your desired capacity is met, you might
--     receive Spot Instances from several pools. Because this strategy
--     only considers instance price and not capacity availability, it
--     might lead to high interruption rates.
--
-- Default: @lowestPrice@
spotFleetRequestConfigData_allocationStrategy :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe AllocationStrategy)
spotFleetRequestConfigData_allocationStrategy :: Lens' SpotFleetRequestConfigData (Maybe AllocationStrategy)
spotFleetRequestConfigData_allocationStrategy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe AllocationStrategy
allocationStrategy :: Maybe AllocationStrategy
$sel:allocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe AllocationStrategy
allocationStrategy} -> Maybe AllocationStrategy
allocationStrategy) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe AllocationStrategy
a -> SpotFleetRequestConfigData
s {$sel:allocationStrategy:SpotFleetRequestConfigData' :: Maybe AllocationStrategy
allocationStrategy = Maybe AllocationStrategy
a} :: SpotFleetRequestConfigData)

-- | A unique, case-sensitive identifier that you provide to ensure the
-- idempotency of your listings. This helps to avoid duplicate listings.
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
spotFleetRequestConfigData_clientToken :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Text)
spotFleetRequestConfigData_clientToken :: Lens' SpotFleetRequestConfigData (Maybe Text)
spotFleetRequestConfigData_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Text
a -> SpotFleetRequestConfigData
s {$sel:clientToken:SpotFleetRequestConfigData' :: Maybe Text
clientToken = Maybe Text
a} :: SpotFleetRequestConfigData)

-- | Reserved.
spotFleetRequestConfigData_context :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Text)
spotFleetRequestConfigData_context :: Lens' SpotFleetRequestConfigData (Maybe Text)
spotFleetRequestConfigData_context = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Text
context :: Maybe Text
$sel:context:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
context} -> Maybe Text
context) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Text
a -> SpotFleetRequestConfigData
s {$sel:context:SpotFleetRequestConfigData' :: Maybe Text
context = Maybe Text
a} :: SpotFleetRequestConfigData)

-- | Indicates whether running Spot Instances should be terminated if you
-- decrease the target capacity of the Spot Fleet request below the current
-- size of the Spot Fleet.
spotFleetRequestConfigData_excessCapacityTerminationPolicy :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe ExcessCapacityTerminationPolicy)
spotFleetRequestConfigData_excessCapacityTerminationPolicy :: Lens'
  SpotFleetRequestConfigData (Maybe ExcessCapacityTerminationPolicy)
spotFleetRequestConfigData_excessCapacityTerminationPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
$sel:excessCapacityTerminationPolicy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy} -> Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe ExcessCapacityTerminationPolicy
a -> SpotFleetRequestConfigData
s {$sel:excessCapacityTerminationPolicy:SpotFleetRequestConfigData' :: Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy = Maybe ExcessCapacityTerminationPolicy
a} :: SpotFleetRequestConfigData)

-- | The number of units fulfilled by this request compared to the set target
-- capacity. You cannot set this value.
spotFleetRequestConfigData_fulfilledCapacity :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Double)
spotFleetRequestConfigData_fulfilledCapacity :: Lens' SpotFleetRequestConfigData (Maybe Double)
spotFleetRequestConfigData_fulfilledCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Double
fulfilledCapacity :: Maybe Double
$sel:fulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
fulfilledCapacity} -> Maybe Double
fulfilledCapacity) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Double
a -> SpotFleetRequestConfigData
s {$sel:fulfilledCapacity:SpotFleetRequestConfigData' :: Maybe Double
fulfilledCapacity = Maybe Double
a} :: SpotFleetRequestConfigData)

-- | The behavior when a Spot Instance is interrupted. The default is
-- @terminate@.
spotFleetRequestConfigData_instanceInterruptionBehavior :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe InstanceInterruptionBehavior)
spotFleetRequestConfigData_instanceInterruptionBehavior :: Lens'
  SpotFleetRequestConfigData (Maybe InstanceInterruptionBehavior)
spotFleetRequestConfigData_instanceInterruptionBehavior = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior :: Maybe InstanceInterruptionBehavior
$sel:instanceInterruptionBehavior:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior} -> Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe InstanceInterruptionBehavior
a -> SpotFleetRequestConfigData
s {$sel:instanceInterruptionBehavior:SpotFleetRequestConfigData' :: Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior = Maybe InstanceInterruptionBehavior
a} :: SpotFleetRequestConfigData)

-- | The number of Spot pools across which to allocate your target Spot
-- capacity. Valid only when Spot __AllocationStrategy__ is set to
-- @lowest-price@. Spot Fleet selects the cheapest Spot pools and evenly
-- allocates your target Spot capacity across the number of Spot pools that
-- you specify.
--
-- Note that Spot Fleet attempts to draw Spot Instances from the number of
-- pools that you specify on a best effort basis. If a pool runs out of
-- Spot capacity before fulfilling your target capacity, Spot Fleet will
-- continue to fulfill your request by drawing from the next cheapest pool.
-- To ensure that your target capacity is met, you might receive Spot
-- Instances from more than the number of pools that you specified.
-- Similarly, if most of the pools have no Spot capacity, you might receive
-- your full target capacity from fewer than the number of pools that you
-- specified.
spotFleetRequestConfigData_instancePoolsToUseCount :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Int)
spotFleetRequestConfigData_instancePoolsToUseCount :: Lens' SpotFleetRequestConfigData (Maybe Int)
spotFleetRequestConfigData_instancePoolsToUseCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Int
instancePoolsToUseCount :: Maybe Int
$sel:instancePoolsToUseCount:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
instancePoolsToUseCount} -> Maybe Int
instancePoolsToUseCount) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Int
a -> SpotFleetRequestConfigData
s {$sel:instancePoolsToUseCount:SpotFleetRequestConfigData' :: Maybe Int
instancePoolsToUseCount = Maybe Int
a} :: SpotFleetRequestConfigData)

-- | The launch specifications for the Spot Fleet request. If you specify
-- @LaunchSpecifications@, you can\'t specify @LaunchTemplateConfigs@. If
-- you include On-Demand capacity in your request, you must use
-- @LaunchTemplateConfigs@.
spotFleetRequestConfigData_launchSpecifications :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe [SpotFleetLaunchSpecification])
spotFleetRequestConfigData_launchSpecifications :: Lens'
  SpotFleetRequestConfigData (Maybe [SpotFleetLaunchSpecification])
spotFleetRequestConfigData_launchSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe [SpotFleetLaunchSpecification]
launchSpecifications :: Maybe [SpotFleetLaunchSpecification]
$sel:launchSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [SpotFleetLaunchSpecification]
launchSpecifications} -> Maybe [SpotFleetLaunchSpecification]
launchSpecifications) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe [SpotFleetLaunchSpecification]
a -> SpotFleetRequestConfigData
s {$sel:launchSpecifications:SpotFleetRequestConfigData' :: Maybe [SpotFleetLaunchSpecification]
launchSpecifications = Maybe [SpotFleetLaunchSpecification]
a} :: SpotFleetRequestConfigData) 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 launch template and overrides. If you specify
-- @LaunchTemplateConfigs@, you can\'t specify @LaunchSpecifications@. If
-- you include On-Demand capacity in your request, you must use
-- @LaunchTemplateConfigs@.
spotFleetRequestConfigData_launchTemplateConfigs :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe [LaunchTemplateConfig])
spotFleetRequestConfigData_launchTemplateConfigs :: Lens' SpotFleetRequestConfigData (Maybe [LaunchTemplateConfig])
spotFleetRequestConfigData_launchTemplateConfigs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe [LaunchTemplateConfig]
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
$sel:launchTemplateConfigs:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [LaunchTemplateConfig]
launchTemplateConfigs} -> Maybe [LaunchTemplateConfig]
launchTemplateConfigs) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe [LaunchTemplateConfig]
a -> SpotFleetRequestConfigData
s {$sel:launchTemplateConfigs:SpotFleetRequestConfigData' :: Maybe [LaunchTemplateConfig]
launchTemplateConfigs = Maybe [LaunchTemplateConfig]
a} :: SpotFleetRequestConfigData) 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

-- | One or more Classic Load Balancers and target groups to attach to the
-- Spot Fleet request. Spot Fleet registers the running Spot Instances with
-- the specified Classic Load Balancers and target groups.
--
-- With Network Load Balancers, Spot Fleet cannot register instances that
-- have the following instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1,
-- G2, HI1, HS1, M1, M2, M3, and T1.
spotFleetRequestConfigData_loadBalancersConfig :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe LoadBalancersConfig)
spotFleetRequestConfigData_loadBalancersConfig :: Lens' SpotFleetRequestConfigData (Maybe LoadBalancersConfig)
spotFleetRequestConfigData_loadBalancersConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe LoadBalancersConfig
loadBalancersConfig :: Maybe LoadBalancersConfig
$sel:loadBalancersConfig:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe LoadBalancersConfig
loadBalancersConfig} -> Maybe LoadBalancersConfig
loadBalancersConfig) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe LoadBalancersConfig
a -> SpotFleetRequestConfigData
s {$sel:loadBalancersConfig:SpotFleetRequestConfigData' :: Maybe LoadBalancersConfig
loadBalancersConfig = Maybe LoadBalancersConfig
a} :: SpotFleetRequestConfigData)

-- | The order of the launch template overrides to use in fulfilling
-- On-Demand capacity. If you specify @lowestPrice@, Spot Fleet uses price
-- to determine the order, launching the lowest price first. If you specify
-- @prioritized@, Spot Fleet uses the priority that you assign to each Spot
-- Fleet launch template override, launching the highest priority first. If
-- you do not specify a value, Spot Fleet defaults to @lowestPrice@.
spotFleetRequestConfigData_onDemandAllocationStrategy :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe OnDemandAllocationStrategy)
spotFleetRequestConfigData_onDemandAllocationStrategy :: Lens' SpotFleetRequestConfigData (Maybe OnDemandAllocationStrategy)
spotFleetRequestConfigData_onDemandAllocationStrategy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy :: Maybe OnDemandAllocationStrategy
$sel:onDemandAllocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy} -> Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe OnDemandAllocationStrategy
a -> SpotFleetRequestConfigData
s {$sel:onDemandAllocationStrategy:SpotFleetRequestConfigData' :: Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy = Maybe OnDemandAllocationStrategy
a} :: SpotFleetRequestConfigData)

-- | The number of On-Demand units fulfilled by this request compared to the
-- set target On-Demand capacity.
spotFleetRequestConfigData_onDemandFulfilledCapacity :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Double)
spotFleetRequestConfigData_onDemandFulfilledCapacity :: Lens' SpotFleetRequestConfigData (Maybe Double)
spotFleetRequestConfigData_onDemandFulfilledCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Double
onDemandFulfilledCapacity :: Maybe Double
$sel:onDemandFulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
onDemandFulfilledCapacity} -> Maybe Double
onDemandFulfilledCapacity) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Double
a -> SpotFleetRequestConfigData
s {$sel:onDemandFulfilledCapacity:SpotFleetRequestConfigData' :: Maybe Double
onDemandFulfilledCapacity = Maybe Double
a} :: SpotFleetRequestConfigData)

-- | The maximum amount per hour for On-Demand Instances that you\'re willing
-- to pay. You can use the @onDemandMaxTotalPrice@ parameter, the
-- @spotMaxTotalPrice@ parameter, or both parameters to ensure that your
-- fleet cost does not exceed your budget. If you set a maximum price per
-- hour for the On-Demand Instances and Spot Instances in your request,
-- Spot Fleet will launch instances until it reaches the maximum amount
-- you\'re willing to pay. When the maximum amount you\'re willing to pay
-- is reached, the fleet stops launching instances even if it hasn’t met
-- the target capacity.
spotFleetRequestConfigData_onDemandMaxTotalPrice :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Text)
spotFleetRequestConfigData_onDemandMaxTotalPrice :: Lens' SpotFleetRequestConfigData (Maybe Text)
spotFleetRequestConfigData_onDemandMaxTotalPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Text
onDemandMaxTotalPrice :: Maybe Text
$sel:onDemandMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
onDemandMaxTotalPrice} -> Maybe Text
onDemandMaxTotalPrice) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Text
a -> SpotFleetRequestConfigData
s {$sel:onDemandMaxTotalPrice:SpotFleetRequestConfigData' :: Maybe Text
onDemandMaxTotalPrice = Maybe Text
a} :: SpotFleetRequestConfigData)

-- | The number of On-Demand units to request. You can choose to set the
-- target capacity in terms of instances or a performance characteristic
-- that is important to your application workload, such as vCPUs, memory,
-- or I\/O. If the request type is @maintain@, you can specify a target
-- capacity of 0 and add capacity later.
spotFleetRequestConfigData_onDemandTargetCapacity :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Int)
spotFleetRequestConfigData_onDemandTargetCapacity :: Lens' SpotFleetRequestConfigData (Maybe Int)
spotFleetRequestConfigData_onDemandTargetCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Int
onDemandTargetCapacity :: Maybe Int
$sel:onDemandTargetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
onDemandTargetCapacity} -> Maybe Int
onDemandTargetCapacity) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Int
a -> SpotFleetRequestConfigData
s {$sel:onDemandTargetCapacity:SpotFleetRequestConfigData' :: Maybe Int
onDemandTargetCapacity = Maybe Int
a} :: SpotFleetRequestConfigData)

-- | Indicates whether Spot Fleet should replace unhealthy instances.
spotFleetRequestConfigData_replaceUnhealthyInstances :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Bool)
spotFleetRequestConfigData_replaceUnhealthyInstances :: Lens' SpotFleetRequestConfigData (Maybe Bool)
spotFleetRequestConfigData_replaceUnhealthyInstances = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Bool
replaceUnhealthyInstances :: Maybe Bool
$sel:replaceUnhealthyInstances:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
replaceUnhealthyInstances} -> Maybe Bool
replaceUnhealthyInstances) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Bool
a -> SpotFleetRequestConfigData
s {$sel:replaceUnhealthyInstances:SpotFleetRequestConfigData' :: Maybe Bool
replaceUnhealthyInstances = Maybe Bool
a} :: SpotFleetRequestConfigData)

-- | The strategies for managing your Spot Instances that are at an elevated
-- risk of being interrupted.
spotFleetRequestConfigData_spotMaintenanceStrategies :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe SpotMaintenanceStrategies)
spotFleetRequestConfigData_spotMaintenanceStrategies :: Lens' SpotFleetRequestConfigData (Maybe SpotMaintenanceStrategies)
spotFleetRequestConfigData_spotMaintenanceStrategies = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies :: Maybe SpotMaintenanceStrategies
$sel:spotMaintenanceStrategies:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies} -> Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe SpotMaintenanceStrategies
a -> SpotFleetRequestConfigData
s {$sel:spotMaintenanceStrategies:SpotFleetRequestConfigData' :: Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies = Maybe SpotMaintenanceStrategies
a} :: SpotFleetRequestConfigData)

-- | The maximum amount per hour for Spot Instances that you\'re willing to
-- pay. You can use the @spotdMaxTotalPrice@ parameter, the
-- @onDemandMaxTotalPrice@ parameter, or both parameters to ensure that
-- your fleet cost does not exceed your budget. If you set a maximum price
-- per hour for the On-Demand Instances and Spot Instances in your request,
-- Spot Fleet will launch instances until it reaches the maximum amount
-- you\'re willing to pay. When the maximum amount you\'re willing to pay
-- is reached, the fleet stops launching instances even if it hasn’t met
-- the target capacity.
spotFleetRequestConfigData_spotMaxTotalPrice :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Text)
spotFleetRequestConfigData_spotMaxTotalPrice :: Lens' SpotFleetRequestConfigData (Maybe Text)
spotFleetRequestConfigData_spotMaxTotalPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Text
spotMaxTotalPrice :: Maybe Text
$sel:spotMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
spotMaxTotalPrice} -> Maybe Text
spotMaxTotalPrice) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Text
a -> SpotFleetRequestConfigData
s {$sel:spotMaxTotalPrice:SpotFleetRequestConfigData' :: Maybe Text
spotMaxTotalPrice = Maybe Text
a} :: SpotFleetRequestConfigData)

-- | The maximum price per unit hour that you are willing to pay for a Spot
-- Instance. We do not recommend using this parameter because it can lead
-- to increased interruptions. If you do not specify this parameter, you
-- will pay the current Spot price.
--
-- If you specify a maximum price, your instances will be interrupted more
-- frequently than if you do not specify this parameter.
spotFleetRequestConfigData_spotPrice :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Text)
spotFleetRequestConfigData_spotPrice :: Lens' SpotFleetRequestConfigData (Maybe Text)
spotFleetRequestConfigData_spotPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Text
spotPrice :: Maybe Text
$sel:spotPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
spotPrice} -> Maybe Text
spotPrice) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Text
a -> SpotFleetRequestConfigData
s {$sel:spotPrice:SpotFleetRequestConfigData' :: Maybe Text
spotPrice = Maybe Text
a} :: SpotFleetRequestConfigData)

-- | The key-value pair for tagging the Spot Fleet request on creation. The
-- value for @ResourceType@ must be @spot-fleet-request@, otherwise the
-- Spot Fleet request fails. To tag instances at launch, specify the tags
-- in the
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#create-launch-template launch template>
-- (valid only if you use @LaunchTemplateConfigs@) or in the
-- @ @<https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotFleetTagSpecification.html SpotFleetTagSpecification>@ @
-- (valid only if you use @LaunchSpecifications@). For information about
-- tagging after launch, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources Tagging Your Resources>.
spotFleetRequestConfigData_tagSpecifications :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe [TagSpecification])
spotFleetRequestConfigData_tagSpecifications :: Lens' SpotFleetRequestConfigData (Maybe [TagSpecification])
spotFleetRequestConfigData_tagSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe [TagSpecification]
tagSpecifications :: Maybe [TagSpecification]
$sel:tagSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [TagSpecification]
tagSpecifications} -> Maybe [TagSpecification]
tagSpecifications) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe [TagSpecification]
a -> SpotFleetRequestConfigData
s {$sel:tagSpecifications:SpotFleetRequestConfigData' :: Maybe [TagSpecification]
tagSpecifications = Maybe [TagSpecification]
a} :: SpotFleetRequestConfigData) 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 unit for the target capacity.
--
-- Default: @units@ (translates to number of instances)
spotFleetRequestConfigData_targetCapacityUnitType :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe TargetCapacityUnitType)
spotFleetRequestConfigData_targetCapacityUnitType :: Lens' SpotFleetRequestConfigData (Maybe TargetCapacityUnitType)
spotFleetRequestConfigData_targetCapacityUnitType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe TargetCapacityUnitType
targetCapacityUnitType :: Maybe TargetCapacityUnitType
$sel:targetCapacityUnitType:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe TargetCapacityUnitType
targetCapacityUnitType} -> Maybe TargetCapacityUnitType
targetCapacityUnitType) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe TargetCapacityUnitType
a -> SpotFleetRequestConfigData
s {$sel:targetCapacityUnitType:SpotFleetRequestConfigData' :: Maybe TargetCapacityUnitType
targetCapacityUnitType = Maybe TargetCapacityUnitType
a} :: SpotFleetRequestConfigData)

-- | Indicates whether running Spot Instances are terminated when the Spot
-- Fleet request expires.
spotFleetRequestConfigData_terminateInstancesWithExpiration :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.Bool)
spotFleetRequestConfigData_terminateInstancesWithExpiration :: Lens' SpotFleetRequestConfigData (Maybe Bool)
spotFleetRequestConfigData_terminateInstancesWithExpiration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe Bool
terminateInstancesWithExpiration :: Maybe Bool
$sel:terminateInstancesWithExpiration:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
terminateInstancesWithExpiration} -> Maybe Bool
terminateInstancesWithExpiration) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe Bool
a -> SpotFleetRequestConfigData
s {$sel:terminateInstancesWithExpiration:SpotFleetRequestConfigData' :: Maybe Bool
terminateInstancesWithExpiration = Maybe Bool
a} :: SpotFleetRequestConfigData)

-- | The type of request. Indicates whether the Spot Fleet only requests the
-- target capacity or also attempts to maintain it. When this value is
-- @request@, the Spot Fleet only places the required requests. It does not
-- attempt to replenish Spot Instances if capacity is diminished, nor does
-- it submit requests in alternative Spot pools if capacity is not
-- available. When this value is @maintain@, the Spot Fleet maintains the
-- target capacity. The Spot Fleet places the required requests to meet
-- capacity and automatically replenishes any interrupted instances.
-- Default: @maintain@. @instant@ is listed but is not used by Spot Fleet.
spotFleetRequestConfigData_type :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe FleetType)
spotFleetRequestConfigData_type :: Lens' SpotFleetRequestConfigData (Maybe FleetType)
spotFleetRequestConfigData_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe FleetType
type' :: Maybe FleetType
$sel:type':SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe FleetType
type'} -> Maybe FleetType
type') (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe FleetType
a -> SpotFleetRequestConfigData
s {$sel:type':SpotFleetRequestConfigData' :: Maybe FleetType
type' = Maybe FleetType
a} :: SpotFleetRequestConfigData)

-- | The start date and time of the request, in UTC format
-- (/YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). By default, Amazon EC2 starts
-- fulfilling the request immediately.
spotFleetRequestConfigData_validFrom :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.UTCTime)
spotFleetRequestConfigData_validFrom :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
spotFleetRequestConfigData_validFrom = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe ISO8601
validFrom :: Maybe ISO8601
$sel:validFrom:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
validFrom} -> Maybe ISO8601
validFrom) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe ISO8601
a -> SpotFleetRequestConfigData
s {$sel:validFrom:SpotFleetRequestConfigData' :: Maybe ISO8601
validFrom = Maybe ISO8601
a} :: SpotFleetRequestConfigData) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The end date and time of the request, in UTC format
-- (/YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). After the end date and time, no new
-- Spot Instance requests are placed or able to fulfill the request. If no
-- value is specified, the Spot Fleet request remains until you cancel it.
spotFleetRequestConfigData_validUntil :: Lens.Lens' SpotFleetRequestConfigData (Prelude.Maybe Prelude.UTCTime)
spotFleetRequestConfigData_validUntil :: Lens' SpotFleetRequestConfigData (Maybe UTCTime)
spotFleetRequestConfigData_validUntil = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Maybe ISO8601
validUntil :: Maybe ISO8601
$sel:validUntil:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
validUntil} -> Maybe ISO8601
validUntil) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Maybe ISO8601
a -> SpotFleetRequestConfigData
s {$sel:validUntil:SpotFleetRequestConfigData' :: Maybe ISO8601
validUntil = Maybe ISO8601
a} :: SpotFleetRequestConfigData) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The Amazon Resource Name (ARN) of an Identity and Access Management
-- (IAM) role that grants the Spot Fleet the permission to request, launch,
-- terminate, and tag instances on your behalf. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-requests.html#spot-fleet-prerequisites Spot Fleet prerequisites>
-- in the /Amazon EC2 User Guide/. Spot Fleet can terminate Spot Instances
-- on your behalf when you cancel its Spot Fleet request using
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CancelSpotFleetRequests CancelSpotFleetRequests>
-- or when the Spot Fleet request expires, if you set
-- @TerminateInstancesWithExpiration@.
spotFleetRequestConfigData_iamFleetRole :: Lens.Lens' SpotFleetRequestConfigData Prelude.Text
spotFleetRequestConfigData_iamFleetRole :: Lens' SpotFleetRequestConfigData Text
spotFleetRequestConfigData_iamFleetRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Text
iamFleetRole :: Text
$sel:iamFleetRole:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Text
iamFleetRole} -> Text
iamFleetRole) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Text
a -> SpotFleetRequestConfigData
s {$sel:iamFleetRole:SpotFleetRequestConfigData' :: Text
iamFleetRole = Text
a} :: SpotFleetRequestConfigData)

-- | The number of units to request for the Spot Fleet. You can choose to set
-- the target capacity in terms of instances or a performance
-- characteristic that is important to your application workload, such as
-- vCPUs, memory, or I\/O. If the request type is @maintain@, you can
-- specify a target capacity of 0 and add capacity later.
spotFleetRequestConfigData_targetCapacity :: Lens.Lens' SpotFleetRequestConfigData Prelude.Int
spotFleetRequestConfigData_targetCapacity :: Lens' SpotFleetRequestConfigData Int
spotFleetRequestConfigData_targetCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SpotFleetRequestConfigData' {Int
targetCapacity :: Int
$sel:targetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Int
targetCapacity} -> Int
targetCapacity) (\s :: SpotFleetRequestConfigData
s@SpotFleetRequestConfigData' {} Int
a -> SpotFleetRequestConfigData
s {$sel:targetCapacity:SpotFleetRequestConfigData' :: Int
targetCapacity = Int
a} :: SpotFleetRequestConfigData)

instance Data.FromXML SpotFleetRequestConfigData where
  parseXML :: [Node] -> Either String SpotFleetRequestConfigData
parseXML [Node]
x =
    Maybe AllocationStrategy
-> Maybe Text
-> Maybe Text
-> Maybe ExcessCapacityTerminationPolicy
-> Maybe Double
-> Maybe InstanceInterruptionBehavior
-> Maybe Int
-> Maybe [SpotFleetLaunchSpecification]
-> Maybe [LaunchTemplateConfig]
-> Maybe LoadBalancersConfig
-> Maybe OnDemandAllocationStrategy
-> Maybe Double
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Maybe SpotMaintenanceStrategies
-> Maybe Text
-> Maybe Text
-> Maybe [TagSpecification]
-> Maybe TargetCapacityUnitType
-> Maybe Bool
-> Maybe FleetType
-> Maybe ISO8601
-> Maybe ISO8601
-> Text
-> Int
-> SpotFleetRequestConfigData
SpotFleetRequestConfigData'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"allocationStrategy")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"clientToken")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"context")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"excessCapacityTerminationPolicy")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"fulfilledCapacity")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"instanceInterruptionBehavior")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"instancePoolsToUseCount")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"launchSpecifications"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"launchTemplateConfigs"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"loadBalancersConfig")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"onDemandAllocationStrategy")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"onDemandFulfilledCapacity")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"onDemandMaxTotalPrice")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"onDemandTargetCapacity")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"replaceUnhealthyInstances")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"spotMaintenanceStrategies")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"spotMaxTotalPrice")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"spotPrice")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TagSpecification"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"targetCapacityUnitType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"terminateInstancesWithExpiration")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"type")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"validFrom")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"validUntil")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"iamFleetRole")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"targetCapacity")

instance Prelude.Hashable SpotFleetRequestConfigData where
  hashWithSalt :: Int -> SpotFleetRequestConfigData -> Int
hashWithSalt Int
_salt SpotFleetRequestConfigData' {Int
Maybe Bool
Maybe Double
Maybe Int
Maybe [TagSpecification]
Maybe [LaunchTemplateConfig]
Maybe [SpotFleetLaunchSpecification]
Maybe Text
Maybe ISO8601
Maybe AllocationStrategy
Maybe ExcessCapacityTerminationPolicy
Maybe FleetType
Maybe InstanceInterruptionBehavior
Maybe OnDemandAllocationStrategy
Maybe SpotMaintenanceStrategies
Maybe TargetCapacityUnitType
Maybe LoadBalancersConfig
Text
targetCapacity :: Int
iamFleetRole :: Text
validUntil :: Maybe ISO8601
validFrom :: Maybe ISO8601
type' :: Maybe FleetType
terminateInstancesWithExpiration :: Maybe Bool
targetCapacityUnitType :: Maybe TargetCapacityUnitType
tagSpecifications :: Maybe [TagSpecification]
spotPrice :: Maybe Text
spotMaxTotalPrice :: Maybe Text
spotMaintenanceStrategies :: Maybe SpotMaintenanceStrategies
replaceUnhealthyInstances :: Maybe Bool
onDemandTargetCapacity :: Maybe Int
onDemandMaxTotalPrice :: Maybe Text
onDemandFulfilledCapacity :: Maybe Double
onDemandAllocationStrategy :: Maybe OnDemandAllocationStrategy
loadBalancersConfig :: Maybe LoadBalancersConfig
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
launchSpecifications :: Maybe [SpotFleetLaunchSpecification]
instancePoolsToUseCount :: Maybe Int
instanceInterruptionBehavior :: Maybe InstanceInterruptionBehavior
fulfilledCapacity :: Maybe Double
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
context :: Maybe Text
clientToken :: Maybe Text
allocationStrategy :: Maybe AllocationStrategy
$sel:targetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Int
$sel:iamFleetRole:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Text
$sel:validUntil:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
$sel:validFrom:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
$sel:type':SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe FleetType
$sel:terminateInstancesWithExpiration:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
$sel:targetCapacityUnitType:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe TargetCapacityUnitType
$sel:tagSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [TagSpecification]
$sel:spotPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:spotMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:spotMaintenanceStrategies:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe SpotMaintenanceStrategies
$sel:replaceUnhealthyInstances:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
$sel:onDemandTargetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
$sel:onDemandMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:onDemandFulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
$sel:onDemandAllocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe OnDemandAllocationStrategy
$sel:loadBalancersConfig:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe LoadBalancersConfig
$sel:launchTemplateConfigs:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [LaunchTemplateConfig]
$sel:launchSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [SpotFleetLaunchSpecification]
$sel:instancePoolsToUseCount:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
$sel:instanceInterruptionBehavior:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe InstanceInterruptionBehavior
$sel:fulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
$sel:excessCapacityTerminationPolicy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ExcessCapacityTerminationPolicy
$sel:context:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:clientToken:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:allocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe AllocationStrategy
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AllocationStrategy
allocationStrategy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
context
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
fulfilledCapacity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
instancePoolsToUseCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SpotFleetLaunchSpecification]
launchSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateConfig]
launchTemplateConfigs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LoadBalancersConfig
loadBalancersConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
onDemandFulfilledCapacity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
onDemandMaxTotalPrice
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
onDemandTargetCapacity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
replaceUnhealthyInstances
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
spotMaxTotalPrice
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
spotPrice
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagSpecification]
tagSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TargetCapacityUnitType
targetCapacityUnitType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
terminateInstancesWithExpiration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FleetType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
validFrom
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
validUntil
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
iamFleetRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Int
targetCapacity

instance Prelude.NFData SpotFleetRequestConfigData where
  rnf :: SpotFleetRequestConfigData -> ()
rnf SpotFleetRequestConfigData' {Int
Maybe Bool
Maybe Double
Maybe Int
Maybe [TagSpecification]
Maybe [LaunchTemplateConfig]
Maybe [SpotFleetLaunchSpecification]
Maybe Text
Maybe ISO8601
Maybe AllocationStrategy
Maybe ExcessCapacityTerminationPolicy
Maybe FleetType
Maybe InstanceInterruptionBehavior
Maybe OnDemandAllocationStrategy
Maybe SpotMaintenanceStrategies
Maybe TargetCapacityUnitType
Maybe LoadBalancersConfig
Text
targetCapacity :: Int
iamFleetRole :: Text
validUntil :: Maybe ISO8601
validFrom :: Maybe ISO8601
type' :: Maybe FleetType
terminateInstancesWithExpiration :: Maybe Bool
targetCapacityUnitType :: Maybe TargetCapacityUnitType
tagSpecifications :: Maybe [TagSpecification]
spotPrice :: Maybe Text
spotMaxTotalPrice :: Maybe Text
spotMaintenanceStrategies :: Maybe SpotMaintenanceStrategies
replaceUnhealthyInstances :: Maybe Bool
onDemandTargetCapacity :: Maybe Int
onDemandMaxTotalPrice :: Maybe Text
onDemandFulfilledCapacity :: Maybe Double
onDemandAllocationStrategy :: Maybe OnDemandAllocationStrategy
loadBalancersConfig :: Maybe LoadBalancersConfig
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
launchSpecifications :: Maybe [SpotFleetLaunchSpecification]
instancePoolsToUseCount :: Maybe Int
instanceInterruptionBehavior :: Maybe InstanceInterruptionBehavior
fulfilledCapacity :: Maybe Double
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
context :: Maybe Text
clientToken :: Maybe Text
allocationStrategy :: Maybe AllocationStrategy
$sel:targetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Int
$sel:iamFleetRole:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Text
$sel:validUntil:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
$sel:validFrom:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
$sel:type':SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe FleetType
$sel:terminateInstancesWithExpiration:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
$sel:targetCapacityUnitType:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe TargetCapacityUnitType
$sel:tagSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [TagSpecification]
$sel:spotPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:spotMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:spotMaintenanceStrategies:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe SpotMaintenanceStrategies
$sel:replaceUnhealthyInstances:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
$sel:onDemandTargetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
$sel:onDemandMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:onDemandFulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
$sel:onDemandAllocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe OnDemandAllocationStrategy
$sel:loadBalancersConfig:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe LoadBalancersConfig
$sel:launchTemplateConfigs:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [LaunchTemplateConfig]
$sel:launchSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [SpotFleetLaunchSpecification]
$sel:instancePoolsToUseCount:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
$sel:instanceInterruptionBehavior:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe InstanceInterruptionBehavior
$sel:fulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
$sel:excessCapacityTerminationPolicy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ExcessCapacityTerminationPolicy
$sel:context:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:clientToken:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:allocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe AllocationStrategy
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AllocationStrategy
allocationStrategy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
context
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
fulfilledCapacity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
instancePoolsToUseCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SpotFleetLaunchSpecification]
launchSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [LaunchTemplateConfig]
launchTemplateConfigs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LoadBalancersConfig
loadBalancersConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
onDemandFulfilledCapacity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
onDemandMaxTotalPrice
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
onDemandTargetCapacity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
replaceUnhealthyInstances
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
spotMaxTotalPrice
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
spotPrice
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TagSpecification]
tagSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe TargetCapacityUnitType
targetCapacityUnitType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
terminateInstancesWithExpiration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FleetType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
validFrom
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
validUntil
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Text
iamFleetRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Int
targetCapacity

instance Data.ToQuery SpotFleetRequestConfigData where
  toQuery :: SpotFleetRequestConfigData -> QueryString
toQuery SpotFleetRequestConfigData' {Int
Maybe Bool
Maybe Double
Maybe Int
Maybe [TagSpecification]
Maybe [LaunchTemplateConfig]
Maybe [SpotFleetLaunchSpecification]
Maybe Text
Maybe ISO8601
Maybe AllocationStrategy
Maybe ExcessCapacityTerminationPolicy
Maybe FleetType
Maybe InstanceInterruptionBehavior
Maybe OnDemandAllocationStrategy
Maybe SpotMaintenanceStrategies
Maybe TargetCapacityUnitType
Maybe LoadBalancersConfig
Text
targetCapacity :: Int
iamFleetRole :: Text
validUntil :: Maybe ISO8601
validFrom :: Maybe ISO8601
type' :: Maybe FleetType
terminateInstancesWithExpiration :: Maybe Bool
targetCapacityUnitType :: Maybe TargetCapacityUnitType
tagSpecifications :: Maybe [TagSpecification]
spotPrice :: Maybe Text
spotMaxTotalPrice :: Maybe Text
spotMaintenanceStrategies :: Maybe SpotMaintenanceStrategies
replaceUnhealthyInstances :: Maybe Bool
onDemandTargetCapacity :: Maybe Int
onDemandMaxTotalPrice :: Maybe Text
onDemandFulfilledCapacity :: Maybe Double
onDemandAllocationStrategy :: Maybe OnDemandAllocationStrategy
loadBalancersConfig :: Maybe LoadBalancersConfig
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
launchSpecifications :: Maybe [SpotFleetLaunchSpecification]
instancePoolsToUseCount :: Maybe Int
instanceInterruptionBehavior :: Maybe InstanceInterruptionBehavior
fulfilledCapacity :: Maybe Double
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
context :: Maybe Text
clientToken :: Maybe Text
allocationStrategy :: Maybe AllocationStrategy
$sel:targetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Int
$sel:iamFleetRole:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Text
$sel:validUntil:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
$sel:validFrom:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ISO8601
$sel:type':SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe FleetType
$sel:terminateInstancesWithExpiration:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
$sel:targetCapacityUnitType:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe TargetCapacityUnitType
$sel:tagSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [TagSpecification]
$sel:spotPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:spotMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:spotMaintenanceStrategies:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe SpotMaintenanceStrategies
$sel:replaceUnhealthyInstances:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Bool
$sel:onDemandTargetCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
$sel:onDemandMaxTotalPrice:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:onDemandFulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
$sel:onDemandAllocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe OnDemandAllocationStrategy
$sel:loadBalancersConfig:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe LoadBalancersConfig
$sel:launchTemplateConfigs:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [LaunchTemplateConfig]
$sel:launchSpecifications:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe [SpotFleetLaunchSpecification]
$sel:instancePoolsToUseCount:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Int
$sel:instanceInterruptionBehavior:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe InstanceInterruptionBehavior
$sel:fulfilledCapacity:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Double
$sel:excessCapacityTerminationPolicy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe ExcessCapacityTerminationPolicy
$sel:context:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:clientToken:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe Text
$sel:allocationStrategy:SpotFleetRequestConfigData' :: SpotFleetRequestConfigData -> Maybe AllocationStrategy
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"AllocationStrategy" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe AllocationStrategy
allocationStrategy,
        ByteString
"ClientToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
clientToken,
        ByteString
"Context" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
context,
        ByteString
"ExcessCapacityTerminationPolicy"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy,
        ByteString
"FulfilledCapacity" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Double
fulfilledCapacity,
        ByteString
"InstanceInterruptionBehavior"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe InstanceInterruptionBehavior
instanceInterruptionBehavior,
        ByteString
"InstancePoolsToUseCount"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
instancePoolsToUseCount,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"LaunchSpecifications"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SpotFleetLaunchSpecification]
launchSpecifications
          ),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"LaunchTemplateConfigs"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LaunchTemplateConfig]
launchTemplateConfigs
          ),
        ByteString
"LoadBalancersConfig" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LoadBalancersConfig
loadBalancersConfig,
        ByteString
"OnDemandAllocationStrategy"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe OnDemandAllocationStrategy
onDemandAllocationStrategy,
        ByteString
"OnDemandFulfilledCapacity"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Double
onDemandFulfilledCapacity,
        ByteString
"OnDemandMaxTotalPrice"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
onDemandMaxTotalPrice,
        ByteString
"OnDemandTargetCapacity"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
onDemandTargetCapacity,
        ByteString
"ReplaceUnhealthyInstances"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
replaceUnhealthyInstances,
        ByteString
"SpotMaintenanceStrategies"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe SpotMaintenanceStrategies
spotMaintenanceStrategies,
        ByteString
"SpotMaxTotalPrice" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
spotMaxTotalPrice,
        ByteString
"SpotPrice" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
spotPrice,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TagSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [TagSpecification]
tagSpecifications
          ),
        ByteString
"TargetCapacityUnitType"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe TargetCapacityUnitType
targetCapacityUnitType,
        ByteString
"TerminateInstancesWithExpiration"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
terminateInstancesWithExpiration,
        ByteString
"Type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe FleetType
type',
        ByteString
"ValidFrom" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
validFrom,
        ByteString
"ValidUntil" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
validUntil,
        ByteString
"IamFleetRole" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
iamFleetRole,
        ByteString
"TargetCapacity" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Int
targetCapacity
      ]