{-# 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.RequestLaunchTemplateData
-- 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.RequestLaunchTemplateData 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.CreditSpecificationRequest
import Amazonka.EC2.Types.ElasticGpuSpecification
import Amazonka.EC2.Types.InstanceRequirementsRequest
import Amazonka.EC2.Types.InstanceType
import Amazonka.EC2.Types.LaunchTemplateBlockDeviceMappingRequest
import Amazonka.EC2.Types.LaunchTemplateCapacityReservationSpecificationRequest
import Amazonka.EC2.Types.LaunchTemplateCpuOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateElasticInferenceAccelerator
import Amazonka.EC2.Types.LaunchTemplateEnclaveOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateHibernationOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateIamInstanceProfileSpecificationRequest
import Amazonka.EC2.Types.LaunchTemplateInstanceMaintenanceOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateInstanceMarketOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateInstanceMetadataOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest
import Amazonka.EC2.Types.LaunchTemplateLicenseConfigurationRequest
import Amazonka.EC2.Types.LaunchTemplatePlacementRequest
import Amazonka.EC2.Types.LaunchTemplatePrivateDnsNameOptionsRequest
import Amazonka.EC2.Types.LaunchTemplateTagSpecificationRequest
import Amazonka.EC2.Types.LaunchTemplatesMonitoringRequest
import Amazonka.EC2.Types.ShutdownBehavior
import qualified Amazonka.Prelude as Prelude

-- | The information to include in the launch template.
--
-- You must specify at least one parameter for the launch template data.
--
-- /See:/ 'newRequestLaunchTemplateData' smart constructor.
data RequestLaunchTemplateData = RequestLaunchTemplateData'
  { -- | The block device mapping.
    RequestLaunchTemplateData
-> Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings :: Prelude.Maybe [LaunchTemplateBlockDeviceMappingRequest],
    -- | The Capacity Reservation targeting option. If you do not specify this
    -- parameter, the instance\'s Capacity Reservation preference defaults to
    -- @open@, which enables it to run in any open Capacity Reservation that
    -- has matching attributes (instance type, platform, Availability Zone).
    RequestLaunchTemplateData
-> Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification :: Prelude.Maybe LaunchTemplateCapacityReservationSpecificationRequest,
    -- | The CPU options for the instance. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html Optimizing CPU Options>
    -- in the /Amazon Elastic Compute Cloud User Guide/.
    RequestLaunchTemplateData -> Maybe LaunchTemplateCpuOptionsRequest
cpuOptions :: Prelude.Maybe LaunchTemplateCpuOptionsRequest,
    -- | The credit option for CPU usage of the instance. Valid only for T
    -- instances.
    RequestLaunchTemplateData -> Maybe CreditSpecificationRequest
creditSpecification :: Prelude.Maybe CreditSpecificationRequest,
    -- | Indicates whether to enable the instance for stop protection. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection Stop Protection>.
    RequestLaunchTemplateData -> Maybe Bool
disableApiStop :: Prelude.Maybe Prelude.Bool,
    -- | If you set this parameter to @true@, you can\'t terminate the instance
    -- using the Amazon EC2 console, CLI, or API; otherwise, you can. To change
    -- this attribute after launch, use
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html ModifyInstanceAttribute>.
    -- Alternatively, if you set @InstanceInitiatedShutdownBehavior@ to
    -- @terminate@, you can terminate the instance by running the shutdown
    -- command from the instance.
    RequestLaunchTemplateData -> Maybe Bool
disableApiTermination :: Prelude.Maybe Prelude.Bool,
    -- | Indicates whether the instance is optimized for Amazon EBS I\/O. This
    -- optimization provides dedicated throughput to Amazon EBS and an
    -- optimized configuration stack to provide optimal Amazon EBS I\/O
    -- performance. This optimization isn\'t available with all instance types.
    -- Additional usage charges apply when using an EBS-optimized instance.
    RequestLaunchTemplateData -> Maybe Bool
ebsOptimized :: Prelude.Maybe Prelude.Bool,
    -- | An elastic GPU to associate with the instance.
    RequestLaunchTemplateData -> Maybe [ElasticGpuSpecification]
elasticGpuSpecifications :: Prelude.Maybe [ElasticGpuSpecification],
    -- | The elastic inference accelerator for the instance.
    RequestLaunchTemplateData
-> Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators :: Prelude.Maybe [LaunchTemplateElasticInferenceAccelerator],
    -- | Indicates whether the instance is enabled for Amazon Web Services Nitro
    -- Enclaves. For more information, see
    -- <https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html What is Amazon Web Services Nitro Enclaves?>
    -- in the /Amazon Web Services Nitro Enclaves User Guide/.
    --
    -- You can\'t enable Amazon Web Services Nitro Enclaves and hibernation on
    -- the same instance.
    RequestLaunchTemplateData
-> Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions :: Prelude.Maybe LaunchTemplateEnclaveOptionsRequest,
    -- | Indicates whether an instance is enabled for hibernation. This parameter
    -- is valid only if the instance meets the
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html hibernation prerequisites>.
    -- For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html Hibernate your instance>
    -- in the /Amazon Elastic Compute Cloud User Guide/.
    RequestLaunchTemplateData
-> Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions :: Prelude.Maybe LaunchTemplateHibernationOptionsRequest,
    -- | The name or Amazon Resource Name (ARN) of an IAM instance profile.
    RequestLaunchTemplateData
-> Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile :: Prelude.Maybe LaunchTemplateIamInstanceProfileSpecificationRequest,
    -- | The ID of the AMI.
    RequestLaunchTemplateData -> Maybe Text
imageId :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether an instance stops or terminates when you initiate
    -- shutdown from the instance (using the operating system command for
    -- system shutdown).
    --
    -- Default: @stop@
    RequestLaunchTemplateData -> Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior :: Prelude.Maybe ShutdownBehavior,
    -- | The market (purchasing) option for the instances.
    RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions :: Prelude.Maybe LaunchTemplateInstanceMarketOptionsRequest,
    -- | The attributes for the instance types. When you specify instance
    -- attributes, Amazon EC2 will identify instance types with these
    -- attributes.
    --
    -- If you specify @InstanceRequirements@, you can\'t specify
    -- @InstanceType@.
    RequestLaunchTemplateData -> Maybe InstanceRequirementsRequest
instanceRequirements :: Prelude.Maybe InstanceRequirementsRequest,
    -- | The instance type. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
    -- in the /Amazon Elastic Compute Cloud User Guide/.
    --
    -- If you specify @InstanceType@, you can\'t specify
    -- @InstanceRequirements@.
    RequestLaunchTemplateData -> Maybe InstanceType
instanceType :: Prelude.Maybe InstanceType,
    -- | The ID of the kernel.
    --
    -- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
    -- more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html User provided kernels>
    -- in the /Amazon Elastic Compute Cloud User Guide/.
    RequestLaunchTemplateData -> Maybe Text
kernelId :: Prelude.Maybe Prelude.Text,
    -- | The name of the key pair. You can create a key pair using
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html CreateKeyPair>
    -- or
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html ImportKeyPair>.
    --
    -- If you do not specify a key pair, you can\'t connect to the instance
    -- unless you choose an AMI that is configured to allow users another way
    -- to log in.
    RequestLaunchTemplateData -> Maybe Text
keyName :: Prelude.Maybe Prelude.Text,
    -- | The license configurations.
    RequestLaunchTemplateData
-> Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications :: Prelude.Maybe [LaunchTemplateLicenseConfigurationRequest],
    -- | The maintenance options for the instance.
    RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions :: Prelude.Maybe LaunchTemplateInstanceMaintenanceOptionsRequest,
    -- | The metadata options for the instance. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html Instance metadata and user data>
    -- in the /Amazon Elastic Compute Cloud User Guide/.
    RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions :: Prelude.Maybe LaunchTemplateInstanceMetadataOptionsRequest,
    -- | The monitoring for the instance.
    RequestLaunchTemplateData -> Maybe LaunchTemplatesMonitoringRequest
monitoring :: Prelude.Maybe LaunchTemplatesMonitoringRequest,
    -- | One or more network interfaces. If you specify a network interface, you
    -- must specify any security groups and subnets as part of the network
    -- interface.
    RequestLaunchTemplateData
-> Maybe
     [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces :: Prelude.Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest],
    -- | The placement for the instance.
    RequestLaunchTemplateData -> Maybe LaunchTemplatePlacementRequest
placement :: Prelude.Maybe LaunchTemplatePlacementRequest,
    -- | The options for the instance hostname. The default values are inherited
    -- from the subnet.
    RequestLaunchTemplateData
-> Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions :: Prelude.Maybe LaunchTemplatePrivateDnsNameOptionsRequest,
    -- | The ID of the RAM disk.
    --
    -- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
    -- more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html User provided kernels>
    -- in the /Amazon Elastic Compute Cloud User Guide/.
    RequestLaunchTemplateData -> Maybe Text
ramDiskId :: Prelude.Maybe Prelude.Text,
    -- | One or more security group IDs. You can create a security group using
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html CreateSecurityGroup>.
    -- You cannot specify both a security group ID and security name in the
    -- same request.
    RequestLaunchTemplateData -> Maybe [Text]
securityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | One or more security group names. For a nondefault VPC, you must use
    -- security group IDs instead. You cannot specify both a security group ID
    -- and security name in the same request.
    RequestLaunchTemplateData -> Maybe [Text]
securityGroups :: Prelude.Maybe [Prelude.Text],
    -- | The tags to apply to the resources that are created during instance
    -- launch.
    --
    -- You can specify tags for the following resources only:
    --
    -- -   Instances
    --
    -- -   Volumes
    --
    -- -   Elastic graphics
    --
    -- -   Spot Instance requests
    --
    -- -   Network interfaces
    --
    -- To tag a resource after it has been created, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html CreateTags>.
    --
    -- To tag the launch template itself, you must use the
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html TagSpecification>
    -- parameter.
    RequestLaunchTemplateData
-> Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications :: Prelude.Maybe [LaunchTemplateTagSpecificationRequest],
    -- | The user data to make available to the instance. You must provide
    -- base64-encoded text. User data is limited to 16 KB. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html Run commands on your Linux instance at launch>
    -- (Linux) or
    -- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instancedata-add-user-data.html Work with instance user data>
    -- (Windows) in the /Amazon Elastic Compute Cloud User Guide/.
    --
    -- If you are creating the launch template for use with Batch, the user
    -- data must be provided in the
    -- <https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive MIME multi-part archive format>.
    -- For more information, see
    -- <https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html Amazon EC2 user data in launch templates>
    -- in the /Batch User Guide/.
    RequestLaunchTemplateData -> Maybe Text
userData :: Prelude.Maybe Prelude.Text
  }
  deriving (RequestLaunchTemplateData -> RequestLaunchTemplateData -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RequestLaunchTemplateData -> RequestLaunchTemplateData -> Bool
$c/= :: RequestLaunchTemplateData -> RequestLaunchTemplateData -> Bool
== :: RequestLaunchTemplateData -> RequestLaunchTemplateData -> Bool
$c== :: RequestLaunchTemplateData -> RequestLaunchTemplateData -> Bool
Prelude.Eq, Int -> RequestLaunchTemplateData -> ShowS
[RequestLaunchTemplateData] -> ShowS
RequestLaunchTemplateData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RequestLaunchTemplateData] -> ShowS
$cshowList :: [RequestLaunchTemplateData] -> ShowS
show :: RequestLaunchTemplateData -> String
$cshow :: RequestLaunchTemplateData -> String
showsPrec :: Int -> RequestLaunchTemplateData -> ShowS
$cshowsPrec :: Int -> RequestLaunchTemplateData -> ShowS
Prelude.Show, forall x.
Rep RequestLaunchTemplateData x -> RequestLaunchTemplateData
forall x.
RequestLaunchTemplateData -> Rep RequestLaunchTemplateData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RequestLaunchTemplateData x -> RequestLaunchTemplateData
$cfrom :: forall x.
RequestLaunchTemplateData -> Rep RequestLaunchTemplateData x
Prelude.Generic)

