{-# 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 -- -- 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 -- -- 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 -- -- 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 -- -- 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 or 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 -- -- 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 -- -- 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 -- -- 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 -- -- 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 -- -- 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 -- -- 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 -- -- 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 -- -- 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 ] )