amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsEc2LaunchTemplateDataDetails.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataDetails
-- 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.SecurityHub.Types.AwsEc2LaunchTemplateDataDetails where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataCpuOptionsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataCreditSpecificationDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataElasticGpuSpecificationSetDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataEnclaveOptionsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataHibernationOptionsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataIamInstanceProfileDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataLicenseSetDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataMaintenanceOptionsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataMetadataOptionsDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataMonitoringDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataPlacementDetails
import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails
-- | The information to include in an Amazon Elastic Compute Cloud (Amazon
-- EC2) launch template.
--
-- /See:/ 'newAwsEc2LaunchTemplateDataDetails' smart constructor.
data AwsEc2LaunchTemplateDataDetails = AwsEc2LaunchTemplateDataDetails'
{ -- | Information about a block device mapping for an Amazon EC2 launch
-- template.
blockDeviceMappingSet :: Prelude.Maybe [AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails],
-- | Specifies an instance\'s Capacity Reservation targeting option. You can
-- specify only one option at a time.
capacityReservationSpecification :: Prelude.Maybe AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails,
-- | Specifies the CPU options for an instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html Optimize CPU options>
-- in the /Amazon Elastic Compute Cloud User Guide/.
cpuOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataCpuOptionsDetails,
-- | Specifies the credit option for CPU usage of a T2, T3, or T3a instance.
creditSpecification :: Prelude.Maybe AwsEc2LaunchTemplateDataCreditSpecificationDetails,
-- | 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 Enable stop protection>
-- in the /Amazon EC2 User Guide/.
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. If set to @true@, you can.
disableApiTermination :: Prelude.Maybe Prelude.Bool,
-- | Indicates whether the instance is optimized for Amazon EBS I\/O.
ebsOptimized :: Prelude.Maybe Prelude.Bool,
-- | Provides details about Elastic Graphics accelerators to associate with
-- the instance.
elasticGpuSpecificationSet :: Prelude.Maybe [AwsEc2LaunchTemplateDataElasticGpuSpecificationSetDetails],
-- | The Amazon Elastic Inference accelerator for the instance.
elasticInferenceAcceleratorSet :: Prelude.Maybe [AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails],
-- | Indicates whether the Amazon EC2 instance is enabled for Amazon Web
-- Services Nitro Enclaves.
enclaveOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataEnclaveOptionsDetails,
-- | Specifies whether your Amazon EC2 instance is configured for
-- hibernation.
hibernationOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataHibernationOptionsDetails,
-- | The name or Amazon Resource Name (ARN) of an IAM instance profile.
iamInstanceProfile :: Prelude.Maybe AwsEc2LaunchTemplateDataIamInstanceProfileDetails,
-- | The ID of the Amazon Machine Image (AMI).
imageId :: Prelude.Maybe Prelude.Text,
-- | Provides the options for specifying the instance initiated shutdown
-- behavior.
instanceInitiatedShutdownBehavior :: Prelude.Maybe Prelude.Text,
-- | Specifies the market (purchasing) option for an instance.
instanceMarketOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails,
-- | 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@.
instanceRequirements :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsDetails,
-- | The instance type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon EC2 User Guide/. If you specify @InstanceType@, you
-- can\'t specify @InstanceRequirements@.
instanceType :: Prelude.Maybe Prelude.Text,
-- | The ID of the kernel.
kernelId :: Prelude.Maybe Prelude.Text,
-- | The name of the key pair that allows users to connect to the instance.
keyName :: Prelude.Maybe Prelude.Text,
-- | Specifies a license configuration for an instance.
licenseSet :: Prelude.Maybe [AwsEc2LaunchTemplateDataLicenseSetDetails],
-- | The maintenance options of your instance.
maintenanceOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataMaintenanceOptionsDetails,
-- | 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 EC2 User Guide/.
metadataOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataMetadataOptionsDetails,
-- | The monitoring for the instance.
monitoring :: Prelude.Maybe AwsEc2LaunchTemplateDataMonitoringDetails,
-- | Specifies the parameters for a network interface that is attached to the
-- instance.
networkInterfaceSet :: Prelude.Maybe [AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails],
-- | Specifies the placement of an instance.
placement :: Prelude.Maybe AwsEc2LaunchTemplateDataPlacementDetails,
-- | The options for the instance hostname.
privateDnsNameOptions :: Prelude.Maybe AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails,
-- | The ID of the RAM disk.
ramDiskId :: Prelude.Maybe Prelude.Text,
-- | One or more security group IDs.
securityGroupIdSet :: 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.
securityGroupSet :: Prelude.Maybe [Prelude.Text],
-- | The user data to make available to the instance.
userData :: Prelude.Maybe Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AwsEc2LaunchTemplateDataDetails' 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:
--
-- 'blockDeviceMappingSet', 'awsEc2LaunchTemplateDataDetails_blockDeviceMappingSet' - Information about a block device mapping for an Amazon EC2 launch
-- template.
--
-- 'capacityReservationSpecification', 'awsEc2LaunchTemplateDataDetails_capacityReservationSpecification' - Specifies an instance\'s Capacity Reservation targeting option. You can
-- specify only one option at a time.
--
-- 'cpuOptions', 'awsEc2LaunchTemplateDataDetails_cpuOptions' - Specifies the CPU options for an instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html Optimize CPU options>
-- in the /Amazon Elastic Compute Cloud User Guide/.
--
-- 'creditSpecification', 'awsEc2LaunchTemplateDataDetails_creditSpecification' - Specifies the credit option for CPU usage of a T2, T3, or T3a instance.
--
-- 'disableApiStop', 'awsEc2LaunchTemplateDataDetails_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 Enable stop protection>
-- in the /Amazon EC2 User Guide/.
--
-- 'disableApiTermination', 'awsEc2LaunchTemplateDataDetails_disableApiTermination' - If you set this parameter to @true@, you can\'t terminate the instance
-- using the Amazon EC2 console, CLI, or API. If set to @true@, you can.
--
-- 'ebsOptimized', 'awsEc2LaunchTemplateDataDetails_ebsOptimized' - Indicates whether the instance is optimized for Amazon EBS I\/O.
--
-- 'elasticGpuSpecificationSet', 'awsEc2LaunchTemplateDataDetails_elasticGpuSpecificationSet' - Provides details about Elastic Graphics accelerators to associate with
-- the instance.
--
-- 'elasticInferenceAcceleratorSet', 'awsEc2LaunchTemplateDataDetails_elasticInferenceAcceleratorSet' - The Amazon Elastic Inference accelerator for the instance.
--
-- 'enclaveOptions', 'awsEc2LaunchTemplateDataDetails_enclaveOptions' - Indicates whether the Amazon EC2 instance is enabled for Amazon Web
-- Services Nitro Enclaves.
--
-- 'hibernationOptions', 'awsEc2LaunchTemplateDataDetails_hibernationOptions' - Specifies whether your Amazon EC2 instance is configured for
-- hibernation.
--
-- 'iamInstanceProfile', 'awsEc2LaunchTemplateDataDetails_iamInstanceProfile' - The name or Amazon Resource Name (ARN) of an IAM instance profile.
--
-- 'imageId', 'awsEc2LaunchTemplateDataDetails_imageId' - The ID of the Amazon Machine Image (AMI).
--
-- 'instanceInitiatedShutdownBehavior', 'awsEc2LaunchTemplateDataDetails_instanceInitiatedShutdownBehavior' - Provides the options for specifying the instance initiated shutdown
-- behavior.
--
-- 'instanceMarketOptions', 'awsEc2LaunchTemplateDataDetails_instanceMarketOptions' - Specifies the market (purchasing) option for an instance.
--
-- 'instanceRequirements', 'awsEc2LaunchTemplateDataDetails_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', 'awsEc2LaunchTemplateDataDetails_instanceType' - The instance type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon EC2 User Guide/. If you specify @InstanceType@, you
-- can\'t specify @InstanceRequirements@.
--
-- 'kernelId', 'awsEc2LaunchTemplateDataDetails_kernelId' - The ID of the kernel.
--
-- 'keyName', 'awsEc2LaunchTemplateDataDetails_keyName' - The name of the key pair that allows users to connect to the instance.
--
-- 'licenseSet', 'awsEc2LaunchTemplateDataDetails_licenseSet' - Specifies a license configuration for an instance.
--
-- 'maintenanceOptions', 'awsEc2LaunchTemplateDataDetails_maintenanceOptions' - The maintenance options of your instance.
--
-- 'metadataOptions', 'awsEc2LaunchTemplateDataDetails_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 EC2 User Guide/.
--
-- 'monitoring', 'awsEc2LaunchTemplateDataDetails_monitoring' - The monitoring for the instance.
--
-- 'networkInterfaceSet', 'awsEc2LaunchTemplateDataDetails_networkInterfaceSet' - Specifies the parameters for a network interface that is attached to the
-- instance.
--
-- 'placement', 'awsEc2LaunchTemplateDataDetails_placement' - Specifies the placement of an instance.
--
-- 'privateDnsNameOptions', 'awsEc2LaunchTemplateDataDetails_privateDnsNameOptions' - The options for the instance hostname.
--
-- 'ramDiskId', 'awsEc2LaunchTemplateDataDetails_ramDiskId' - The ID of the RAM disk.
--
-- 'securityGroupIdSet', 'awsEc2LaunchTemplateDataDetails_securityGroupIdSet' - One or more security group IDs.
--
-- 'securityGroupSet', 'awsEc2LaunchTemplateDataDetails_securityGroupSet' - 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.
--
-- 'userData', 'awsEc2LaunchTemplateDataDetails_userData' - The user data to make available to the instance.
newAwsEc2LaunchTemplateDataDetails ::
AwsEc2LaunchTemplateDataDetails
newAwsEc2LaunchTemplateDataDetails =
AwsEc2LaunchTemplateDataDetails'
{ blockDeviceMappingSet =
Prelude.Nothing,
capacityReservationSpecification =
Prelude.Nothing,
cpuOptions = Prelude.Nothing,
creditSpecification = Prelude.Nothing,
disableApiStop = Prelude.Nothing,
disableApiTermination = Prelude.Nothing,
ebsOptimized = Prelude.Nothing,
elasticGpuSpecificationSet =
Prelude.Nothing,
elasticInferenceAcceleratorSet =
Prelude.Nothing,
enclaveOptions = Prelude.Nothing,
hibernationOptions = Prelude.Nothing,
iamInstanceProfile = Prelude.Nothing,
imageId = Prelude.Nothing,
instanceInitiatedShutdownBehavior =
Prelude.Nothing,
instanceMarketOptions = Prelude.Nothing,
instanceRequirements = Prelude.Nothing,
instanceType = Prelude.Nothing,
kernelId = Prelude.Nothing,
keyName = Prelude.Nothing,
licenseSet = Prelude.Nothing,
maintenanceOptions = Prelude.Nothing,
metadataOptions = Prelude.Nothing,
monitoring = Prelude.Nothing,
networkInterfaceSet = Prelude.Nothing,
placement = Prelude.Nothing,
privateDnsNameOptions = Prelude.Nothing,
ramDiskId = Prelude.Nothing,
securityGroupIdSet = Prelude.Nothing,
securityGroupSet = Prelude.Nothing,
userData = Prelude.Nothing
}
-- | Information about a block device mapping for an Amazon EC2 launch
-- template.
awsEc2LaunchTemplateDataDetails_blockDeviceMappingSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [AwsEc2LaunchTemplateDataBlockDeviceMappingSetDetails])
awsEc2LaunchTemplateDataDetails_blockDeviceMappingSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {blockDeviceMappingSet} -> blockDeviceMappingSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {blockDeviceMappingSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping Lens.coerced
-- | Specifies an instance\'s Capacity Reservation targeting option. You can
-- specify only one option at a time.
awsEc2LaunchTemplateDataDetails_capacityReservationSpecification :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataCapacityReservationSpecificationDetails)
awsEc2LaunchTemplateDataDetails_capacityReservationSpecification = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {capacityReservationSpecification} -> capacityReservationSpecification) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {capacityReservationSpecification = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Specifies the CPU options for an instance. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html Optimize CPU options>
-- in the /Amazon Elastic Compute Cloud User Guide/.
awsEc2LaunchTemplateDataDetails_cpuOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataCpuOptionsDetails)
awsEc2LaunchTemplateDataDetails_cpuOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {cpuOptions} -> cpuOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {cpuOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Specifies the credit option for CPU usage of a T2, T3, or T3a instance.
awsEc2LaunchTemplateDataDetails_creditSpecification :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataCreditSpecificationDetails)
awsEc2LaunchTemplateDataDetails_creditSpecification = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {creditSpecification} -> creditSpecification) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {creditSpecification = a} :: AwsEc2LaunchTemplateDataDetails)
-- | 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 Enable stop protection>
-- in the /Amazon EC2 User Guide/.
awsEc2LaunchTemplateDataDetails_disableApiStop :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Bool)
awsEc2LaunchTemplateDataDetails_disableApiStop = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {disableApiStop} -> disableApiStop) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {disableApiStop = a} :: AwsEc2LaunchTemplateDataDetails)
-- | If you set this parameter to @true@, you can\'t terminate the instance
-- using the Amazon EC2 console, CLI, or API. If set to @true@, you can.
awsEc2LaunchTemplateDataDetails_disableApiTermination :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Bool)
awsEc2LaunchTemplateDataDetails_disableApiTermination = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {disableApiTermination} -> disableApiTermination) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {disableApiTermination = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Indicates whether the instance is optimized for Amazon EBS I\/O.
awsEc2LaunchTemplateDataDetails_ebsOptimized :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Bool)
awsEc2LaunchTemplateDataDetails_ebsOptimized = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {ebsOptimized} -> ebsOptimized) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {ebsOptimized = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Provides details about Elastic Graphics accelerators to associate with
-- the instance.
awsEc2LaunchTemplateDataDetails_elasticGpuSpecificationSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [AwsEc2LaunchTemplateDataElasticGpuSpecificationSetDetails])
awsEc2LaunchTemplateDataDetails_elasticGpuSpecificationSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {elasticGpuSpecificationSet} -> elasticGpuSpecificationSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {elasticGpuSpecificationSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping Lens.coerced
-- | The Amazon Elastic Inference accelerator for the instance.
awsEc2LaunchTemplateDataDetails_elasticInferenceAcceleratorSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [AwsEc2LaunchTemplateDataElasticInferenceAcceleratorSetDetails])
awsEc2LaunchTemplateDataDetails_elasticInferenceAcceleratorSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {elasticInferenceAcceleratorSet} -> elasticInferenceAcceleratorSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {elasticInferenceAcceleratorSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping Lens.coerced
-- | Indicates whether the Amazon EC2 instance is enabled for Amazon Web
-- Services Nitro Enclaves.
awsEc2LaunchTemplateDataDetails_enclaveOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataEnclaveOptionsDetails)
awsEc2LaunchTemplateDataDetails_enclaveOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {enclaveOptions} -> enclaveOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {enclaveOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Specifies whether your Amazon EC2 instance is configured for
-- hibernation.
awsEc2LaunchTemplateDataDetails_hibernationOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataHibernationOptionsDetails)
awsEc2LaunchTemplateDataDetails_hibernationOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {hibernationOptions} -> hibernationOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {hibernationOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The name or Amazon Resource Name (ARN) of an IAM instance profile.
awsEc2LaunchTemplateDataDetails_iamInstanceProfile :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataIamInstanceProfileDetails)
awsEc2LaunchTemplateDataDetails_iamInstanceProfile = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {iamInstanceProfile} -> iamInstanceProfile) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {iamInstanceProfile = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The ID of the Amazon Machine Image (AMI).
awsEc2LaunchTemplateDataDetails_imageId :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_imageId = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {imageId} -> imageId) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {imageId = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Provides the options for specifying the instance initiated shutdown
-- behavior.
awsEc2LaunchTemplateDataDetails_instanceInitiatedShutdownBehavior :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_instanceInitiatedShutdownBehavior = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {instanceInitiatedShutdownBehavior} -> instanceInitiatedShutdownBehavior) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {instanceInitiatedShutdownBehavior = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Specifies the market (purchasing) option for an instance.
awsEc2LaunchTemplateDataDetails_instanceMarketOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceMarketOptionsDetails)
awsEc2LaunchTemplateDataDetails_instanceMarketOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {instanceMarketOptions} -> instanceMarketOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {instanceMarketOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | 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@.
awsEc2LaunchTemplateDataDetails_instanceRequirements :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsDetails)
awsEc2LaunchTemplateDataDetails_instanceRequirements = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {instanceRequirements} -> instanceRequirements) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {instanceRequirements = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The instance type. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance types>
-- in the /Amazon EC2 User Guide/. If you specify @InstanceType@, you
-- can\'t specify @InstanceRequirements@.
awsEc2LaunchTemplateDataDetails_instanceType :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_instanceType = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {instanceType} -> instanceType) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {instanceType = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The ID of the kernel.
awsEc2LaunchTemplateDataDetails_kernelId :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_kernelId = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {kernelId} -> kernelId) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {kernelId = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The name of the key pair that allows users to connect to the instance.
awsEc2LaunchTemplateDataDetails_keyName :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_keyName = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {keyName} -> keyName) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {keyName = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Specifies a license configuration for an instance.
awsEc2LaunchTemplateDataDetails_licenseSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [AwsEc2LaunchTemplateDataLicenseSetDetails])
awsEc2LaunchTemplateDataDetails_licenseSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {licenseSet} -> licenseSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {licenseSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping Lens.coerced
-- | The maintenance options of your instance.
awsEc2LaunchTemplateDataDetails_maintenanceOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataMaintenanceOptionsDetails)
awsEc2LaunchTemplateDataDetails_maintenanceOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {maintenanceOptions} -> maintenanceOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {maintenanceOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | 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 EC2 User Guide/.
awsEc2LaunchTemplateDataDetails_metadataOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataMetadataOptionsDetails)
awsEc2LaunchTemplateDataDetails_metadataOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {metadataOptions} -> metadataOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {metadataOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The monitoring for the instance.
awsEc2LaunchTemplateDataDetails_monitoring :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataMonitoringDetails)
awsEc2LaunchTemplateDataDetails_monitoring = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {monitoring} -> monitoring) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {monitoring = a} :: AwsEc2LaunchTemplateDataDetails)
-- | Specifies the parameters for a network interface that is attached to the
-- instance.
awsEc2LaunchTemplateDataDetails_networkInterfaceSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [AwsEc2LaunchTemplateDataNetworkInterfaceSetDetails])
awsEc2LaunchTemplateDataDetails_networkInterfaceSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {networkInterfaceSet} -> networkInterfaceSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {networkInterfaceSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping Lens.coerced
-- | Specifies the placement of an instance.
awsEc2LaunchTemplateDataDetails_placement :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataPlacementDetails)
awsEc2LaunchTemplateDataDetails_placement = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {placement} -> placement) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {placement = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The options for the instance hostname.
awsEc2LaunchTemplateDataDetails_privateDnsNameOptions :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe AwsEc2LaunchTemplateDataPrivateDnsNameOptionsDetails)
awsEc2LaunchTemplateDataDetails_privateDnsNameOptions = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {privateDnsNameOptions} -> privateDnsNameOptions) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {privateDnsNameOptions = a} :: AwsEc2LaunchTemplateDataDetails)
-- | The ID of the RAM disk.
awsEc2LaunchTemplateDataDetails_ramDiskId :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_ramDiskId = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {ramDiskId} -> ramDiskId) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {ramDiskId = a} :: AwsEc2LaunchTemplateDataDetails)
-- | One or more security group IDs.
awsEc2LaunchTemplateDataDetails_securityGroupIdSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [Prelude.Text])
awsEc2LaunchTemplateDataDetails_securityGroupIdSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {securityGroupIdSet} -> securityGroupIdSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {securityGroupIdSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping 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.
awsEc2LaunchTemplateDataDetails_securityGroupSet :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe [Prelude.Text])
awsEc2LaunchTemplateDataDetails_securityGroupSet = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {securityGroupSet} -> securityGroupSet) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {securityGroupSet = a} :: AwsEc2LaunchTemplateDataDetails) Prelude.. Lens.mapping Lens.coerced
-- | The user data to make available to the instance.
awsEc2LaunchTemplateDataDetails_userData :: Lens.Lens' AwsEc2LaunchTemplateDataDetails (Prelude.Maybe Prelude.Text)
awsEc2LaunchTemplateDataDetails_userData = Lens.lens (\AwsEc2LaunchTemplateDataDetails' {userData} -> userData) (\s@AwsEc2LaunchTemplateDataDetails' {} a -> s {userData = a} :: AwsEc2LaunchTemplateDataDetails)
instance
Data.FromJSON
AwsEc2LaunchTemplateDataDetails
where
parseJSON =
Data.withObject
"AwsEc2LaunchTemplateDataDetails"
( \x ->
AwsEc2LaunchTemplateDataDetails'
Prelude.<$> ( x
Data..:? "BlockDeviceMappingSet"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "CapacityReservationSpecification")
Prelude.<*> (x Data..:? "CpuOptions")
Prelude.<*> (x Data..:? "CreditSpecification")
Prelude.<*> (x Data..:? "DisableApiStop")
Prelude.<*> (x Data..:? "DisableApiTermination")
Prelude.<*> (x Data..:? "EbsOptimized")
Prelude.<*> ( x
Data..:? "ElasticGpuSpecificationSet"
Data..!= Prelude.mempty
)
Prelude.<*> ( x
Data..:? "ElasticInferenceAcceleratorSet"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "EnclaveOptions")
Prelude.<*> (x Data..:? "HibernationOptions")
Prelude.<*> (x Data..:? "IamInstanceProfile")
Prelude.<*> (x Data..:? "ImageId")
Prelude.<*> (x Data..:? "InstanceInitiatedShutdownBehavior")
Prelude.<*> (x Data..:? "InstanceMarketOptions")
Prelude.<*> (x Data..:? "InstanceRequirements")
Prelude.<*> (x Data..:? "InstanceType")
Prelude.<*> (x Data..:? "KernelId")
Prelude.<*> (x Data..:? "KeyName")
Prelude.<*> (x Data..:? "LicenseSet" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "MaintenanceOptions")
Prelude.<*> (x Data..:? "MetadataOptions")
Prelude.<*> (x Data..:? "Monitoring")
Prelude.<*> ( x
Data..:? "NetworkInterfaceSet"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "Placement")
Prelude.<*> (x Data..:? "PrivateDnsNameOptions")
Prelude.<*> (x Data..:? "RamDiskId")
Prelude.<*> ( x
Data..:? "SecurityGroupIdSet"
Data..!= Prelude.mempty
)
Prelude.<*> ( x
Data..:? "SecurityGroupSet"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "UserData")
)
instance
Prelude.Hashable
AwsEc2LaunchTemplateDataDetails
where
hashWithSalt
_salt
AwsEc2LaunchTemplateDataDetails' {..} =
_salt
`Prelude.hashWithSalt` blockDeviceMappingSet
`Prelude.hashWithSalt` capacityReservationSpecification
`Prelude.hashWithSalt` cpuOptions
`Prelude.hashWithSalt` creditSpecification
`Prelude.hashWithSalt` disableApiStop
`Prelude.hashWithSalt` disableApiTermination
`Prelude.hashWithSalt` ebsOptimized
`Prelude.hashWithSalt` elasticGpuSpecificationSet
`Prelude.hashWithSalt` elasticInferenceAcceleratorSet
`Prelude.hashWithSalt` enclaveOptions
`Prelude.hashWithSalt` hibernationOptions
`Prelude.hashWithSalt` iamInstanceProfile
`Prelude.hashWithSalt` imageId
`Prelude.hashWithSalt` instanceInitiatedShutdownBehavior
`Prelude.hashWithSalt` instanceMarketOptions
`Prelude.hashWithSalt` instanceRequirements
`Prelude.hashWithSalt` instanceType
`Prelude.hashWithSalt` kernelId
`Prelude.hashWithSalt` keyName
`Prelude.hashWithSalt` licenseSet
`Prelude.hashWithSalt` maintenanceOptions
`Prelude.hashWithSalt` metadataOptions
`Prelude.hashWithSalt` monitoring
`Prelude.hashWithSalt` networkInterfaceSet
`Prelude.hashWithSalt` placement
`Prelude.hashWithSalt` privateDnsNameOptions
`Prelude.hashWithSalt` ramDiskId
`Prelude.hashWithSalt` securityGroupIdSet
`Prelude.hashWithSalt` securityGroupSet
`Prelude.hashWithSalt` userData
instance
Prelude.NFData
AwsEc2LaunchTemplateDataDetails
where
rnf AwsEc2LaunchTemplateDataDetails' {..} =
Prelude.rnf blockDeviceMappingSet
`Prelude.seq` Prelude.rnf capacityReservationSpecification
`Prelude.seq` Prelude.rnf cpuOptions
`Prelude.seq` Prelude.rnf creditSpecification
`Prelude.seq` Prelude.rnf disableApiStop
`Prelude.seq` Prelude.rnf disableApiTermination
`Prelude.seq` Prelude.rnf ebsOptimized
`Prelude.seq` Prelude.rnf elasticGpuSpecificationSet
`Prelude.seq` Prelude.rnf elasticInferenceAcceleratorSet
`Prelude.seq` Prelude.rnf enclaveOptions
`Prelude.seq` Prelude.rnf hibernationOptions
`Prelude.seq` Prelude.rnf iamInstanceProfile
`Prelude.seq` Prelude.rnf imageId
`Prelude.seq` Prelude.rnf
instanceInitiatedShutdownBehavior
`Prelude.seq` Prelude.rnf instanceMarketOptions
`Prelude.seq` Prelude.rnf instanceRequirements
`Prelude.seq` Prelude.rnf instanceType
`Prelude.seq` Prelude.rnf kernelId
`Prelude.seq` Prelude.rnf keyName
`Prelude.seq` Prelude.rnf licenseSet
`Prelude.seq` Prelude.rnf
maintenanceOptions
`Prelude.seq` Prelude.rnf
metadataOptions
`Prelude.seq` Prelude.rnf monitoring
`Prelude.seq` Prelude.rnf
networkInterfaceSet
`Prelude.seq` Prelude.rnf
placement
`Prelude.seq` Prelude.rnf
privateDnsNameOptions
`Prelude.seq` Prelude.rnf
ramDiskId
`Prelude.seq` Prelude.rnf
securityGroupIdSet
`Prelude.seq` Prelude.rnf
securityGroupSet
`Prelude.seq` Prelude.rnf
userData
instance Data.ToJSON AwsEc2LaunchTemplateDataDetails where
toJSON AwsEc2LaunchTemplateDataDetails' {..} =
Data.object
( Prelude.catMaybes
[ ("BlockDeviceMappingSet" Data..=)
Prelude.<$> blockDeviceMappingSet,
("CapacityReservationSpecification" Data..=)
Prelude.<$> capacityReservationSpecification,
("CpuOptions" Data..=) Prelude.<$> cpuOptions,
("CreditSpecification" Data..=)
Prelude.<$> creditSpecification,
("DisableApiStop" Data..=)
Prelude.<$> disableApiStop,
("DisableApiTermination" Data..=)
Prelude.<$> disableApiTermination,
("EbsOptimized" Data..=) Prelude.<$> ebsOptimized,
("ElasticGpuSpecificationSet" Data..=)
Prelude.<$> elasticGpuSpecificationSet,
("ElasticInferenceAcceleratorSet" Data..=)
Prelude.<$> elasticInferenceAcceleratorSet,
("EnclaveOptions" Data..=)
Prelude.<$> enclaveOptions,
("HibernationOptions" Data..=)
Prelude.<$> hibernationOptions,
("IamInstanceProfile" Data..=)
Prelude.<$> iamInstanceProfile,
("ImageId" Data..=) Prelude.<$> imageId,
("InstanceInitiatedShutdownBehavior" Data..=)
Prelude.<$> instanceInitiatedShutdownBehavior,
("InstanceMarketOptions" Data..=)
Prelude.<$> instanceMarketOptions,
("InstanceRequirements" Data..=)
Prelude.<$> instanceRequirements,
("InstanceType" Data..=) Prelude.<$> instanceType,
("KernelId" Data..=) Prelude.<$> kernelId,
("KeyName" Data..=) Prelude.<$> keyName,
("LicenseSet" Data..=) Prelude.<$> licenseSet,
("MaintenanceOptions" Data..=)
Prelude.<$> maintenanceOptions,
("MetadataOptions" Data..=)
Prelude.<$> metadataOptions,
("Monitoring" Data..=) Prelude.<$> monitoring,
("NetworkInterfaceSet" Data..=)
Prelude.<$> networkInterfaceSet,
("Placement" Data..=) Prelude.<$> placement,
("PrivateDnsNameOptions" Data..=)
Prelude.<$> privateDnsNameOptions,
("RamDiskId" Data..=) Prelude.<$> ramDiskId,
("SecurityGroupIdSet" Data..=)
Prelude.<$> securityGroupIdSet,
("SecurityGroupSet" Data..=)
Prelude.<$> securityGroupSet,
("UserData" Data..=) Prelude.<$> userData
]
)