-- |
-- Create a value of 'RequestLaunchTemplateData' 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:
--
-- 'blockDeviceMappings', 'requestLaunchTemplateData_blockDeviceMappings' - The block device mapping.
--
-- 'capacityReservationSpecification', 'requestLaunchTemplateData_capacityReservationSpecification' - The Capacity Reservation targeting option. If you do not specify this
-- parameter, the instance\'s Capacity Reservation preference defaults to
-- @open@, which enables it to run in any open Capacity Reservation that
-- has matching attributes (instance type, platform, Availability Zone).
--
-- 'cpuOptions', 'requestLaunchTemplateData_cpuOptions' - The CPU options for the instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html Optimizing CPU Options>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- 'creditSpecification', 'requestLaunchTemplateData_creditSpecification' - The credit option for CPU usage of the instance. Valid only for T
-- instances.
--
-- 'disableApiStop', 'requestLaunchTemplateData_disableApiStop' - Indicates whether to enable the instance for stop protection. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection Stop Protection>.
--
-- 'disableApiTermination', 'requestLaunchTemplateData_disableApiTermination' - If you set this parameter to @true@, you can\'t terminate the instance
-- using the Amazon EC2 console, CLI, or API; otherwise, you can. To change
-- this attribute after launch, use
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html ModifyInstanceAttribute>.
-- Alternatively, if you set @InstanceInitiatedShutdownBehavior@ to
-- @terminate@, you can terminate the instance by running the shutdown
-- command from the instance.
--
-- 'ebsOptimized', 'requestLaunchTemplateData_ebsOptimized' - Indicates whether the instance is optimized for Amazon EBS I\/O. This
-- optimization provides dedicated throughput to Amazon EBS and an
-- optimized configuration stack to provide optimal Amazon EBS I\/O
-- performance. This optimization isn\'t available with all instance types.
-- Additional usage charges apply when using an EBS-optimized instance.
--
-- 'elasticGpuSpecifications', 'requestLaunchTemplateData_elasticGpuSpecifications' - An elastic GPU to associate with the instance.
--
-- 'elasticInferenceAccelerators', 'requestLaunchTemplateData_elasticInferenceAccelerators' - The elastic inference accelerator for the instance.
--
-- 'enclaveOptions', 'requestLaunchTemplateData_enclaveOptions' - Indicates whether the instance is enabled for Amazon Web Services Nitro
-- Enclaves. For more information, see
-- <https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html What is Amazon Web Services Nitro Enclaves?>
-- in the /Amazon Web Services Nitro Enclaves User Guide/.
--
-- You can\'t enable Amazon Web Services Nitro Enclaves and hibernation on
-- the same instance.
--
-- 'hibernationOptions', 'requestLaunchTemplateData_hibernationOptions' - Indicates whether an instance is enabled for hibernation. This parameter
-- is valid only if the instance meets the
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html hibernation prerequisites>.
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html Hibernate your instance>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- 'iamInstanceProfile', 'requestLaunchTemplateData_iamInstanceProfile' - The name or Amazon Resource Name (ARN) of an IAM instance profile.
--
-- 'imageId', 'requestLaunchTemplateData_imageId' - The ID of the AMI.
--
-- 'instanceInitiatedShutdownBehavior', 'requestLaunchTemplateData_instanceInitiatedShutdownBehavior' - Indicates whether an instance stops or terminates when you initiate
-- shutdown from the instance (using the operating system command for
-- system shutdown).
--
-- Default: @stop@
--
-- 'instanceMarketOptions', 'requestLaunchTemplateData_instanceMarketOptions' - The market (purchasing) option for the instances.
--
-- 'instanceRequirements', 'requestLaunchTemplateData_instanceRequirements' - The attributes for the instance types. When you specify instance
-- attributes, Amazon EC2 will identify instance types with these
-- attributes.
--
-- If you specify @InstanceRequirements@, you can\'t specify
-- @InstanceType@.
--
-- 'instanceType', 'requestLaunchTemplateData_instanceType' - The instance type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- If you specify @InstanceType@, you can\'t specify
-- @InstanceRequirements@.
--
-- 'kernelId', 'requestLaunchTemplateData_kernelId' - The ID of the kernel.
--
-- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
-- more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html User provided kernels>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- 'keyName', 'requestLaunchTemplateData_keyName' - The name of the key pair. You can create a key pair using
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html CreateKeyPair>
-- or
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html ImportKeyPair>.
--
-- If you do not specify a key pair, you can\'t connect to the instance
-- unless you choose an AMI that is configured to allow users another way
-- to log in.
--
-- 'licenseSpecifications', 'requestLaunchTemplateData_licenseSpecifications' - The license configurations.
--
-- 'maintenanceOptions', 'requestLaunchTemplateData_maintenanceOptions' - The maintenance options for the instance.
--
-- 'metadataOptions', 'requestLaunchTemplateData_metadataOptions' - The metadata options for the instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html Instance metadata and user data>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- 'monitoring', 'requestLaunchTemplateData_monitoring' - The monitoring for the instance.
--
-- 'networkInterfaces', 'requestLaunchTemplateData_networkInterfaces' - One or more network interfaces. If you specify a network interface, you
-- must specify any security groups and subnets as part of the network
-- interface.
--
-- 'placement', 'requestLaunchTemplateData_placement' - The placement for the instance.
--
-- 'privateDnsNameOptions', 'requestLaunchTemplateData_privateDnsNameOptions' - The options for the instance hostname. The default values are inherited
-- from the subnet.
--
-- 'ramDiskId', 'requestLaunchTemplateData_ramDiskId' - The ID of the RAM disk.
--
-- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
-- more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html User provided kernels>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- 'securityGroupIds', 'requestLaunchTemplateData_securityGroupIds' - One or more security group IDs. You can create a security group using
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html CreateSecurityGroup>.
-- You cannot specify both a security group ID and security name in the
-- same request.
--
-- 'securityGroups', 'requestLaunchTemplateData_securityGroups' - One or more security group names. For a nondefault VPC, you must use
-- security group IDs instead. You cannot specify both a security group ID
-- and security name in the same request.
--
-- 'tagSpecifications', 'requestLaunchTemplateData_tagSpecifications' - The tags to apply to the resources that are created during instance
-- launch.
--
-- You can specify tags for the following resources only:
--
-- -   Instances
--
-- -   Volumes
--
-- -   Elastic graphics
--
-- -   Spot Instance requests
--
-- -   Network interfaces
--
-- To tag a resource after it has been created, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html CreateTags>.
--
-- To tag the launch template itself, you must use the
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html TagSpecification>
-- parameter.
--
-- 'userData', 'requestLaunchTemplateData_userData' - The user data to make available to the instance. You must provide
-- base64-encoded text. User data is limited to 16 KB. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html Run commands on your Linux instance at launch>
-- (Linux) or
-- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instancedata-add-user-data.html Work with instance user data>
-- (Windows) in the /Amazon Elastic Compute Cloud User Guide/.
--
-- If you are creating the launch template for use with Batch, the user
-- data must be provided in the
-- <https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive MIME multi-part archive format>.
-- For more information, see
-- <https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html Amazon EC2 user data in launch templates>
-- in the /Batch User Guide/.
newRequestLaunchTemplateData ::
  RequestLaunchTemplateData
