{-# 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.AwsEc2LaunchTemplateDataInstanceRequirementsDetails -- 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.AwsEc2LaunchTemplateDataInstanceRequirementsDetails 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.AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails import Amazonka.SecurityHub.Types.AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails -- | The attributes for the Amazon EC2 instance types. -- -- /See:/ 'newAwsEc2LaunchTemplateDataInstanceRequirementsDetails' smart constructor. data AwsEc2LaunchTemplateDataInstanceRequirementsDetails = AwsEc2LaunchTemplateDataInstanceRequirementsDetails' { -- | The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon -- Web Services Inferentia chips) on an instance. acceleratorCount :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails, -- | Indicates whether instance types must have accelerators by specific -- manufacturers. acceleratorManufacturers :: Prelude.Maybe [Prelude.Text], -- | The accelerators that must be on the instance type. acceleratorNames :: Prelude.Maybe [Prelude.Text], -- | The minimum and maximum amount of total accelerator memory, in MiB. acceleratorTotalMemoryMiB :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails, -- | The accelerator types that must be on the instance type. acceleratorTypes :: Prelude.Maybe [Prelude.Text], -- | Indicates whether bare metal instance types must be included, excluded, -- or required. bareMetal :: Prelude.Maybe Prelude.Text, -- | The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For -- more information, see -- -- in the /Amazon EC2 User Guide/. baselineEbsBandwidthMbps :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails, -- | Indicates whether burstable performance T instance types are included, -- excluded, or required. For more information, -- -- in the /Amazon EC2 User Guide/. burstablePerformance :: Prelude.Maybe Prelude.Text, -- | The CPU manufacturers to include. cpuManufacturers :: Prelude.Maybe [Prelude.Text], -- | The instance types to exclude. excludedInstanceTypes :: Prelude.Maybe [Prelude.Text], -- | Indicates whether current or previous generation instance types are -- included. instanceGenerations :: Prelude.Maybe [Prelude.Text], -- | Indicates whether instance types with instance store volumes are -- included, excluded, or required. For more information, see -- -- in the /Amazon EC2 User Guide/. localStorage :: Prelude.Maybe Prelude.Text, -- | The type of local storage that is required. localStorageTypes :: Prelude.Maybe [Prelude.Text], -- | The minimum and maximum amount of memory per vCPU, in GiB. memoryGiBPerVCpu :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails, -- | The minimum and maximum amount of memory, in MiB. memoryMiB :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails, -- | The minimum and maximum number of network interfaces. networkInterfaceCount :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails, -- | The price protection threshold for On-Demand Instances. This is the -- maximum you’ll pay for an On-Demand Instance, expressed as a percentage -- above the least expensive current generation M, C, or R instance type -- with your specified attributes. When Amazon EC2 selects instance types -- with your attributes, it excludes instance types priced above your -- threshold. -- -- The parameter accepts an integer, which Amazon EC2 interprets as a -- percentage. -- -- A high value, such as @999999@, turns off price protection. onDemandMaxPricePercentageOverLowestPrice :: Prelude.Maybe Prelude.Int, -- | Indicates whether instance types must support hibernation for On-Demand -- Instances. requireHibernateSupport :: Prelude.Maybe Prelude.Bool, -- | The price protection threshold for Spot Instances. This is the maximum -- you’ll pay for a Spot Instance, expressed as a percentage above the -- least expensive current generation M, C, or R instance type with your -- specified attributes. When Amazon EC2 selects instance types with your -- attributes, it excludes instance types priced above your threshold. -- -- The parameter accepts an integer, which Amazon EC2 interprets as a -- percentage. -- -- A high value, such as @999999@, turns off price protection. spotMaxPricePercentageOverLowestPrice :: Prelude.Maybe Prelude.Int, -- | The minimum and maximum amount of total local storage, in GB. totalLocalStorageGB :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails, -- | The minimum and maximum number of vCPUs. vCpuCount :: Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'AwsEc2LaunchTemplateDataInstanceRequirementsDetails' 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: -- -- 'acceleratorCount', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorCount' - The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon -- Web Services Inferentia chips) on an instance. -- -- 'acceleratorManufacturers', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorManufacturers' - Indicates whether instance types must have accelerators by specific -- manufacturers. -- -- 'acceleratorNames', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorNames' - The accelerators that must be on the instance type. -- -- 'acceleratorTotalMemoryMiB', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorTotalMemoryMiB' - The minimum and maximum amount of total accelerator memory, in MiB. -- -- 'acceleratorTypes', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorTypes' - The accelerator types that must be on the instance type. -- -- 'bareMetal', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_bareMetal' - Indicates whether bare metal instance types must be included, excluded, -- or required. -- -- 'baselineEbsBandwidthMbps', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_baselineEbsBandwidthMbps' - The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For -- more information, see -- -- in the /Amazon EC2 User Guide/. -- -- 'burstablePerformance', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_burstablePerformance' - Indicates whether burstable performance T instance types are included, -- excluded, or required. For more information, -- -- in the /Amazon EC2 User Guide/. -- -- 'cpuManufacturers', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_cpuManufacturers' - The CPU manufacturers to include. -- -- 'excludedInstanceTypes', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_excludedInstanceTypes' - The instance types to exclude. -- -- 'instanceGenerations', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_instanceGenerations' - Indicates whether current or previous generation instance types are -- included. -- -- 'localStorage', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_localStorage' - Indicates whether instance types with instance store volumes are -- included, excluded, or required. For more information, see -- -- in the /Amazon EC2 User Guide/. -- -- 'localStorageTypes', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_localStorageTypes' - The type of local storage that is required. -- -- 'memoryGiBPerVCpu', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_memoryGiBPerVCpu' - The minimum and maximum amount of memory per vCPU, in GiB. -- -- 'memoryMiB', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_memoryMiB' - The minimum and maximum amount of memory, in MiB. -- -- 'networkInterfaceCount', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_networkInterfaceCount' - The minimum and maximum number of network interfaces. -- -- 'onDemandMaxPricePercentageOverLowestPrice', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_onDemandMaxPricePercentageOverLowestPrice' - The price protection threshold for On-Demand Instances. This is the -- maximum you’ll pay for an On-Demand Instance, expressed as a percentage -- above the least expensive current generation M, C, or R instance type -- with your specified attributes. When Amazon EC2 selects instance types -- with your attributes, it excludes instance types priced above your -- threshold. -- -- The parameter accepts an integer, which Amazon EC2 interprets as a -- percentage. -- -- A high value, such as @999999@, turns off price protection. -- -- 'requireHibernateSupport', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_requireHibernateSupport' - Indicates whether instance types must support hibernation for On-Demand -- Instances. -- -- 'spotMaxPricePercentageOverLowestPrice', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_spotMaxPricePercentageOverLowestPrice' - The price protection threshold for Spot Instances. This is the maximum -- you’ll pay for a Spot Instance, expressed as a percentage above the -- least expensive current generation M, C, or R instance type with your -- specified attributes. When Amazon EC2 selects instance types with your -- attributes, it excludes instance types priced above your threshold. -- -- The parameter accepts an integer, which Amazon EC2 interprets as a -- percentage. -- -- A high value, such as @999999@, turns off price protection. -- -- 'totalLocalStorageGB', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_totalLocalStorageGB' - The minimum and maximum amount of total local storage, in GB. -- -- 'vCpuCount', 'awsEc2LaunchTemplateDataInstanceRequirementsDetails_vCpuCount' - The minimum and maximum number of vCPUs. newAwsEc2LaunchTemplateDataInstanceRequirementsDetails :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails newAwsEc2LaunchTemplateDataInstanceRequirementsDetails = AwsEc2LaunchTemplateDataInstanceRequirementsDetails' { acceleratorCount = Prelude.Nothing, acceleratorManufacturers = Prelude.Nothing, acceleratorNames = Prelude.Nothing, acceleratorTotalMemoryMiB = Prelude.Nothing, acceleratorTypes = Prelude.Nothing, bareMetal = Prelude.Nothing, baselineEbsBandwidthMbps = Prelude.Nothing, burstablePerformance = Prelude.Nothing, cpuManufacturers = Prelude.Nothing, excludedInstanceTypes = Prelude.Nothing, instanceGenerations = Prelude.Nothing, localStorage = Prelude.Nothing, localStorageTypes = Prelude.Nothing, memoryGiBPerVCpu = Prelude.Nothing, memoryMiB = Prelude.Nothing, networkInterfaceCount = Prelude.Nothing, onDemandMaxPricePercentageOverLowestPrice = Prelude.Nothing, requireHibernateSupport = Prelude.Nothing, spotMaxPricePercentageOverLowestPrice = Prelude.Nothing, totalLocalStorageGB = Prelude.Nothing, vCpuCount = Prelude.Nothing } -- | The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon -- Web Services Inferentia chips) on an instance. awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorCount :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorCountDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorCount = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {acceleratorCount} -> acceleratorCount) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {acceleratorCount = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | Indicates whether instance types must have accelerators by specific -- manufacturers. awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorManufacturers :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorManufacturers = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {acceleratorManufacturers} -> acceleratorManufacturers) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {acceleratorManufacturers = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | The accelerators that must be on the instance type. awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorNames :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorNames = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {acceleratorNames} -> acceleratorNames) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {acceleratorNames = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | The minimum and maximum amount of total accelerator memory, in MiB. awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorTotalMemoryMiB :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsAcceleratorTotalMemoryMiBDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorTotalMemoryMiB = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {acceleratorTotalMemoryMiB} -> acceleratorTotalMemoryMiB) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {acceleratorTotalMemoryMiB = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The accelerator types that must be on the instance type. awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorTypes :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_acceleratorTypes = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {acceleratorTypes} -> acceleratorTypes) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {acceleratorTypes = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | Indicates whether bare metal instance types must be included, excluded, -- or required. awsEc2LaunchTemplateDataInstanceRequirementsDetails_bareMetal :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe Prelude.Text) awsEc2LaunchTemplateDataInstanceRequirementsDetails_bareMetal = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {bareMetal} -> bareMetal) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {bareMetal = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For -- more information, see -- -- in the /Amazon EC2 User Guide/. awsEc2LaunchTemplateDataInstanceRequirementsDetails_baselineEbsBandwidthMbps :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsBaselineEbsBandwidthMbpsDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_baselineEbsBandwidthMbps = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {baselineEbsBandwidthMbps} -> baselineEbsBandwidthMbps) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {baselineEbsBandwidthMbps = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | Indicates whether burstable performance T instance types are included, -- excluded, or required. For more information, -- -- in the /Amazon EC2 User Guide/. awsEc2LaunchTemplateDataInstanceRequirementsDetails_burstablePerformance :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe Prelude.Text) awsEc2LaunchTemplateDataInstanceRequirementsDetails_burstablePerformance = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {burstablePerformance} -> burstablePerformance) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {burstablePerformance = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The CPU manufacturers to include. awsEc2LaunchTemplateDataInstanceRequirementsDetails_cpuManufacturers :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_cpuManufacturers = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {cpuManufacturers} -> cpuManufacturers) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {cpuManufacturers = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | The instance types to exclude. awsEc2LaunchTemplateDataInstanceRequirementsDetails_excludedInstanceTypes :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_excludedInstanceTypes = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {excludedInstanceTypes} -> excludedInstanceTypes) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {excludedInstanceTypes = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | Indicates whether current or previous generation instance types are -- included. awsEc2LaunchTemplateDataInstanceRequirementsDetails_instanceGenerations :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_instanceGenerations = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {instanceGenerations} -> instanceGenerations) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {instanceGenerations = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | Indicates whether instance types with instance store volumes are -- included, excluded, or required. For more information, see -- -- in the /Amazon EC2 User Guide/. awsEc2LaunchTemplateDataInstanceRequirementsDetails_localStorage :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe Prelude.Text) awsEc2LaunchTemplateDataInstanceRequirementsDetails_localStorage = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {localStorage} -> localStorage) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {localStorage = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The type of local storage that is required. awsEc2LaunchTemplateDataInstanceRequirementsDetails_localStorageTypes :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe [Prelude.Text]) awsEc2LaunchTemplateDataInstanceRequirementsDetails_localStorageTypes = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {localStorageTypes} -> localStorageTypes) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {localStorageTypes = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) Prelude.. Lens.mapping Lens.coerced -- | The minimum and maximum amount of memory per vCPU, in GiB. awsEc2LaunchTemplateDataInstanceRequirementsDetails_memoryGiBPerVCpu :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsMemoryGiBPerVCpuDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_memoryGiBPerVCpu = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {memoryGiBPerVCpu} -> memoryGiBPerVCpu) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {memoryGiBPerVCpu = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The minimum and maximum amount of memory, in MiB. awsEc2LaunchTemplateDataInstanceRequirementsDetails_memoryMiB :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsMemoryMiBDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_memoryMiB = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {memoryMiB} -> memoryMiB) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {memoryMiB = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The minimum and maximum number of network interfaces. awsEc2LaunchTemplateDataInstanceRequirementsDetails_networkInterfaceCount :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsNetworkInterfaceCountDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_networkInterfaceCount = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {networkInterfaceCount} -> networkInterfaceCount) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {networkInterfaceCount = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The price protection threshold for On-Demand Instances. This is the -- maximum you’ll pay for an On-Demand Instance, expressed as a percentage -- above the least expensive current generation M, C, or R instance type -- with your specified attributes. When Amazon EC2 selects instance types -- with your attributes, it excludes instance types priced above your -- threshold. -- -- The parameter accepts an integer, which Amazon EC2 interprets as a -- percentage. -- -- A high value, such as @999999@, turns off price protection. awsEc2LaunchTemplateDataInstanceRequirementsDetails_onDemandMaxPricePercentageOverLowestPrice :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe Prelude.Int) awsEc2LaunchTemplateDataInstanceRequirementsDetails_onDemandMaxPricePercentageOverLowestPrice = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {onDemandMaxPricePercentageOverLowestPrice} -> onDemandMaxPricePercentageOverLowestPrice) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {onDemandMaxPricePercentageOverLowestPrice = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | Indicates whether instance types must support hibernation for On-Demand -- Instances. awsEc2LaunchTemplateDataInstanceRequirementsDetails_requireHibernateSupport :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe Prelude.Bool) awsEc2LaunchTemplateDataInstanceRequirementsDetails_requireHibernateSupport = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {requireHibernateSupport} -> requireHibernateSupport) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {requireHibernateSupport = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The price protection threshold for Spot Instances. This is the maximum -- you’ll pay for a Spot Instance, expressed as a percentage above the -- least expensive current generation M, C, or R instance type with your -- specified attributes. When Amazon EC2 selects instance types with your -- attributes, it excludes instance types priced above your threshold. -- -- The parameter accepts an integer, which Amazon EC2 interprets as a -- percentage. -- -- A high value, such as @999999@, turns off price protection. awsEc2LaunchTemplateDataInstanceRequirementsDetails_spotMaxPricePercentageOverLowestPrice :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe Prelude.Int) awsEc2LaunchTemplateDataInstanceRequirementsDetails_spotMaxPricePercentageOverLowestPrice = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {spotMaxPricePercentageOverLowestPrice} -> spotMaxPricePercentageOverLowestPrice) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {spotMaxPricePercentageOverLowestPrice = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The minimum and maximum amount of total local storage, in GB. awsEc2LaunchTemplateDataInstanceRequirementsDetails_totalLocalStorageGB :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsTotalLocalStorageGBDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_totalLocalStorageGB = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {totalLocalStorageGB} -> totalLocalStorageGB) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {totalLocalStorageGB = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) -- | The minimum and maximum number of vCPUs. awsEc2LaunchTemplateDataInstanceRequirementsDetails_vCpuCount :: Lens.Lens' AwsEc2LaunchTemplateDataInstanceRequirementsDetails (Prelude.Maybe AwsEc2LaunchTemplateDataInstanceRequirementsVCpuCountDetails) awsEc2LaunchTemplateDataInstanceRequirementsDetails_vCpuCount = Lens.lens (\AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {vCpuCount} -> vCpuCount) (\s@AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {} a -> s {vCpuCount = a} :: AwsEc2LaunchTemplateDataInstanceRequirementsDetails) instance Data.FromJSON AwsEc2LaunchTemplateDataInstanceRequirementsDetails where parseJSON = Data.withObject "AwsEc2LaunchTemplateDataInstanceRequirementsDetails" ( \x -> AwsEc2LaunchTemplateDataInstanceRequirementsDetails' Prelude.<$> (x Data..:? "AcceleratorCount") Prelude.<*> ( x Data..:? "AcceleratorManufacturers" Data..!= Prelude.mempty ) Prelude.<*> ( x Data..:? "AcceleratorNames" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "AcceleratorTotalMemoryMiB") Prelude.<*> ( x Data..:? "AcceleratorTypes" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "BareMetal") Prelude.<*> (x Data..:? "BaselineEbsBandwidthMbps") Prelude.<*> (x Data..:? "BurstablePerformance") Prelude.<*> ( x Data..:? "CpuManufacturers" Data..!= Prelude.mempty ) Prelude.<*> ( x Data..:? "ExcludedInstanceTypes" Data..!= Prelude.mempty ) Prelude.<*> ( x Data..:? "InstanceGenerations" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "LocalStorage") Prelude.<*> ( x Data..:? "LocalStorageTypes" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "MemoryGiBPerVCpu") Prelude.<*> (x Data..:? "MemoryMiB") Prelude.<*> (x Data..:? "NetworkInterfaceCount") Prelude.<*> ( x Data..:? "OnDemandMaxPricePercentageOverLowestPrice" ) Prelude.<*> (x Data..:? "RequireHibernateSupport") Prelude.<*> (x Data..:? "SpotMaxPricePercentageOverLowestPrice") Prelude.<*> (x Data..:? "TotalLocalStorageGB") Prelude.<*> (x Data..:? "VCpuCount") ) instance Prelude.Hashable AwsEc2LaunchTemplateDataInstanceRequirementsDetails where hashWithSalt _salt AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {..} = _salt `Prelude.hashWithSalt` acceleratorCount `Prelude.hashWithSalt` acceleratorManufacturers `Prelude.hashWithSalt` acceleratorNames `Prelude.hashWithSalt` acceleratorTotalMemoryMiB `Prelude.hashWithSalt` acceleratorTypes `Prelude.hashWithSalt` bareMetal `Prelude.hashWithSalt` baselineEbsBandwidthMbps `Prelude.hashWithSalt` burstablePerformance `Prelude.hashWithSalt` cpuManufacturers `Prelude.hashWithSalt` excludedInstanceTypes `Prelude.hashWithSalt` instanceGenerations `Prelude.hashWithSalt` localStorage `Prelude.hashWithSalt` localStorageTypes `Prelude.hashWithSalt` memoryGiBPerVCpu `Prelude.hashWithSalt` memoryMiB `Prelude.hashWithSalt` networkInterfaceCount `Prelude.hashWithSalt` onDemandMaxPricePercentageOverLowestPrice `Prelude.hashWithSalt` requireHibernateSupport `Prelude.hashWithSalt` spotMaxPricePercentageOverLowestPrice `Prelude.hashWithSalt` totalLocalStorageGB `Prelude.hashWithSalt` vCpuCount instance Prelude.NFData AwsEc2LaunchTemplateDataInstanceRequirementsDetails where rnf AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {..} = Prelude.rnf acceleratorCount `Prelude.seq` Prelude.rnf acceleratorManufacturers `Prelude.seq` Prelude.rnf acceleratorNames `Prelude.seq` Prelude.rnf acceleratorTotalMemoryMiB `Prelude.seq` Prelude.rnf acceleratorTypes `Prelude.seq` Prelude.rnf bareMetal `Prelude.seq` Prelude.rnf baselineEbsBandwidthMbps `Prelude.seq` Prelude.rnf burstablePerformance `Prelude.seq` Prelude.rnf cpuManufacturers `Prelude.seq` Prelude.rnf excludedInstanceTypes `Prelude.seq` Prelude.rnf instanceGenerations `Prelude.seq` Prelude.rnf localStorage `Prelude.seq` Prelude.rnf localStorageTypes `Prelude.seq` Prelude.rnf memoryGiBPerVCpu `Prelude.seq` Prelude.rnf memoryMiB `Prelude.seq` Prelude.rnf networkInterfaceCount `Prelude.seq` Prelude.rnf onDemandMaxPricePercentageOverLowestPrice `Prelude.seq` Prelude.rnf requireHibernateSupport `Prelude.seq` Prelude.rnf spotMaxPricePercentageOverLowestPrice `Prelude.seq` Prelude.rnf totalLocalStorageGB `Prelude.seq` Prelude.rnf vCpuCount instance Data.ToJSON AwsEc2LaunchTemplateDataInstanceRequirementsDetails where toJSON AwsEc2LaunchTemplateDataInstanceRequirementsDetails' {..} = Data.object ( Prelude.catMaybes [ ("AcceleratorCount" Data..=) Prelude.<$> acceleratorCount, ("AcceleratorManufacturers" Data..=) Prelude.<$> acceleratorManufacturers, ("AcceleratorNames" Data..=) Prelude.<$> acceleratorNames, ("AcceleratorTotalMemoryMiB" Data..=) Prelude.<$> acceleratorTotalMemoryMiB, ("AcceleratorTypes" Data..=) Prelude.<$> acceleratorTypes, ("BareMetal" Data..=) Prelude.<$> bareMetal, ("BaselineEbsBandwidthMbps" Data..=) Prelude.<$> baselineEbsBandwidthMbps, ("BurstablePerformance" Data..=) Prelude.<$> burstablePerformance, ("CpuManufacturers" Data..=) Prelude.<$> cpuManufacturers, ("ExcludedInstanceTypes" Data..=) Prelude.<$> excludedInstanceTypes, ("InstanceGenerations" Data..=) Prelude.<$> instanceGenerations, ("LocalStorage" Data..=) Prelude.<$> localStorage, ("LocalStorageTypes" Data..=) Prelude.<$> localStorageTypes, ("MemoryGiBPerVCpu" Data..=) Prelude.<$> memoryGiBPerVCpu, ("MemoryMiB" Data..=) Prelude.<$> memoryMiB, ("NetworkInterfaceCount" Data..=) Prelude.<$> networkInterfaceCount, ("OnDemandMaxPricePercentageOverLowestPrice" Data..=) Prelude.<$> onDemandMaxPricePercentageOverLowestPrice, ("RequireHibernateSupport" Data..=) Prelude.<$> requireHibernateSupport, ("SpotMaxPricePercentageOverLowestPrice" Data..=) Prelude.<$> spotMaxPricePercentageOverLowestPrice, ("TotalLocalStorageGB" Data..=) Prelude.<$> totalLocalStorageGB, ("VCpuCount" Data..=) Prelude.<$> vCpuCount ] )