/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace AutoScaling { namespace Model { /** *

The attributes for the instance types for a mixed instances policy. Amazon * EC2 Auto Scaling uses your specified requirements to identify instance types. * Then, it uses your On-Demand and Spot allocation strategies to launch instances * from these instance types.

When you specify multiple attributes, you get * instance types that satisfy all of the specified attributes. If you specify * multiple values for an attribute, you get instance types that satisfy any of the * specified values.

To limit the list of instance types from which Amazon * EC2 Auto Scaling can identify matching instance types, you can use one of the * following parameters, but not both in the same request:

  • * AllowedInstanceTypes - The instance types to include in the list. * All other instance types are ignored, even if they match your specified * attributes.

  • ExcludedInstanceTypes - The instance * types to exclude from the list, even if they match your specified * attributes.

You must specify VCpuCount * and MemoryMiB. All other attributes are optional. Any unspecified * optional attribute is set to its default.

For more information, * see Creating * an Auto Scaling group using attribute-based instance type selection in the * Amazon EC2 Auto Scaling User Guide. For help determining which instance * types match your attributes before you apply them to your Auto Scaling group, * see Preview * instance types with specified attributes in the Amazon EC2 User Guide for * Linux Instances.

See Also:

AWS * API Reference

*/ class InstanceRequirements { public: AWS_AUTOSCALING_API InstanceRequirements(); AWS_AUTOSCALING_API InstanceRequirements(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_AUTOSCALING_API InstanceRequirements& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_AUTOSCALING_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_AUTOSCALING_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The minimum and maximum number of vCPUs for an instance type.

*/ inline const VCpuCountRequest& GetVCpuCount() const{ return m_vCpuCount; } /** *

The minimum and maximum number of vCPUs for an instance type.

*/ inline bool VCpuCountHasBeenSet() const { return m_vCpuCountHasBeenSet; } /** *

The minimum and maximum number of vCPUs for an instance type.

*/ inline void SetVCpuCount(const VCpuCountRequest& value) { m_vCpuCountHasBeenSet = true; m_vCpuCount = value; } /** *

The minimum and maximum number of vCPUs for an instance type.

*/ inline void SetVCpuCount(VCpuCountRequest&& value) { m_vCpuCountHasBeenSet = true; m_vCpuCount = std::move(value); } /** *

The minimum and maximum number of vCPUs for an instance type.

*/ inline InstanceRequirements& WithVCpuCount(const VCpuCountRequest& value) { SetVCpuCount(value); return *this;} /** *

The minimum and maximum number of vCPUs for an instance type.

*/ inline InstanceRequirements& WithVCpuCount(VCpuCountRequest&& value) { SetVCpuCount(std::move(value)); return *this;} /** *

The minimum and maximum instance memory size for an instance type, in * MiB.

*/ inline const MemoryMiBRequest& GetMemoryMiB() const{ return m_memoryMiB; } /** *

The minimum and maximum instance memory size for an instance type, in * MiB.

*/ inline bool MemoryMiBHasBeenSet() const { return m_memoryMiBHasBeenSet; } /** *

The minimum and maximum instance memory size for an instance type, in * MiB.

*/ inline void SetMemoryMiB(const MemoryMiBRequest& value) { m_memoryMiBHasBeenSet = true; m_memoryMiB = value; } /** *

The minimum and maximum instance memory size for an instance type, in * MiB.

*/ inline void SetMemoryMiB(MemoryMiBRequest&& value) { m_memoryMiBHasBeenSet = true; m_memoryMiB = std::move(value); } /** *

The minimum and maximum instance memory size for an instance type, in * MiB.

*/ inline InstanceRequirements& WithMemoryMiB(const MemoryMiBRequest& value) { SetMemoryMiB(value); return *this;} /** *

The minimum and maximum instance memory size for an instance type, in * MiB.

*/ inline InstanceRequirements& WithMemoryMiB(MemoryMiBRequest&& value) { SetMemoryMiB(std::move(value)); return *this;} /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline const Aws::Vector& GetCpuManufacturers() const{ return m_cpuManufacturers; } /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline bool CpuManufacturersHasBeenSet() const { return m_cpuManufacturersHasBeenSet; } /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline void SetCpuManufacturers(const Aws::Vector& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers = value; } /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline void SetCpuManufacturers(Aws::Vector&& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers = std::move(value); } /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline InstanceRequirements& WithCpuManufacturers(const Aws::Vector& value) { SetCpuManufacturers(value); return *this;} /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline InstanceRequirements& WithCpuManufacturers(Aws::Vector&& value) { SetCpuManufacturers(std::move(value)); return *this;} /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline InstanceRequirements& AddCpuManufacturers(const CpuManufacturer& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers.push_back(value); return *this; } /** *

Lists which specific CPU manufacturers to include.

  • For * instance types with Intel CPUs, specify intel.

  • *

    For instance types with AMD CPUs, specify amd.

  • *

    For instance types with Amazon Web Services CPUs, specify * amazon-web-services.

Don't confuse the * CPU hardware manufacturer with the CPU hardware architecture. Instances will be * launched with a compatible CPU architecture based on the Amazon Machine Image * (AMI) that you specify in your launch template.

Default: Any * manufacturer

*/ inline InstanceRequirements& AddCpuManufacturers(CpuManufacturer&& value) { m_cpuManufacturersHasBeenSet = true; m_cpuManufacturers.push_back(std::move(value)); return *this; } /** *

The minimum and maximum amount of memory per vCPU for an instance type, in * GiB.

Default: No minimum or maximum limits

*/ inline const MemoryGiBPerVCpuRequest& GetMemoryGiBPerVCpu() const{ return m_memoryGiBPerVCpu; } /** *

The minimum and maximum amount of memory per vCPU for an instance type, in * GiB.

Default: No minimum or maximum limits

*/ inline bool MemoryGiBPerVCpuHasBeenSet() const { return m_memoryGiBPerVCpuHasBeenSet; } /** *

The minimum and maximum amount of memory per vCPU for an instance type, in * GiB.

Default: No minimum or maximum limits

*/ inline void SetMemoryGiBPerVCpu(const MemoryGiBPerVCpuRequest& value) { m_memoryGiBPerVCpuHasBeenSet = true; m_memoryGiBPerVCpu = value; } /** *

The minimum and maximum amount of memory per vCPU for an instance type, in * GiB.

Default: No minimum or maximum limits

*/ inline void SetMemoryGiBPerVCpu(MemoryGiBPerVCpuRequest&& value) { m_memoryGiBPerVCpuHasBeenSet = true; m_memoryGiBPerVCpu = std::move(value); } /** *

The minimum and maximum amount of memory per vCPU for an instance type, in * GiB.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithMemoryGiBPerVCpu(const MemoryGiBPerVCpuRequest& value) { SetMemoryGiBPerVCpu(value); return *this;} /** *

The minimum and maximum amount of memory per vCPU for an instance type, in * GiB.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithMemoryGiBPerVCpu(MemoryGiBPerVCpuRequest&& value) { SetMemoryGiBPerVCpu(std::move(value)); return *this;} /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline const Aws::Vector& GetExcludedInstanceTypes() const{ return m_excludedInstanceTypes; } /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline bool ExcludedInstanceTypesHasBeenSet() const { return m_excludedInstanceTypesHasBeenSet; } /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline void SetExcludedInstanceTypes(const Aws::Vector& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes = value; } /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline void SetExcludedInstanceTypes(Aws::Vector&& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes = std::move(value); } /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline InstanceRequirements& WithExcludedInstanceTypes(const Aws::Vector& value) { SetExcludedInstanceTypes(value); return *this;} /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline InstanceRequirements& WithExcludedInstanceTypes(Aws::Vector&& value) { SetExcludedInstanceTypes(std::move(value)); return *this;} /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline InstanceRequirements& AddExcludedInstanceTypes(const Aws::String& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes.push_back(value); return *this; } /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline InstanceRequirements& AddExcludedInstanceTypes(Aws::String&& value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes.push_back(std::move(value)); return *this; } /** *

The instance types to exclude. You can use strings with one or more wild * cards, represented by an asterisk (*), to exclude an instance * family, type, size, or generation. The following are examples: * m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, you are excluding the entire C5 instance family, which * includes all C5a and C5n instance types. If you specify m5a.*, * Amazon EC2 Auto Scaling will exclude all the M5a instance types, but not the M5n * instance types.

If you specify ExcludedInstanceTypes, * you can't specify AllowedInstanceTypes.

Default: No * excluded instance types

*/ inline InstanceRequirements& AddExcludedInstanceTypes(const char* value) { m_excludedInstanceTypesHasBeenSet = true; m_excludedInstanceTypes.push_back(value); return *this; } /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline const Aws::Vector& GetInstanceGenerations() const{ return m_instanceGenerations; } /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline bool InstanceGenerationsHasBeenSet() const { return m_instanceGenerationsHasBeenSet; } /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline void SetInstanceGenerations(const Aws::Vector& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations = value; } /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline void SetInstanceGenerations(Aws::Vector&& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations = std::move(value); } /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline InstanceRequirements& WithInstanceGenerations(const Aws::Vector& value) { SetInstanceGenerations(value); return *this;} /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline InstanceRequirements& WithInstanceGenerations(Aws::Vector&& value) { SetInstanceGenerations(std::move(value)); return *this;} /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline InstanceRequirements& AddInstanceGenerations(const InstanceGeneration& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations.push_back(value); return *this; } /** *

Indicates whether current or previous generation instance types are * included.

  • For current generation instance types, specify * current. The current generation includes EC2 instance types * currently recommended for use. This typically includes the latest two to three * generations in each instance family. For more information, see Instance * types in the Amazon EC2 User Guide for Linux Instances.

  • *
  • For previous generation instance types, specify * previous.

Default: Any current or previous * generation

*/ inline InstanceRequirements& AddInstanceGenerations(InstanceGeneration&& value) { m_instanceGenerationsHasBeenSet = true; m_instanceGenerations.push_back(std::move(value)); return *this; } /** *

The price protection threshold for Spot Instances. This is the maximum you’ll * pay for a Spot Instance, expressed as a percentage higher than the least * expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 100

*/ inline int GetSpotMaxPricePercentageOverLowestPrice() const{ return m_spotMaxPricePercentageOverLowestPrice; } /** *

The price protection threshold for Spot Instances. This is the maximum you’ll * pay for a Spot Instance, expressed as a percentage higher than the least * expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 100

*/ inline bool SpotMaxPricePercentageOverLowestPriceHasBeenSet() const { return m_spotMaxPricePercentageOverLowestPriceHasBeenSet; } /** *

The price protection threshold for Spot Instances. This is the maximum you’ll * pay for a Spot Instance, expressed as a percentage higher than the least * expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 100

*/ inline void SetSpotMaxPricePercentageOverLowestPrice(int value) { m_spotMaxPricePercentageOverLowestPriceHasBeenSet = true; m_spotMaxPricePercentageOverLowestPrice = value; } /** *

The price protection threshold for Spot Instances. This is the maximum you’ll * pay for a Spot Instance, expressed as a percentage higher than the least * expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 100

*/ inline InstanceRequirements& WithSpotMaxPricePercentageOverLowestPrice(int value) { SetSpotMaxPricePercentageOverLowestPrice(value); return *this;} /** *

The price protection threshold for On-Demand Instances. This is the maximum * you’ll pay for an On-Demand Instance, expressed as a percentage higher than the * least expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 20

*/ inline int GetOnDemandMaxPricePercentageOverLowestPrice() const{ return m_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 higher than the * least expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 20

*/ inline bool OnDemandMaxPricePercentageOverLowestPriceHasBeenSet() const { return m_onDemandMaxPricePercentageOverLowestPriceHasBeenSet; } /** *

The price protection threshold for On-Demand Instances. This is the maximum * you’ll pay for an On-Demand Instance, expressed as a percentage higher than the * least expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 20

*/ inline void SetOnDemandMaxPricePercentageOverLowestPrice(int value) { m_onDemandMaxPricePercentageOverLowestPriceHasBeenSet = true; m_onDemandMaxPricePercentageOverLowestPrice = value; } /** *

The price protection threshold for On-Demand Instances. This is the maximum * you’ll pay for an On-Demand Instance, expressed as a percentage higher than the * least expensive current generation M, C, or R instance type with your specified * attributes. When Amazon EC2 Auto Scaling selects instance types with your * attributes, we will exclude instance types whose price is higher than your * threshold. The parameter accepts an integer, which Amazon EC2 Auto Scaling * interprets as a percentage. To turn off price protection, specify a high value, * such as 999999.

If you set DesiredCapacityType * to vcpu or memory-mib, the price protection threshold * is applied based on the per vCPU or per memory price instead of the per instance * price.

Default: 20

*/ inline InstanceRequirements& WithOnDemandMaxPricePercentageOverLowestPrice(int value) { SetOnDemandMaxPricePercentageOverLowestPrice(value); return *this;} /** *

Indicates whether bare metal instance types are included, excluded, or * required.

Default: excluded

*/ inline const BareMetal& GetBareMetal() const{ return m_bareMetal; } /** *

Indicates whether bare metal instance types are included, excluded, or * required.

Default: excluded

*/ inline bool BareMetalHasBeenSet() const { return m_bareMetalHasBeenSet; } /** *

Indicates whether bare metal instance types are included, excluded, or * required.

Default: excluded

*/ inline void SetBareMetal(const BareMetal& value) { m_bareMetalHasBeenSet = true; m_bareMetal = value; } /** *

Indicates whether bare metal instance types are included, excluded, or * required.

Default: excluded

*/ inline void SetBareMetal(BareMetal&& value) { m_bareMetalHasBeenSet = true; m_bareMetal = std::move(value); } /** *

Indicates whether bare metal instance types are included, excluded, or * required.

Default: excluded

*/ inline InstanceRequirements& WithBareMetal(const BareMetal& value) { SetBareMetal(value); return *this;} /** *

Indicates whether bare metal instance types are included, excluded, or * required.

Default: excluded

*/ inline InstanceRequirements& WithBareMetal(BareMetal&& value) { SetBareMetal(std::move(value)); return *this;} /** *

Indicates whether burstable performance instance types are included, * excluded, or required. For more information, see Burstable * performance instances in the Amazon EC2 User Guide for Linux * Instances.

Default: excluded

*/ inline const BurstablePerformance& GetBurstablePerformance() const{ return m_burstablePerformance; } /** *

Indicates whether burstable performance instance types are included, * excluded, or required. For more information, see Burstable * performance instances in the Amazon EC2 User Guide for Linux * Instances.

Default: excluded

*/ inline bool BurstablePerformanceHasBeenSet() const { return m_burstablePerformanceHasBeenSet; } /** *

Indicates whether burstable performance instance types are included, * excluded, or required. For more information, see Burstable * performance instances in the Amazon EC2 User Guide for Linux * Instances.

Default: excluded

*/ inline void SetBurstablePerformance(const BurstablePerformance& value) { m_burstablePerformanceHasBeenSet = true; m_burstablePerformance = value; } /** *

Indicates whether burstable performance instance types are included, * excluded, or required. For more information, see Burstable * performance instances in the Amazon EC2 User Guide for Linux * Instances.

Default: excluded

*/ inline void SetBurstablePerformance(BurstablePerformance&& value) { m_burstablePerformanceHasBeenSet = true; m_burstablePerformance = std::move(value); } /** *

Indicates whether burstable performance instance types are included, * excluded, or required. For more information, see Burstable * performance instances in the Amazon EC2 User Guide for Linux * Instances.

Default: excluded

*/ inline InstanceRequirements& WithBurstablePerformance(const BurstablePerformance& value) { SetBurstablePerformance(value); return *this;} /** *

Indicates whether burstable performance instance types are included, * excluded, or required. For more information, see Burstable * performance instances in the Amazon EC2 User Guide for Linux * Instances.

Default: excluded

*/ inline InstanceRequirements& WithBurstablePerformance(BurstablePerformance&& value) { SetBurstablePerformance(std::move(value)); return *this;} /** *

Indicates whether instance types must provide On-Demand Instance hibernation * support.

Default: false

*/ inline bool GetRequireHibernateSupport() const{ return m_requireHibernateSupport; } /** *

Indicates whether instance types must provide On-Demand Instance hibernation * support.

Default: false

*/ inline bool RequireHibernateSupportHasBeenSet() const { return m_requireHibernateSupportHasBeenSet; } /** *

Indicates whether instance types must provide On-Demand Instance hibernation * support.

Default: false

*/ inline void SetRequireHibernateSupport(bool value) { m_requireHibernateSupportHasBeenSet = true; m_requireHibernateSupport = value; } /** *

Indicates whether instance types must provide On-Demand Instance hibernation * support.

Default: false

*/ inline InstanceRequirements& WithRequireHibernateSupport(bool value) { SetRequireHibernateSupport(value); return *this;} /** *

The minimum and maximum number of network interfaces for an instance * type.

Default: No minimum or maximum limits

*/ inline const NetworkInterfaceCountRequest& GetNetworkInterfaceCount() const{ return m_networkInterfaceCount; } /** *

The minimum and maximum number of network interfaces for an instance * type.

Default: No minimum or maximum limits

*/ inline bool NetworkInterfaceCountHasBeenSet() const { return m_networkInterfaceCountHasBeenSet; } /** *

The minimum and maximum number of network interfaces for an instance * type.

Default: No minimum or maximum limits

*/ inline void SetNetworkInterfaceCount(const NetworkInterfaceCountRequest& value) { m_networkInterfaceCountHasBeenSet = true; m_networkInterfaceCount = value; } /** *

The minimum and maximum number of network interfaces for an instance * type.

Default: No minimum or maximum limits

*/ inline void SetNetworkInterfaceCount(NetworkInterfaceCountRequest&& value) { m_networkInterfaceCountHasBeenSet = true; m_networkInterfaceCount = std::move(value); } /** *

The minimum and maximum number of network interfaces for an instance * type.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithNetworkInterfaceCount(const NetworkInterfaceCountRequest& value) { SetNetworkInterfaceCount(value); return *this;} /** *

The minimum and maximum number of network interfaces for an instance * type.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithNetworkInterfaceCount(NetworkInterfaceCountRequest&& value) { SetNetworkInterfaceCount(std::move(value)); return *this;} /** *

Indicates whether instance types with instance store volumes are included, * excluded, or required. For more information, see Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux * Instances.

Default: included

*/ inline const LocalStorage& GetLocalStorage() const{ return m_localStorage; } /** *

Indicates whether instance types with instance store volumes are included, * excluded, or required. For more information, see Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux * Instances.

Default: included

*/ inline bool LocalStorageHasBeenSet() const { return m_localStorageHasBeenSet; } /** *

Indicates whether instance types with instance store volumes are included, * excluded, or required. For more information, see Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux * Instances.

Default: included

*/ inline void SetLocalStorage(const LocalStorage& value) { m_localStorageHasBeenSet = true; m_localStorage = value; } /** *

Indicates whether instance types with instance store volumes are included, * excluded, or required. For more information, see Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux * Instances.

Default: included

*/ inline void SetLocalStorage(LocalStorage&& value) { m_localStorageHasBeenSet = true; m_localStorage = std::move(value); } /** *

Indicates whether instance types with instance store volumes are included, * excluded, or required. For more information, see Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux * Instances.

Default: included

*/ inline InstanceRequirements& WithLocalStorage(const LocalStorage& value) { SetLocalStorage(value); return *this;} /** *

Indicates whether instance types with instance store volumes are included, * excluded, or required. For more information, see Amazon * EC2 instance store in the Amazon EC2 User Guide for Linux * Instances.

Default: included

*/ inline InstanceRequirements& WithLocalStorage(LocalStorage&& value) { SetLocalStorage(std::move(value)); return *this;} /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline const Aws::Vector& GetLocalStorageTypes() const{ return m_localStorageTypes; } /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline bool LocalStorageTypesHasBeenSet() const { return m_localStorageTypesHasBeenSet; } /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline void SetLocalStorageTypes(const Aws::Vector& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes = value; } /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline void SetLocalStorageTypes(Aws::Vector&& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes = std::move(value); } /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline InstanceRequirements& WithLocalStorageTypes(const Aws::Vector& value) { SetLocalStorageTypes(value); return *this;} /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline InstanceRequirements& WithLocalStorageTypes(Aws::Vector&& value) { SetLocalStorageTypes(std::move(value)); return *this;} /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline InstanceRequirements& AddLocalStorageTypes(const LocalStorageType& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes.push_back(value); return *this; } /** *

Indicates the type of local storage that is required.

  • For * instance types with hard disk drive (HDD) storage, specify hdd.

    *
  • For instance types with solid state drive (SSD) storage, specify * ssd.

Default: Any local storage type

*/ inline InstanceRequirements& AddLocalStorageTypes(LocalStorageType&& value) { m_localStorageTypesHasBeenSet = true; m_localStorageTypes.push_back(std::move(value)); return *this; } /** *

The minimum and maximum total local storage size for an instance type, in * GB.

Default: No minimum or maximum limits

*/ inline const TotalLocalStorageGBRequest& GetTotalLocalStorageGB() const{ return m_totalLocalStorageGB; } /** *

The minimum and maximum total local storage size for an instance type, in * GB.

Default: No minimum or maximum limits

*/ inline bool TotalLocalStorageGBHasBeenSet() const { return m_totalLocalStorageGBHasBeenSet; } /** *

The minimum and maximum total local storage size for an instance type, in * GB.

Default: No minimum or maximum limits

*/ inline void SetTotalLocalStorageGB(const TotalLocalStorageGBRequest& value) { m_totalLocalStorageGBHasBeenSet = true; m_totalLocalStorageGB = value; } /** *

The minimum and maximum total local storage size for an instance type, in * GB.

Default: No minimum or maximum limits

*/ inline void SetTotalLocalStorageGB(TotalLocalStorageGBRequest&& value) { m_totalLocalStorageGBHasBeenSet = true; m_totalLocalStorageGB = std::move(value); } /** *

The minimum and maximum total local storage size for an instance type, in * GB.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithTotalLocalStorageGB(const TotalLocalStorageGBRequest& value) { SetTotalLocalStorageGB(value); return *this;} /** *

The minimum and maximum total local storage size for an instance type, in * GB.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithTotalLocalStorageGB(TotalLocalStorageGBRequest&& value) { SetTotalLocalStorageGB(std::move(value)); return *this;} /** *

The minimum and maximum baseline bandwidth performance for an instance type, * in Mbps. For more information, see Amazon * EBS–optimized instances in the Amazon EC2 User Guide for Linux * Instances.

Default: No minimum or maximum limits

*/ inline const BaselineEbsBandwidthMbpsRequest& GetBaselineEbsBandwidthMbps() const{ return m_baselineEbsBandwidthMbps; } /** *

The minimum and maximum baseline bandwidth performance for an instance type, * in Mbps. For more information, see Amazon * EBS–optimized instances in the Amazon EC2 User Guide for Linux * Instances.

Default: No minimum or maximum limits

*/ inline bool BaselineEbsBandwidthMbpsHasBeenSet() const { return m_baselineEbsBandwidthMbpsHasBeenSet; } /** *

The minimum and maximum baseline bandwidth performance for an instance type, * in Mbps. For more information, see Amazon * EBS–optimized instances in the Amazon EC2 User Guide for Linux * Instances.

Default: No minimum or maximum limits

*/ inline void SetBaselineEbsBandwidthMbps(const BaselineEbsBandwidthMbpsRequest& value) { m_baselineEbsBandwidthMbpsHasBeenSet = true; m_baselineEbsBandwidthMbps = value; } /** *

The minimum and maximum baseline bandwidth performance for an instance type, * in Mbps. For more information, see Amazon * EBS–optimized instances in the Amazon EC2 User Guide for Linux * Instances.

Default: No minimum or maximum limits

*/ inline void SetBaselineEbsBandwidthMbps(BaselineEbsBandwidthMbpsRequest&& value) { m_baselineEbsBandwidthMbpsHasBeenSet = true; m_baselineEbsBandwidthMbps = std::move(value); } /** *

The minimum and maximum baseline bandwidth performance for an instance type, * in Mbps. For more information, see Amazon * EBS–optimized instances in the Amazon EC2 User Guide for Linux * Instances.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithBaselineEbsBandwidthMbps(const BaselineEbsBandwidthMbpsRequest& value) { SetBaselineEbsBandwidthMbps(value); return *this;} /** *

The minimum and maximum baseline bandwidth performance for an instance type, * in Mbps. For more information, see Amazon * EBS–optimized instances in the Amazon EC2 User Guide for Linux * Instances.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithBaselineEbsBandwidthMbps(BaselineEbsBandwidthMbpsRequest&& value) { SetBaselineEbsBandwidthMbps(std::move(value)); return *this;} /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline const Aws::Vector& GetAcceleratorTypes() const{ return m_acceleratorTypes; } /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline bool AcceleratorTypesHasBeenSet() const { return m_acceleratorTypesHasBeenSet; } /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline void SetAcceleratorTypes(const Aws::Vector& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes = value; } /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline void SetAcceleratorTypes(Aws::Vector&& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes = std::move(value); } /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline InstanceRequirements& WithAcceleratorTypes(const Aws::Vector& value) { SetAcceleratorTypes(value); return *this;} /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline InstanceRequirements& WithAcceleratorTypes(Aws::Vector&& value) { SetAcceleratorTypes(std::move(value)); return *this;} /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline InstanceRequirements& AddAcceleratorTypes(const AcceleratorType& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes.push_back(value); return *this; } /** *

Lists the accelerator types that must be on an instance type.

  • *

    For instance types with GPU accelerators, specify gpu.

  • *
  • For instance types with FPGA accelerators, specify * fpga.

  • For instance types with inference * accelerators, specify inference.

Default: Any * accelerator type

*/ inline InstanceRequirements& AddAcceleratorTypes(AcceleratorType&& value) { m_acceleratorTypesHasBeenSet = true; m_acceleratorTypes.push_back(std::move(value)); return *this; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) for an instance type.

To exclude * accelerator-enabled instance types, set Max to 0.

*

Default: No minimum or maximum limits

*/ inline const AcceleratorCountRequest& GetAcceleratorCount() const{ return m_acceleratorCount; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) for an instance type.

To exclude * accelerator-enabled instance types, set Max to 0.

*

Default: No minimum or maximum limits

*/ inline bool AcceleratorCountHasBeenSet() const { return m_acceleratorCountHasBeenSet; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) for an instance type.

To exclude * accelerator-enabled instance types, set Max to 0.

*

Default: No minimum or maximum limits

*/ inline void SetAcceleratorCount(const AcceleratorCountRequest& value) { m_acceleratorCountHasBeenSet = true; m_acceleratorCount = value; } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) for an instance type.

To exclude * accelerator-enabled instance types, set Max to 0.

*

Default: No minimum or maximum limits

*/ inline void SetAcceleratorCount(AcceleratorCountRequest&& value) { m_acceleratorCountHasBeenSet = true; m_acceleratorCount = std::move(value); } /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) for an instance type.

To exclude * accelerator-enabled instance types, set Max to 0.

*

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithAcceleratorCount(const AcceleratorCountRequest& value) { SetAcceleratorCount(value); return *this;} /** *

The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web * Services Inferentia chips) for an instance type.

To exclude * accelerator-enabled instance types, set Max to 0.

*

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithAcceleratorCount(AcceleratorCountRequest&& value) { SetAcceleratorCount(std::move(value)); return *this;} /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline const Aws::Vector& GetAcceleratorManufacturers() const{ return m_acceleratorManufacturers; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline bool AcceleratorManufacturersHasBeenSet() const { return m_acceleratorManufacturersHasBeenSet; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline void SetAcceleratorManufacturers(const Aws::Vector& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers = value; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline void SetAcceleratorManufacturers(Aws::Vector&& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers = std::move(value); } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline InstanceRequirements& WithAcceleratorManufacturers(const Aws::Vector& value) { SetAcceleratorManufacturers(value); return *this;} /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline InstanceRequirements& WithAcceleratorManufacturers(Aws::Vector&& value) { SetAcceleratorManufacturers(std::move(value)); return *this;} /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline InstanceRequirements& AddAcceleratorManufacturers(const AcceleratorManufacturer& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers.push_back(value); return *this; } /** *

Indicates whether instance types must have accelerators by specific * manufacturers.

  • For instance types with NVIDIA devices, specify * nvidia.

  • For instance types with AMD devices, * specify amd.

  • For instance types with Amazon Web * Services devices, specify amazon-web-services.

  • *

    For instance types with Xilinx devices, specify xilinx.

    *

Default: Any manufacturer

*/ inline InstanceRequirements& AddAcceleratorManufacturers(AcceleratorManufacturer&& value) { m_acceleratorManufacturersHasBeenSet = true; m_acceleratorManufacturers.push_back(std::move(value)); return *this; } /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline const Aws::Vector& GetAcceleratorNames() const{ return m_acceleratorNames; } /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline bool AcceleratorNamesHasBeenSet() const { return m_acceleratorNamesHasBeenSet; } /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline void SetAcceleratorNames(const Aws::Vector& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames = value; } /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline void SetAcceleratorNames(Aws::Vector&& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames = std::move(value); } /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline InstanceRequirements& WithAcceleratorNames(const Aws::Vector& value) { SetAcceleratorNames(value); return *this;} /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline InstanceRequirements& WithAcceleratorNames(Aws::Vector&& value) { SetAcceleratorNames(std::move(value)); return *this;} /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline InstanceRequirements& AddAcceleratorNames(const AcceleratorName& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames.push_back(value); return *this; } /** *

Lists the accelerators that must be on an instance type.

  • For * instance types with NVIDIA A100 GPUs, specify a100.

  • *

    For instance types with NVIDIA V100 GPUs, specify v100.

    *
  • For instance types with NVIDIA K80 GPUs, specify * k80.

  • For instance types with NVIDIA T4 GPUs, * specify t4.

  • For instance types with NVIDIA M60 * GPUs, specify m60.

  • For instance types with AMD * Radeon Pro V520 GPUs, specify radeon-pro-v520.

  • *

    For instance types with Xilinx VU9P FPGAs, specify vu9p.

    *

Default: Any accelerator

*/ inline InstanceRequirements& AddAcceleratorNames(AcceleratorName&& value) { m_acceleratorNamesHasBeenSet = true; m_acceleratorNames.push_back(std::move(value)); return *this; } /** *

The minimum and maximum total memory size for the accelerators on an instance * type, in MiB.

Default: No minimum or maximum limits

*/ inline const AcceleratorTotalMemoryMiBRequest& GetAcceleratorTotalMemoryMiB() const{ return m_acceleratorTotalMemoryMiB; } /** *

The minimum and maximum total memory size for the accelerators on an instance * type, in MiB.

Default: No minimum or maximum limits

*/ inline bool AcceleratorTotalMemoryMiBHasBeenSet() const { return m_acceleratorTotalMemoryMiBHasBeenSet; } /** *

The minimum and maximum total memory size for the accelerators on an instance * type, in MiB.

Default: No minimum or maximum limits

*/ inline void SetAcceleratorTotalMemoryMiB(const AcceleratorTotalMemoryMiBRequest& value) { m_acceleratorTotalMemoryMiBHasBeenSet = true; m_acceleratorTotalMemoryMiB = value; } /** *

The minimum and maximum total memory size for the accelerators on an instance * type, in MiB.

Default: No minimum or maximum limits

*/ inline void SetAcceleratorTotalMemoryMiB(AcceleratorTotalMemoryMiBRequest&& value) { m_acceleratorTotalMemoryMiBHasBeenSet = true; m_acceleratorTotalMemoryMiB = std::move(value); } /** *

The minimum and maximum total memory size for the accelerators on an instance * type, in MiB.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithAcceleratorTotalMemoryMiB(const AcceleratorTotalMemoryMiBRequest& value) { SetAcceleratorTotalMemoryMiB(value); return *this;} /** *

The minimum and maximum total memory size for the accelerators on an instance * type, in MiB.

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithAcceleratorTotalMemoryMiB(AcceleratorTotalMemoryMiBRequest&& value) { SetAcceleratorTotalMemoryMiB(std::move(value)); return *this;} /** *

The minimum and maximum amount of network bandwidth, in gigabits per second * (Gbps).

Default: No minimum or maximum limits

*/ inline const NetworkBandwidthGbpsRequest& GetNetworkBandwidthGbps() const{ return m_networkBandwidthGbps; } /** *

The minimum and maximum amount of network bandwidth, in gigabits per second * (Gbps).

Default: No minimum or maximum limits

*/ inline bool NetworkBandwidthGbpsHasBeenSet() const { return m_networkBandwidthGbpsHasBeenSet; } /** *

The minimum and maximum amount of network bandwidth, in gigabits per second * (Gbps).

Default: No minimum or maximum limits

*/ inline void SetNetworkBandwidthGbps(const NetworkBandwidthGbpsRequest& value) { m_networkBandwidthGbpsHasBeenSet = true; m_networkBandwidthGbps = value; } /** *

The minimum and maximum amount of network bandwidth, in gigabits per second * (Gbps).

Default: No minimum or maximum limits

*/ inline void SetNetworkBandwidthGbps(NetworkBandwidthGbpsRequest&& value) { m_networkBandwidthGbpsHasBeenSet = true; m_networkBandwidthGbps = std::move(value); } /** *

The minimum and maximum amount of network bandwidth, in gigabits per second * (Gbps).

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithNetworkBandwidthGbps(const NetworkBandwidthGbpsRequest& value) { SetNetworkBandwidthGbps(value); return *this;} /** *

The minimum and maximum amount of network bandwidth, in gigabits per second * (Gbps).

Default: No minimum or maximum limits

*/ inline InstanceRequirements& WithNetworkBandwidthGbps(NetworkBandwidthGbpsRequest&& value) { SetNetworkBandwidthGbps(std::move(value)); return *this;} /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline const Aws::Vector& GetAllowedInstanceTypes() const{ return m_allowedInstanceTypes; } /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline bool AllowedInstanceTypesHasBeenSet() const { return m_allowedInstanceTypesHasBeenSet; } /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline void SetAllowedInstanceTypes(const Aws::Vector& value) { m_allowedInstanceTypesHasBeenSet = true; m_allowedInstanceTypes = value; } /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline void SetAllowedInstanceTypes(Aws::Vector&& value) { m_allowedInstanceTypesHasBeenSet = true; m_allowedInstanceTypes = std::move(value); } /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline InstanceRequirements& WithAllowedInstanceTypes(const Aws::Vector& value) { SetAllowedInstanceTypes(value); return *this;} /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline InstanceRequirements& WithAllowedInstanceTypes(Aws::Vector&& value) { SetAllowedInstanceTypes(std::move(value)); return *this;} /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline InstanceRequirements& AddAllowedInstanceTypes(const Aws::String& value) { m_allowedInstanceTypesHasBeenSet = true; m_allowedInstanceTypes.push_back(value); return *this; } /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline InstanceRequirements& AddAllowedInstanceTypes(Aws::String&& value) { m_allowedInstanceTypesHasBeenSet = true; m_allowedInstanceTypes.push_back(std::move(value)); return *this; } /** *

The instance types to apply your specified attributes against. All other * instance types are ignored, even if they match your specified attributes.

*

You can use strings with one or more wild cards, represented by an asterisk * (*), to allow an instance type, size, or generation. The following * are examples: m5.8xlarge, c5*.*, m5a.*, * r*, *3*.

For example, if you specify * c5*, Amazon EC2 Auto Scaling will allow the entire C5 instance * family, which includes all C5a and C5n instance types. If you specify * m5a.*, Amazon EC2 Auto Scaling will allow all the M5a instance * types, but not the M5n instance types.

If you specify * AllowedInstanceTypes, you can't specify * ExcludedInstanceTypes.

Default: All instance * types

*/ inline InstanceRequirements& AddAllowedInstanceTypes(const char* value) { m_allowedInstanceTypesHasBeenSet = true; m_allowedInstanceTypes.push_back(value); return *this; } private: VCpuCountRequest m_vCpuCount; bool m_vCpuCountHasBeenSet = false; MemoryMiBRequest m_memoryMiB; bool m_memoryMiBHasBeenSet = false; Aws::Vector m_cpuManufacturers; bool m_cpuManufacturersHasBeenSet = false; MemoryGiBPerVCpuRequest m_memoryGiBPerVCpu; bool m_memoryGiBPerVCpuHasBeenSet = false; Aws::Vector m_excludedInstanceTypes; bool m_excludedInstanceTypesHasBeenSet = false; Aws::Vector m_instanceGenerations; bool m_instanceGenerationsHasBeenSet = false; int m_spotMaxPricePercentageOverLowestPrice; bool m_spotMaxPricePercentageOverLowestPriceHasBeenSet = false; int m_onDemandMaxPricePercentageOverLowestPrice; bool m_onDemandMaxPricePercentageOverLowestPriceHasBeenSet = false; BareMetal m_bareMetal; bool m_bareMetalHasBeenSet = false; BurstablePerformance m_burstablePerformance; bool m_burstablePerformanceHasBeenSet = false; bool m_requireHibernateSupport; bool m_requireHibernateSupportHasBeenSet = false; NetworkInterfaceCountRequest m_networkInterfaceCount; bool m_networkInterfaceCountHasBeenSet = false; LocalStorage m_localStorage; bool m_localStorageHasBeenSet = false; Aws::Vector m_localStorageTypes; bool m_localStorageTypesHasBeenSet = false; TotalLocalStorageGBRequest m_totalLocalStorageGB; bool m_totalLocalStorageGBHasBeenSet = false; BaselineEbsBandwidthMbpsRequest m_baselineEbsBandwidthMbps; bool m_baselineEbsBandwidthMbpsHasBeenSet = false; Aws::Vector m_acceleratorTypes; bool m_acceleratorTypesHasBeenSet = false; AcceleratorCountRequest m_acceleratorCount; bool m_acceleratorCountHasBeenSet = false; Aws::Vector m_acceleratorManufacturers; bool m_acceleratorManufacturersHasBeenSet = false; Aws::Vector m_acceleratorNames; bool m_acceleratorNamesHasBeenSet = false; AcceleratorTotalMemoryMiBRequest m_acceleratorTotalMemoryMiB; bool m_acceleratorTotalMemoryMiBHasBeenSet = false; NetworkBandwidthGbpsRequest m_networkBandwidthGbps; bool m_networkBandwidthGbpsHasBeenSet = false; Aws::Vector m_allowedInstanceTypes; bool m_allowedInstanceTypesHasBeenSet = false; }; } // namespace Model } // namespace AutoScaling } // namespace Aws