newRequestLaunchTemplateData :: RequestLaunchTemplateData
newRequestLaunchTemplateData =
  RequestLaunchTemplateData'
    { $sel:blockDeviceMappings:RequestLaunchTemplateData' :: Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings =
        forall a. Maybe a
Prelude.Nothing,
      $sel:capacityReservationSpecification:RequestLaunchTemplateData' :: Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification =
        forall a. Maybe a
Prelude.Nothing,
      $sel:cpuOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateCpuOptionsRequest
cpuOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:creditSpecification:RequestLaunchTemplateData' :: Maybe CreditSpecificationRequest
creditSpecification = forall a. Maybe a
Prelude.Nothing,
      $sel:disableApiStop:RequestLaunchTemplateData' :: Maybe Bool
disableApiStop = forall a. Maybe a
Prelude.Nothing,
      $sel:disableApiTermination:RequestLaunchTemplateData' :: Maybe Bool
disableApiTermination = forall a. Maybe a
Prelude.Nothing,
      $sel:ebsOptimized:RequestLaunchTemplateData' :: Maybe Bool
ebsOptimized = forall a. Maybe a
Prelude.Nothing,
      $sel:elasticGpuSpecifications:RequestLaunchTemplateData' :: Maybe [ElasticGpuSpecification]
elasticGpuSpecifications = forall a. Maybe a
Prelude.Nothing,
      $sel:elasticInferenceAccelerators:RequestLaunchTemplateData' :: Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators = forall a. Maybe a
Prelude.Nothing,
      $sel:enclaveOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:hibernationOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:iamInstanceProfile:RequestLaunchTemplateData' :: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile = forall a. Maybe a
Prelude.Nothing,
      $sel:imageId:RequestLaunchTemplateData' :: Maybe Text
imageId = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceInitiatedShutdownBehavior:RequestLaunchTemplateData' :: Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior =
        forall a. Maybe a
Prelude.Nothing,
      $sel:instanceMarketOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceRequirements:RequestLaunchTemplateData' :: Maybe InstanceRequirementsRequest
instanceRequirements = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:RequestLaunchTemplateData' :: Maybe InstanceType
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:kernelId:RequestLaunchTemplateData' :: Maybe Text
kernelId = forall a. Maybe a
Prelude.Nothing,
      $sel:keyName:RequestLaunchTemplateData' :: Maybe Text
keyName = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseSpecifications:RequestLaunchTemplateData' :: Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications = forall a. Maybe a
Prelude.Nothing,
      $sel:maintenanceOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:metadataOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:monitoring:RequestLaunchTemplateData' :: Maybe LaunchTemplatesMonitoringRequest
monitoring = forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterfaces:RequestLaunchTemplateData' :: Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces = forall a. Maybe a
Prelude.Nothing,
      $sel:placement:RequestLaunchTemplateData' :: Maybe LaunchTemplatePlacementRequest
placement = forall a. Maybe a
Prelude.Nothing,
      $sel:privateDnsNameOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:ramDiskId:RequestLaunchTemplateData' :: Maybe Text
ramDiskId = forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroupIds:RequestLaunchTemplateData' :: Maybe [Text]
securityGroupIds = forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroups:RequestLaunchTemplateData' :: Maybe [Text]
securityGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:tagSpecifications:RequestLaunchTemplateData' :: Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications = forall a. Maybe a
Prelude.Nothing,
      $sel:userData:RequestLaunchTemplateData' :: Maybe Text
userData = forall a. Maybe a
Prelude.Nothing
    }

-- | The block device mapping.
requestLaunchTemplateData_blockDeviceMappings :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [LaunchTemplateBlockDeviceMappingRequest])
requestLaunchTemplateData_blockDeviceMappings :: Lens'
  RequestLaunchTemplateData
  (Maybe [LaunchTemplateBlockDeviceMappingRequest])
requestLaunchTemplateData_blockDeviceMappings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings :: Maybe [LaunchTemplateBlockDeviceMappingRequest]
$sel:blockDeviceMappings:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings} -> Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [LaunchTemplateBlockDeviceMappingRequest]
a -> RequestLaunchTemplateData
s {$sel:blockDeviceMappings:RequestLaunchTemplateData' :: Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings = Maybe [LaunchTemplateBlockDeviceMappingRequest]
a} :: RequestLaunchTemplateData) 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 Capacity Reservation targeting option. If you do not specify this
-- parameter, the instance\'s Capacity Reservation preference defaults to
-- @open@, which enables it to run in any open Capacity Reservation that
-- has matching attributes (instance type, platform, Availability Zone).
requestLaunchTemplateData_capacityReservationSpecification :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateCapacityReservationSpecificationRequest)
requestLaunchTemplateData_capacityReservationSpecification :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateCapacityReservationSpecificationRequest)
requestLaunchTemplateData_capacityReservationSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification :: Maybe LaunchTemplateCapacityReservationSpecificationRequest
$sel:capacityReservationSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification} -> Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateCapacityReservationSpecificationRequest
a -> RequestLaunchTemplateData
s {$sel:capacityReservationSpecification:RequestLaunchTemplateData' :: Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification = Maybe LaunchTemplateCapacityReservationSpecificationRequest
a} :: RequestLaunchTemplateData)

-- | The CPU options for the instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html Optimizing CPU Options>
-- in the /Amazon Elastic Compute Cloud User Guide/.
requestLaunchTemplateData_cpuOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateCpuOptionsRequest)
requestLaunchTemplateData_cpuOptions :: Lens'
  RequestLaunchTemplateData (Maybe LaunchTemplateCpuOptionsRequest)
requestLaunchTemplateData_cpuOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateCpuOptionsRequest
cpuOptions :: Maybe LaunchTemplateCpuOptionsRequest
$sel:cpuOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplateCpuOptionsRequest
cpuOptions} -> Maybe LaunchTemplateCpuOptionsRequest
cpuOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateCpuOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:cpuOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateCpuOptionsRequest
cpuOptions = Maybe LaunchTemplateCpuOptionsRequest
a} :: RequestLaunchTemplateData)

-- | The credit option for CPU usage of the instance. Valid only for T
-- instances.
requestLaunchTemplateData_creditSpecification :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe CreditSpecificationRequest)
requestLaunchTemplateData_creditSpecification :: Lens' RequestLaunchTemplateData (Maybe CreditSpecificationRequest)
requestLaunchTemplateData_creditSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe CreditSpecificationRequest
creditSpecification :: Maybe CreditSpecificationRequest
$sel:creditSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe CreditSpecificationRequest
creditSpecification} -> Maybe CreditSpecificationRequest
creditSpecification) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe CreditSpecificationRequest
a -> RequestLaunchTemplateData
s {$sel:creditSpecification:RequestLaunchTemplateData' :: Maybe CreditSpecificationRequest
creditSpecification = Maybe CreditSpecificationRequest
a} :: RequestLaunchTemplateData)

-- | Indicates whether to enable the instance for stop protection. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#Using_StopProtection Stop Protection>.
requestLaunchTemplateData_disableApiStop :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Bool)
requestLaunchTemplateData_disableApiStop :: Lens' RequestLaunchTemplateData (Maybe Bool)
requestLaunchTemplateData_disableApiStop = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Bool
disableApiStop :: Maybe Bool
$sel:disableApiStop:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
disableApiStop} -> Maybe Bool
disableApiStop) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Bool
a -> RequestLaunchTemplateData
s {$sel:disableApiStop:RequestLaunchTemplateData' :: Maybe Bool
disableApiStop = Maybe Bool
a} :: RequestLaunchTemplateData)

-- | If you set this parameter to @true@, you can\'t terminate the instance
-- using the Amazon EC2 console, CLI, or API; otherwise, you can. To change
-- this attribute after launch, use
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceAttribute.html ModifyInstanceAttribute>.
-- Alternatively, if you set @InstanceInitiatedShutdownBehavior@ to
-- @terminate@, you can terminate the instance by running the shutdown
-- command from the instance.
requestLaunchTemplateData_disableApiTermination :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Bool)
requestLaunchTemplateData_disableApiTermination :: Lens' RequestLaunchTemplateData (Maybe Bool)
requestLaunchTemplateData_disableApiTermination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Bool
disableApiTermination :: Maybe Bool
$sel:disableApiTermination:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
disableApiTermination} -> Maybe Bool
disableApiTermination) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Bool
a -> RequestLaunchTemplateData
s {$sel:disableApiTermination:RequestLaunchTemplateData' :: Maybe Bool
disableApiTermination = Maybe Bool
a} :: RequestLaunchTemplateData)

-- | Indicates whether the instance is optimized for Amazon EBS I\/O. This
-- optimization provides dedicated throughput to Amazon EBS and an
-- optimized configuration stack to provide optimal Amazon EBS I\/O
-- performance. This optimization isn\'t available with all instance types.
-- Additional usage charges apply when using an EBS-optimized instance.
requestLaunchTemplateData_ebsOptimized :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Bool)
requestLaunchTemplateData_ebsOptimized :: Lens' RequestLaunchTemplateData (Maybe Bool)
requestLaunchTemplateData_ebsOptimized = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Bool
ebsOptimized :: Maybe Bool
$sel:ebsOptimized:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
ebsOptimized} -> Maybe Bool
ebsOptimized) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Bool
a -> RequestLaunchTemplateData
s {$sel:ebsOptimized:RequestLaunchTemplateData' :: Maybe Bool
ebsOptimized = Maybe Bool
a} :: RequestLaunchTemplateData)

-- | An elastic GPU to associate with the instance.
requestLaunchTemplateData_elasticGpuSpecifications :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [ElasticGpuSpecification])
requestLaunchTemplateData_elasticGpuSpecifications :: Lens' RequestLaunchTemplateData (Maybe [ElasticGpuSpecification])
requestLaunchTemplateData_elasticGpuSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [ElasticGpuSpecification]
elasticGpuSpecifications :: Maybe [ElasticGpuSpecification]
$sel:elasticGpuSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [ElasticGpuSpecification]
elasticGpuSpecifications} -> Maybe [ElasticGpuSpecification]
elasticGpuSpecifications) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [ElasticGpuSpecification]
a -> RequestLaunchTemplateData
s {$sel:elasticGpuSpecifications:RequestLaunchTemplateData' :: Maybe [ElasticGpuSpecification]
elasticGpuSpecifications = Maybe [ElasticGpuSpecification]
a} :: RequestLaunchTemplateData) 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 elastic inference accelerator for the instance.
requestLaunchTemplateData_elasticInferenceAccelerators :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [LaunchTemplateElasticInferenceAccelerator])
requestLaunchTemplateData_elasticInferenceAccelerators :: Lens'
  RequestLaunchTemplateData
  (Maybe [LaunchTemplateElasticInferenceAccelerator])
requestLaunchTemplateData_elasticInferenceAccelerators = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators :: Maybe [LaunchTemplateElasticInferenceAccelerator]
$sel:elasticInferenceAccelerators:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators} -> Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [LaunchTemplateElasticInferenceAccelerator]
a -> RequestLaunchTemplateData
s {$sel:elasticInferenceAccelerators:RequestLaunchTemplateData' :: Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators = Maybe [LaunchTemplateElasticInferenceAccelerator]
a} :: RequestLaunchTemplateData) 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

-- | Indicates whether the instance is enabled for Amazon Web Services Nitro
-- Enclaves. For more information, see
-- <https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave.html What is Amazon Web Services Nitro Enclaves?>
-- in the /Amazon Web Services Nitro Enclaves User Guide/.
--
-- You can\'t enable Amazon Web Services Nitro Enclaves and hibernation on
-- the same instance.
requestLaunchTemplateData_enclaveOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateEnclaveOptionsRequest)
requestLaunchTemplateData_enclaveOptions :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateEnclaveOptionsRequest)
requestLaunchTemplateData_enclaveOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions :: Maybe LaunchTemplateEnclaveOptionsRequest
$sel:enclaveOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions} -> Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateEnclaveOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:enclaveOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions = Maybe LaunchTemplateEnclaveOptionsRequest
a} :: RequestLaunchTemplateData)

-- | Indicates whether an instance is enabled for hibernation. This parameter
-- is valid only if the instance meets the
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html hibernation prerequisites>.
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html Hibernate your instance>
-- in the /Amazon Elastic Compute Cloud User Guide/.
requestLaunchTemplateData_hibernationOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateHibernationOptionsRequest)
requestLaunchTemplateData_hibernationOptions :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateHibernationOptionsRequest)
requestLaunchTemplateData_hibernationOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions :: Maybe LaunchTemplateHibernationOptionsRequest
$sel:hibernationOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions} -> Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateHibernationOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:hibernationOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions = Maybe LaunchTemplateHibernationOptionsRequest
a} :: RequestLaunchTemplateData)

-- | The name or Amazon Resource Name (ARN) of an IAM instance profile.
requestLaunchTemplateData_iamInstanceProfile :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateIamInstanceProfileSpecificationRequest)
requestLaunchTemplateData_iamInstanceProfile :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateIamInstanceProfileSpecificationRequest)
requestLaunchTemplateData_iamInstanceProfile = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile :: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
$sel:iamInstanceProfile:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile} -> Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
a -> RequestLaunchTemplateData
s {$sel:iamInstanceProfile:RequestLaunchTemplateData' :: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile = Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
a} :: RequestLaunchTemplateData)

-- | The ID of the AMI.
requestLaunchTemplateData_imageId :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Text)
requestLaunchTemplateData_imageId :: Lens' RequestLaunchTemplateData (Maybe Text)
requestLaunchTemplateData_imageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Text
imageId :: Maybe Text
$sel:imageId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
imageId} -> Maybe Text
imageId) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Text
a -> RequestLaunchTemplateData
s {$sel:imageId:RequestLaunchTemplateData' :: Maybe Text
imageId = Maybe Text
a} :: RequestLaunchTemplateData)

-- | Indicates whether an instance stops or terminates when you initiate
-- shutdown from the instance (using the operating system command for
-- system shutdown).
--
-- Default: @stop@
requestLaunchTemplateData_instanceInitiatedShutdownBehavior :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe ShutdownBehavior)
requestLaunchTemplateData_instanceInitiatedShutdownBehavior :: Lens' RequestLaunchTemplateData (Maybe ShutdownBehavior)
requestLaunchTemplateData_instanceInitiatedShutdownBehavior = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior :: Maybe ShutdownBehavior
$sel:instanceInitiatedShutdownBehavior:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior} -> Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe ShutdownBehavior
a -> RequestLaunchTemplateData
s {$sel:instanceInitiatedShutdownBehavior:RequestLaunchTemplateData' :: Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior = Maybe ShutdownBehavior
a} :: RequestLaunchTemplateData)

-- | The market (purchasing) option for the instances.
requestLaunchTemplateData_instanceMarketOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateInstanceMarketOptionsRequest)
requestLaunchTemplateData_instanceMarketOptions :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateInstanceMarketOptionsRequest)
requestLaunchTemplateData_instanceMarketOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions :: Maybe LaunchTemplateInstanceMarketOptionsRequest
$sel:instanceMarketOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions} -> Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateInstanceMarketOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:instanceMarketOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions = Maybe LaunchTemplateInstanceMarketOptionsRequest
a} :: RequestLaunchTemplateData)

-- | The attributes for the instance types. When you specify instance
-- attributes, Amazon EC2 will identify instance types with these
-- attributes.
--
-- If you specify @InstanceRequirements@, you can\'t specify
-- @InstanceType@.
requestLaunchTemplateData_instanceRequirements :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe InstanceRequirementsRequest)
requestLaunchTemplateData_instanceRequirements :: Lens' RequestLaunchTemplateData (Maybe InstanceRequirementsRequest)
requestLaunchTemplateData_instanceRequirements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe InstanceRequirementsRequest
instanceRequirements :: Maybe InstanceRequirementsRequest
$sel:instanceRequirements:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceRequirementsRequest
instanceRequirements} -> Maybe InstanceRequirementsRequest
instanceRequirements) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe InstanceRequirementsRequest
a -> RequestLaunchTemplateData
s {$sel:instanceRequirements:RequestLaunchTemplateData' :: Maybe InstanceRequirementsRequest
instanceRequirements = Maybe InstanceRequirementsRequest
a} :: RequestLaunchTemplateData)

-- | The instance type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- If you specify @InstanceType@, you can\'t specify
-- @InstanceRequirements@.
requestLaunchTemplateData_instanceType :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe InstanceType)
requestLaunchTemplateData_instanceType :: Lens' RequestLaunchTemplateData (Maybe InstanceType)
requestLaunchTemplateData_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe InstanceType
instanceType :: Maybe InstanceType
$sel:instanceType:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceType
instanceType} -> Maybe InstanceType
instanceType) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe InstanceType
a -> RequestLaunchTemplateData
s {$sel:instanceType:RequestLaunchTemplateData' :: Maybe InstanceType
instanceType = Maybe InstanceType
a} :: RequestLaunchTemplateData)

-- | The ID of the kernel.
--
-- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
-- more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html User provided kernels>
-- in the /Amazon Elastic Compute Cloud User Guide/.
requestLaunchTemplateData_kernelId :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Text)
requestLaunchTemplateData_kernelId :: Lens' RequestLaunchTemplateData (Maybe Text)
requestLaunchTemplateData_kernelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Text
kernelId :: Maybe Text
$sel:kernelId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
kernelId} -> Maybe Text
kernelId) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Text
a -> RequestLaunchTemplateData
s {$sel:kernelId:RequestLaunchTemplateData' :: Maybe Text
kernelId = Maybe Text
a} :: RequestLaunchTemplateData)

-- | The name of the key pair. You can create a key pair using
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateKeyPair.html CreateKeyPair>
-- or
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImportKeyPair.html ImportKeyPair>.
--
-- If you do not specify a key pair, you can\'t connect to the instance
-- unless you choose an AMI that is configured to allow users another way
-- to log in.
requestLaunchTemplateData_keyName :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Text)
requestLaunchTemplateData_keyName :: Lens' RequestLaunchTemplateData (Maybe Text)
requestLaunchTemplateData_keyName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Text
keyName :: Maybe Text
$sel:keyName:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
keyName} -> Maybe Text
keyName) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Text
a -> RequestLaunchTemplateData
s {$sel:keyName:RequestLaunchTemplateData' :: Maybe Text
keyName = Maybe Text
a} :: RequestLaunchTemplateData)

-- | The license configurations.
requestLaunchTemplateData_licenseSpecifications :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [LaunchTemplateLicenseConfigurationRequest])
requestLaunchTemplateData_licenseSpecifications :: Lens'
  RequestLaunchTemplateData
  (Maybe [LaunchTemplateLicenseConfigurationRequest])
requestLaunchTemplateData_licenseSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications :: Maybe [LaunchTemplateLicenseConfigurationRequest]
$sel:licenseSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications} -> Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [LaunchTemplateLicenseConfigurationRequest]
a -> RequestLaunchTemplateData
s {$sel:licenseSpecifications:RequestLaunchTemplateData' :: Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications = Maybe [LaunchTemplateLicenseConfigurationRequest]
a} :: RequestLaunchTemplateData) 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 maintenance options for the instance.
requestLaunchTemplateData_maintenanceOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateInstanceMaintenanceOptionsRequest)
requestLaunchTemplateData_maintenanceOptions :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateInstanceMaintenanceOptionsRequest)
requestLaunchTemplateData_maintenanceOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions :: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
$sel:maintenanceOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions} -> Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:maintenanceOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions = Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
a} :: RequestLaunchTemplateData)

-- | The metadata options for the instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html Instance metadata and user data>
-- in the /Amazon Elastic Compute Cloud User Guide/.
requestLaunchTemplateData_metadataOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplateInstanceMetadataOptionsRequest)
requestLaunchTemplateData_metadataOptions :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplateInstanceMetadataOptionsRequest)
requestLaunchTemplateData_metadataOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions :: Maybe LaunchTemplateInstanceMetadataOptionsRequest
$sel:metadataOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions} -> Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplateInstanceMetadataOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:metadataOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions = Maybe LaunchTemplateInstanceMetadataOptionsRequest
a} :: RequestLaunchTemplateData)

-- | The monitoring for the instance.
requestLaunchTemplateData_monitoring :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplatesMonitoringRequest)
requestLaunchTemplateData_monitoring :: Lens'
  RequestLaunchTemplateData (Maybe LaunchTemplatesMonitoringRequest)
requestLaunchTemplateData_monitoring = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplatesMonitoringRequest
monitoring :: Maybe LaunchTemplatesMonitoringRequest
$sel:monitoring:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatesMonitoringRequest
monitoring} -> Maybe LaunchTemplatesMonitoringRequest
monitoring) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplatesMonitoringRequest
a -> RequestLaunchTemplateData
s {$sel:monitoring:RequestLaunchTemplateData' :: Maybe LaunchTemplatesMonitoringRequest
monitoring = Maybe LaunchTemplatesMonitoringRequest
a} :: RequestLaunchTemplateData)

-- | One or more network interfaces. If you specify a network interface, you
-- must specify any security groups and subnets as part of the network
-- interface.
requestLaunchTemplateData_networkInterfaces :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest])
requestLaunchTemplateData_networkInterfaces :: Lens'
  RequestLaunchTemplateData
  (Maybe
     [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest])
requestLaunchTemplateData_networkInterfaces = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces :: Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
$sel:networkInterfaces:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe
     [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces} -> Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
a -> RequestLaunchTemplateData
s {$sel:networkInterfaces:RequestLaunchTemplateData' :: Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces = Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
a} :: RequestLaunchTemplateData) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The placement for the instance.
requestLaunchTemplateData_placement :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplatePlacementRequest)
requestLaunchTemplateData_placement :: Lens'
  RequestLaunchTemplateData (Maybe LaunchTemplatePlacementRequest)
requestLaunchTemplateData_placement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplatePlacementRequest
placement :: Maybe LaunchTemplatePlacementRequest
$sel:placement:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatePlacementRequest
placement} -> Maybe LaunchTemplatePlacementRequest
placement) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplatePlacementRequest
a -> RequestLaunchTemplateData
s {$sel:placement:RequestLaunchTemplateData' :: Maybe LaunchTemplatePlacementRequest
placement = Maybe LaunchTemplatePlacementRequest
a} :: RequestLaunchTemplateData)

-- | The options for the instance hostname. The default values are inherited
-- from the subnet.
requestLaunchTemplateData_privateDnsNameOptions :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe LaunchTemplatePrivateDnsNameOptionsRequest)
requestLaunchTemplateData_privateDnsNameOptions :: Lens'
  RequestLaunchTemplateData
  (Maybe LaunchTemplatePrivateDnsNameOptionsRequest)
requestLaunchTemplateData_privateDnsNameOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions :: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
$sel:privateDnsNameOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions} -> Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe LaunchTemplatePrivateDnsNameOptionsRequest
a -> RequestLaunchTemplateData
s {$sel:privateDnsNameOptions:RequestLaunchTemplateData' :: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions = Maybe LaunchTemplatePrivateDnsNameOptionsRequest
a} :: RequestLaunchTemplateData)

-- | The ID of the RAM disk.
--
-- We recommend that you use PV-GRUB instead of kernels and RAM disks. For
-- more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html User provided kernels>
-- in the /Amazon Elastic Compute Cloud User Guide/.
requestLaunchTemplateData_ramDiskId :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Text)
requestLaunchTemplateData_ramDiskId :: Lens' RequestLaunchTemplateData (Maybe Text)
requestLaunchTemplateData_ramDiskId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Text
ramDiskId :: Maybe Text
$sel:ramDiskId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
ramDiskId} -> Maybe Text
ramDiskId) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Text
a -> RequestLaunchTemplateData
s {$sel:ramDiskId:RequestLaunchTemplateData' :: Maybe Text
ramDiskId = Maybe Text
a} :: RequestLaunchTemplateData)

-- | One or more security group IDs. You can create a security group using
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSecurityGroup.html CreateSecurityGroup>.
-- You cannot specify both a security group ID and security name in the
-- same request.
requestLaunchTemplateData_securityGroupIds :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [Prelude.Text])
requestLaunchTemplateData_securityGroupIds :: Lens' RequestLaunchTemplateData (Maybe [Text])
requestLaunchTemplateData_securityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [Text]
securityGroupIds :: Maybe [Text]
$sel:securityGroupIds:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
securityGroupIds} -> Maybe [Text]
securityGroupIds) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [Text]
a -> RequestLaunchTemplateData
s {$sel:securityGroupIds:RequestLaunchTemplateData' :: Maybe [Text]
securityGroupIds = Maybe [Text]
a} :: RequestLaunchTemplateData) 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 security group names. For a nondefault VPC, you must use
-- security group IDs instead. You cannot specify both a security group ID
-- and security name in the same request.
requestLaunchTemplateData_securityGroups :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [Prelude.Text])
requestLaunchTemplateData_securityGroups :: Lens' RequestLaunchTemplateData (Maybe [Text])
requestLaunchTemplateData_securityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [Text]
securityGroups :: Maybe [Text]
$sel:securityGroups:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
securityGroups} -> Maybe [Text]
securityGroups) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [Text]
a -> RequestLaunchTemplateData
s {$sel:securityGroups:RequestLaunchTemplateData' :: Maybe [Text]
securityGroups = Maybe [Text]
a} :: RequestLaunchTemplateData) 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 tags to apply to the resources that are created during instance
-- launch.
--
-- You can specify tags for the following resources only:
--
-- -   Instances
--
-- -   Volumes
--
-- -   Elastic graphics
--
-- -   Spot Instance requests
--
-- -   Network interfaces
--
-- To tag a resource after it has been created, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html CreateTags>.
--
-- To tag the launch template itself, you must use the
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html TagSpecification>
-- parameter.
requestLaunchTemplateData_tagSpecifications :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe [LaunchTemplateTagSpecificationRequest])
requestLaunchTemplateData_tagSpecifications :: Lens'
  RequestLaunchTemplateData
  (Maybe [LaunchTemplateTagSpecificationRequest])
requestLaunchTemplateData_tagSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications :: Maybe [LaunchTemplateTagSpecificationRequest]
$sel:tagSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications} -> Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe [LaunchTemplateTagSpecificationRequest]
a -> RequestLaunchTemplateData
s {$sel:tagSpecifications:RequestLaunchTemplateData' :: Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications = Maybe [LaunchTemplateTagSpecificationRequest]
a} :: RequestLaunchTemplateData) 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 user data to make available to the instance. You must provide
-- base64-encoded text. User data is limited to 16 KB. For more
-- information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html Run commands on your Linux instance at launch>
-- (Linux) or
-- <https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instancedata-add-user-data.html Work with instance user data>
-- (Windows) in the /Amazon Elastic Compute Cloud User Guide/.
--
-- If you are creating the launch template for use with Batch, the user
-- data must be provided in the
-- <https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive MIME multi-part archive format>.
-- For more information, see
-- <https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html Amazon EC2 user data in launch templates>
-- in the /Batch User Guide/.
requestLaunchTemplateData_userData :: Lens.Lens' RequestLaunchTemplateData (Prelude.Maybe Prelude.Text)
requestLaunchTemplateData_userData :: Lens' RequestLaunchTemplateData (Maybe Text)
requestLaunchTemplateData_userData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RequestLaunchTemplateData' {Maybe Text
userData :: Maybe Text
$sel:userData:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
userData} -> Maybe Text
userData) (\s :: RequestLaunchTemplateData
s@RequestLaunchTemplateData' {} Maybe Text
a -> RequestLaunchTemplateData
s {$sel:userData:RequestLaunchTemplateData' :: Maybe Text
userData = Maybe Text
a} :: RequestLaunchTemplateData)

instance Prelude.Hashable RequestLaunchTemplateData where
  hashWithSalt :: Int -> RequestLaunchTemplateData -> Int
hashWithSalt Int
_salt RequestLaunchTemplateData' {Maybe Bool
Maybe [Text]
Maybe [ElasticGpuSpecification]
Maybe [LaunchTemplateElasticInferenceAccelerator]
Maybe [LaunchTemplateLicenseConfigurationRequest]
Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
Maybe [LaunchTemplateTagSpecificationRequest]
Maybe [LaunchTemplateBlockDeviceMappingRequest]
Maybe Text
Maybe CreditSpecificationRequest
Maybe InstanceType
Maybe LaunchTemplateCapacityReservationSpecificationRequest
Maybe LaunchTemplateCpuOptionsRequest
Maybe LaunchTemplateEnclaveOptionsRequest
Maybe LaunchTemplateHibernationOptionsRequest
Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
Maybe LaunchTemplateInstanceMetadataOptionsRequest
Maybe LaunchTemplatePrivateDnsNameOptionsRequest
Maybe LaunchTemplatesMonitoringRequest
Maybe ShutdownBehavior
Maybe LaunchTemplateInstanceMarketOptionsRequest
Maybe LaunchTemplatePlacementRequest
Maybe InstanceRequirementsRequest
userData :: Maybe Text
tagSpecifications :: Maybe [LaunchTemplateTagSpecificationRequest]
securityGroups :: Maybe [Text]
securityGroupIds :: Maybe [Text]
ramDiskId :: Maybe Text
privateDnsNameOptions :: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
placement :: Maybe LaunchTemplatePlacementRequest
networkInterfaces :: Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
monitoring :: Maybe LaunchTemplatesMonitoringRequest
metadataOptions :: Maybe LaunchTemplateInstanceMetadataOptionsRequest
maintenanceOptions :: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
licenseSpecifications :: Maybe [LaunchTemplateLicenseConfigurationRequest]
keyName :: Maybe Text
kernelId :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirementsRequest
instanceMarketOptions :: Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceInitiatedShutdownBehavior :: Maybe ShutdownBehavior
imageId :: Maybe Text
iamInstanceProfile :: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
hibernationOptions :: Maybe LaunchTemplateHibernationOptionsRequest
enclaveOptions :: Maybe LaunchTemplateEnclaveOptionsRequest
elasticInferenceAccelerators :: Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticGpuSpecifications :: Maybe [ElasticGpuSpecification]
ebsOptimized :: Maybe Bool
disableApiTermination :: Maybe Bool
disableApiStop :: Maybe Bool
creditSpecification :: Maybe CreditSpecificationRequest
cpuOptions :: Maybe LaunchTemplateCpuOptionsRequest
capacityReservationSpecification :: Maybe LaunchTemplateCapacityReservationSpecificationRequest
blockDeviceMappings :: Maybe [LaunchTemplateBlockDeviceMappingRequest]
$sel:userData:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:tagSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateTagSpecificationRequest]
$sel:securityGroups:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
$sel:securityGroupIds:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
$sel:ramDiskId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:privateDnsNameOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplatePrivateDnsNameOptionsRequest
$sel:placement:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatePlacementRequest
$sel:networkInterfaces:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe
     [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
$sel:monitoring:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatesMonitoringRequest
$sel:metadataOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMetadataOptionsRequest
$sel:maintenanceOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
$sel:licenseSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateLicenseConfigurationRequest]
$sel:keyName:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:kernelId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:instanceType:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceType
$sel:instanceRequirements:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceRequirementsRequest
$sel:instanceMarketOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMarketOptionsRequest
$sel:instanceInitiatedShutdownBehavior:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe ShutdownBehavior
$sel:imageId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:iamInstanceProfile:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
$sel:hibernationOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateHibernationOptionsRequest
$sel:enclaveOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateEnclaveOptionsRequest
$sel:elasticInferenceAccelerators:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateElasticInferenceAccelerator]
$sel:elasticGpuSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [ElasticGpuSpecification]
$sel:ebsOptimized:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:disableApiTermination:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:disableApiStop:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:creditSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe CreditSpecificationRequest
$sel:cpuOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplateCpuOptionsRequest
$sel:capacityReservationSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateCapacityReservationSpecificationRequest
$sel:blockDeviceMappings:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateBlockDeviceMappingRequest]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateCpuOptionsRequest
cpuOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CreditSpecificationRequest
creditSpecification
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
disableApiStop
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
disableApiTermination
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
ebsOptimized
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ElasticGpuSpecification]
elasticGpuSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
imageId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceRequirementsRequest
instanceRequirements
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceType
instanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kernelId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
keyName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplatesMonitoringRequest
monitoring
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplatePlacementRequest
placement
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ramDiskId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
securityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
securityGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
userData

instance Prelude.NFData RequestLaunchTemplateData where
  rnf :: RequestLaunchTemplateData -> ()
rnf RequestLaunchTemplateData' {Maybe Bool
Maybe [Text]
Maybe [ElasticGpuSpecification]
Maybe [LaunchTemplateElasticInferenceAccelerator]
Maybe [LaunchTemplateLicenseConfigurationRequest]
Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
Maybe [LaunchTemplateTagSpecificationRequest]
Maybe [LaunchTemplateBlockDeviceMappingRequest]
Maybe Text
Maybe CreditSpecificationRequest
Maybe InstanceType
Maybe LaunchTemplateCapacityReservationSpecificationRequest
Maybe LaunchTemplateCpuOptionsRequest
Maybe LaunchTemplateEnclaveOptionsRequest
Maybe LaunchTemplateHibernationOptionsRequest
Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
Maybe LaunchTemplateInstanceMetadataOptionsRequest
Maybe LaunchTemplatePrivateDnsNameOptionsRequest
Maybe LaunchTemplatesMonitoringRequest
Maybe ShutdownBehavior
Maybe LaunchTemplateInstanceMarketOptionsRequest
Maybe LaunchTemplatePlacementRequest
Maybe InstanceRequirementsRequest
userData :: Maybe Text
tagSpecifications :: Maybe [LaunchTemplateTagSpecificationRequest]
securityGroups :: Maybe [Text]
securityGroupIds :: Maybe [Text]
ramDiskId :: Maybe Text
privateDnsNameOptions :: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
placement :: Maybe LaunchTemplatePlacementRequest
networkInterfaces :: Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
monitoring :: Maybe LaunchTemplatesMonitoringRequest
metadataOptions :: Maybe LaunchTemplateInstanceMetadataOptionsRequest
maintenanceOptions :: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
licenseSpecifications :: Maybe [LaunchTemplateLicenseConfigurationRequest]
keyName :: Maybe Text
kernelId :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirementsRequest
instanceMarketOptions :: Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceInitiatedShutdownBehavior :: Maybe ShutdownBehavior
imageId :: Maybe Text
iamInstanceProfile :: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
hibernationOptions :: Maybe LaunchTemplateHibernationOptionsRequest
enclaveOptions :: Maybe LaunchTemplateEnclaveOptionsRequest
elasticInferenceAccelerators :: Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticGpuSpecifications :: Maybe [ElasticGpuSpecification]
ebsOptimized :: Maybe Bool
disableApiTermination :: Maybe Bool
disableApiStop :: Maybe Bool
creditSpecification :: Maybe CreditSpecificationRequest
cpuOptions :: Maybe LaunchTemplateCpuOptionsRequest
capacityReservationSpecification :: Maybe LaunchTemplateCapacityReservationSpecificationRequest
blockDeviceMappings :: Maybe [LaunchTemplateBlockDeviceMappingRequest]
$sel:userData:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:tagSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateTagSpecificationRequest]
$sel:securityGroups:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
$sel:securityGroupIds:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
$sel:ramDiskId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:privateDnsNameOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplatePrivateDnsNameOptionsRequest
$sel:placement:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatePlacementRequest
$sel:networkInterfaces:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe
     [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
$sel:monitoring:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatesMonitoringRequest
$sel:metadataOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMetadataOptionsRequest
$sel:maintenanceOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
$sel:licenseSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateLicenseConfigurationRequest]
$sel:keyName:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:kernelId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:instanceType:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceType
$sel:instanceRequirements:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceRequirementsRequest
$sel:instanceMarketOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMarketOptionsRequest
$sel:instanceInitiatedShutdownBehavior:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe ShutdownBehavior
$sel:imageId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:iamInstanceProfile:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
$sel:hibernationOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateHibernationOptionsRequest
$sel:enclaveOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateEnclaveOptionsRequest
$sel:elasticInferenceAccelerators:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateElasticInferenceAccelerator]
$sel:elasticGpuSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [ElasticGpuSpecification]
$sel:ebsOptimized:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:disableApiTermination:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:disableApiStop:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:creditSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe CreditSpecificationRequest
$sel:cpuOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplateCpuOptionsRequest
$sel:capacityReservationSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateCapacityReservationSpecificationRequest
$sel:blockDeviceMappings:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateBlockDeviceMappingRequest]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateCpuOptionsRequest
cpuOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CreditSpecificationRequest
creditSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
disableApiStop
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
disableApiTermination
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
ebsOptimized
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ElasticGpuSpecification]
elasticGpuSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceRequirementsRequest
instanceRequirements
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceType
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kernelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
keyName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchTemplatesMonitoringRequest
monitoring
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe LaunchTemplatePlacementRequest
placement
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
ramDiskId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
securityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
securityGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [LaunchTemplateTagSpecificationRequest]
tagSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
userData

instance Data.ToQuery RequestLaunchTemplateData where
  toQuery :: RequestLaunchTemplateData -> QueryString
toQuery RequestLaunchTemplateData' {Maybe Bool
Maybe [Text]
Maybe [ElasticGpuSpecification]
Maybe [LaunchTemplateElasticInferenceAccelerator]
Maybe [LaunchTemplateLicenseConfigurationRequest]
Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
Maybe [LaunchTemplateTagSpecificationRequest]
Maybe [LaunchTemplateBlockDeviceMappingRequest]
Maybe Text
Maybe CreditSpecificationRequest
Maybe InstanceType
Maybe LaunchTemplateCapacityReservationSpecificationRequest
Maybe LaunchTemplateCpuOptionsRequest
Maybe LaunchTemplateEnclaveOptionsRequest
Maybe LaunchTemplateHibernationOptionsRequest
Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
Maybe LaunchTemplateInstanceMetadataOptionsRequest
Maybe LaunchTemplatePrivateDnsNameOptionsRequest
Maybe LaunchTemplatesMonitoringRequest
Maybe ShutdownBehavior
Maybe LaunchTemplateInstanceMarketOptionsRequest
Maybe LaunchTemplatePlacementRequest
Maybe InstanceRequirementsRequest
userData :: Maybe Text
tagSpecifications :: Maybe [LaunchTemplateTagSpecificationRequest]
securityGroups :: Maybe [Text]
securityGroupIds :: Maybe [Text]
ramDiskId :: Maybe Text
privateDnsNameOptions :: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
placement :: Maybe LaunchTemplatePlacementRequest
networkInterfaces :: Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
monitoring :: Maybe LaunchTemplatesMonitoringRequest
metadataOptions :: Maybe LaunchTemplateInstanceMetadataOptionsRequest
maintenanceOptions :: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
licenseSpecifications :: Maybe [LaunchTemplateLicenseConfigurationRequest]
keyName :: Maybe Text
kernelId :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirementsRequest
instanceMarketOptions :: Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceInitiatedShutdownBehavior :: Maybe ShutdownBehavior
imageId :: Maybe Text
iamInstanceProfile :: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
hibernationOptions :: Maybe LaunchTemplateHibernationOptionsRequest
enclaveOptions :: Maybe LaunchTemplateEnclaveOptionsRequest
elasticInferenceAccelerators :: Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticGpuSpecifications :: Maybe [ElasticGpuSpecification]
ebsOptimized :: Maybe Bool
disableApiTermination :: Maybe Bool
disableApiStop :: Maybe Bool
creditSpecification :: Maybe CreditSpecificationRequest
cpuOptions :: Maybe LaunchTemplateCpuOptionsRequest
capacityReservationSpecification :: Maybe LaunchTemplateCapacityReservationSpecificationRequest
blockDeviceMappings :: Maybe [LaunchTemplateBlockDeviceMappingRequest]
$sel:userData:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:tagSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateTagSpecificationRequest]
$sel:securityGroups:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
$sel:securityGroupIds:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [Text]
$sel:ramDiskId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:privateDnsNameOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplatePrivateDnsNameOptionsRequest
$sel:placement:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatePlacementRequest
$sel:networkInterfaces:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe
     [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
$sel:monitoring:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplatesMonitoringRequest
$sel:metadataOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMetadataOptionsRequest
$sel:maintenanceOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
$sel:licenseSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateLicenseConfigurationRequest]
$sel:keyName:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:kernelId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:instanceType:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceType
$sel:instanceRequirements:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe InstanceRequirementsRequest
$sel:instanceMarketOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateInstanceMarketOptionsRequest
$sel:instanceInitiatedShutdownBehavior:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe ShutdownBehavior
$sel:imageId:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Text
$sel:iamInstanceProfile:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
$sel:hibernationOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateHibernationOptionsRequest
$sel:enclaveOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateEnclaveOptionsRequest
$sel:elasticInferenceAccelerators:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateElasticInferenceAccelerator]
$sel:elasticGpuSpecifications:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe [ElasticGpuSpecification]
$sel:ebsOptimized:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:disableApiTermination:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:disableApiStop:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe Bool
$sel:creditSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe CreditSpecificationRequest
$sel:cpuOptions:RequestLaunchTemplateData' :: RequestLaunchTemplateData -> Maybe LaunchTemplateCpuOptionsRequest
$sel:capacityReservationSpecification:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe LaunchTemplateCapacityReservationSpecificationRequest
$sel:blockDeviceMappings:RequestLaunchTemplateData' :: RequestLaunchTemplateData
-> Maybe [LaunchTemplateBlockDeviceMappingRequest]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"BlockDeviceMapping"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LaunchTemplateBlockDeviceMappingRequest]
blockDeviceMappings
          ),
        ByteString
"CapacityReservationSpecification"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateCapacityReservationSpecificationRequest
capacityReservationSpecification,
        ByteString
"CpuOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateCpuOptionsRequest
cpuOptions,
        ByteString
"CreditSpecification" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe CreditSpecificationRequest
creditSpecification,
        ByteString
"DisableApiStop" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
disableApiStop,
        ByteString
"DisableApiTermination"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
disableApiTermination,
        ByteString
"EbsOptimized" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
ebsOptimized,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ElasticGpuSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ElasticGpuSpecification]
elasticGpuSpecifications
          ),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ElasticInferenceAccelerator"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LaunchTemplateElasticInferenceAccelerator]
elasticInferenceAccelerators
          ),
        ByteString
"EnclaveOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateEnclaveOptionsRequest
enclaveOptions,
        ByteString
"HibernationOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateHibernationOptionsRequest
hibernationOptions,
        ByteString
"IamInstanceProfile" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateIamInstanceProfileSpecificationRequest
iamInstanceProfile,
        ByteString
"ImageId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
imageId,
        ByteString
"InstanceInitiatedShutdownBehavior"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ShutdownBehavior
instanceInitiatedShutdownBehavior,
        ByteString
"InstanceMarketOptions"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateInstanceMarketOptionsRequest
instanceMarketOptions,
        ByteString
"InstanceRequirements" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe InstanceRequirementsRequest
instanceRequirements,
        ByteString
"InstanceType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe InstanceType
instanceType,
        ByteString
"KernelId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
kernelId,
        ByteString
"KeyName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
keyName,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"LicenseSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LaunchTemplateLicenseConfigurationRequest]
licenseSpecifications
          ),
        ByteString
"MaintenanceOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateInstanceMaintenanceOptionsRequest
maintenanceOptions,
        ByteString
"MetadataOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplateInstanceMetadataOptionsRequest
metadataOptions,
        ByteString
"Monitoring" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplatesMonitoringRequest
monitoring,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"NetworkInterface"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]
networkInterfaces
          ),
        ByteString
"Placement" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplatePlacementRequest
placement,
        ByteString
"PrivateDnsNameOptions"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LaunchTemplatePrivateDnsNameOptionsRequest
privateDnsNameOptions,
        ByteString
"RamDiskId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
ramDiskId,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"SecurityGroupId"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
securityGroupIds
          ),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"SecurityGroup"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
securityGroups
          ),
        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 [LaunchTemplateTagSpecificationRequest]
tagSpecifications
          ),
        ByteString
"UserData" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
userData
      ]