/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the ec2-2016-11-15.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.EC2.Model
{
///
/// The attributes for the instance types. When you specify instance attributes, Amazon
/// EC2 will identify instance types with these attributes.
///
///
///
/// You must specify VCpuCount
and MemoryMiB
. All other attributes
/// are optional. Any unspecified optional attribute is set to its default.
///
///
///
/// 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 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.
///
///
///
/// If you specify InstanceRequirements
, you can't specify InstanceType
.
///
///
///
/// Attribute-based instance type selection is only supported when using Auto Scaling
/// groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch
/// template in the launch
/// instance wizard or with the RunInstances
/// API, you can't specify InstanceRequirements
.
///
///
///
/// For more information, see Attribute-based
/// instance type selection for EC2 Fleet, Attribute-based
/// instance type selection for Spot Fleet, and Spot
/// placement score in the Amazon EC2 User Guide.
///
///
public partial class InstanceRequirements
{
private AcceleratorCount _acceleratorCount;
private List _acceleratorManufacturers = new List();
private List _acceleratorNames = new List();
private AcceleratorTotalMemoryMiB _acceleratorTotalMemoryMiB;
private List _acceleratorTypes = new List();
private List _allowedInstanceTypes = new List();
private BareMetal _bareMetal;
private BaselineEbsBandwidthMbps _baselineEbsBandwidthMbps;
private BurstablePerformance _burstablePerformance;
private List _cpuManufacturers = new List();
private List _excludedInstanceTypes = new List();
private List _instanceGenerations = new List();
private LocalStorage _localStorage;
private List _localStorageTypes = new List();
private MemoryGiBPerVCpu _memoryGiBPerVCpu;
private MemoryMiB _memoryMiB;
private NetworkBandwidthGbps _networkBandwidthGbps;
private NetworkInterfaceCount _networkInterfaceCount;
private int? _onDemandMaxPricePercentageOverLowestPrice;
private bool? _requireHibernateSupport;
private int? _spotMaxPricePercentageOverLowestPrice;
private TotalLocalStorageGB _totalLocalStorageGB;
private VCpuCountRange _vCpuCount;
///
/// Gets and sets the property AcceleratorCount.
///
/// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web Services
/// Inferentia chips) on an instance.
///
///
///
/// To exclude accelerator-enabled instance types, set Max
to 0
.
///
///
///
/// Default: No minimum or maximum limits
///
///
public AcceleratorCount AcceleratorCount
{
get { return this._acceleratorCount; }
set { this._acceleratorCount = value; }
}
// Check to see if AcceleratorCount property is set
internal bool IsSetAcceleratorCount()
{
return this._acceleratorCount != null;
}
///
/// Gets and sets the property 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
///
///
public List AcceleratorManufacturers
{
get { return this._acceleratorManufacturers; }
set { this._acceleratorManufacturers = value; }
}
// Check to see if AcceleratorManufacturers property is set
internal bool IsSetAcceleratorManufacturers()
{
return this._acceleratorManufacturers != null && this._acceleratorManufacturers.Count > 0;
}
///
/// Gets and sets the property AcceleratorNames.
///
/// The accelerators that must be on the 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
.
///
/// -
///
/// For instance types with Amazon Web Services Inferentia chips, specify
inferentia
.
///
/// -
///
/// For instance types with NVIDIA GRID K520 GPUs, specify
k520
.
///
///
///
/// Default: Any accelerator
///
///
public List AcceleratorNames
{
get { return this._acceleratorNames; }
set { this._acceleratorNames = value; }
}
// Check to see if AcceleratorNames property is set
internal bool IsSetAcceleratorNames()
{
return this._acceleratorNames != null && this._acceleratorNames.Count > 0;
}
///
/// Gets and sets the property AcceleratorTotalMemoryMiB.
///
/// The minimum and maximum amount of total accelerator memory, in MiB.
///
///
///
/// Default: No minimum or maximum limits
///
///
public AcceleratorTotalMemoryMiB AcceleratorTotalMemoryMiB
{
get { return this._acceleratorTotalMemoryMiB; }
set { this._acceleratorTotalMemoryMiB = value; }
}
// Check to see if AcceleratorTotalMemoryMiB property is set
internal bool IsSetAcceleratorTotalMemoryMiB()
{
return this._acceleratorTotalMemoryMiB != null;
}
///
/// Gets and sets the property AcceleratorTypes.
///
/// The accelerator types that must be on the 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
///
///
public List AcceleratorTypes
{
get { return this._acceleratorTypes; }
set { this._acceleratorTypes = value; }
}
// Check to see if AcceleratorTypes property is set
internal bool IsSetAcceleratorTypes()
{
return this._acceleratorTypes != null && this._acceleratorTypes.Count > 0;
}
///
/// Gets and sets the property 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 will allow the entire C5 instance
/// family, which includes all C5a and C5n instance types. If you specify m5a.*
,
/// Amazon EC2 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
///
///
[AWSProperty(Min=0, Max=400)]
public List AllowedInstanceTypes
{
get { return this._allowedInstanceTypes; }
set { this._allowedInstanceTypes = value; }
}
// Check to see if AllowedInstanceTypes property is set
internal bool IsSetAllowedInstanceTypes()
{
return this._allowedInstanceTypes != null && this._allowedInstanceTypes.Count > 0;
}
///
/// Gets and sets the property BareMetal.
///
/// Indicates whether bare metal instance types must be included, excluded, or required.
///
/// -
///
/// To include bare metal instance types, specify
included
.
///
/// -
///
/// To require only bare metal instance types, specify
required
.
///
/// -
///
/// To exclude bare metal instance types, specify
excluded
.
///
///
///
/// Default: excluded
///
///
public BareMetal BareMetal
{
get { return this._bareMetal; }
set { this._bareMetal = value; }
}
// Check to see if BareMetal property is set
internal bool IsSetBareMetal()
{
return this._bareMetal != null;
}
///
/// Gets and sets the property BaselineEbsBandwidthMbps.
///
/// The minimum and maximum baseline bandwidth to Amazon EBS, in Mbps. For more information,
/// see Amazon
/// EBS–optimized instances in the Amazon EC2 User Guide.
///
///
///
/// Default: No minimum or maximum limits
///
///
public BaselineEbsBandwidthMbps BaselineEbsBandwidthMbps
{
get { return this._baselineEbsBandwidthMbps; }
set { this._baselineEbsBandwidthMbps = value; }
}
// Check to see if BaselineEbsBandwidthMbps property is set
internal bool IsSetBaselineEbsBandwidthMbps()
{
return this._baselineEbsBandwidthMbps != null;
}
///
/// Gets and sets the property BurstablePerformance.
///
/// Indicates whether burstable performance T instance types are included, excluded, or
/// required. For more information, see Burstable
/// performance instances.
///
/// -
///
/// To include burstable performance instance types, specify
included
.
///
/// -
///
/// To require only burstable performance instance types, specify
required
.
///
/// -
///
/// To exclude burstable performance instance types, specify
excluded
.
///
///
///
/// Default: excluded
///
///
public BurstablePerformance BurstablePerformance
{
get { return this._burstablePerformance; }
set { this._burstablePerformance = value; }
}
// Check to see if BurstablePerformance property is set
internal bool IsSetBurstablePerformance()
{
return this._burstablePerformance != null;
}
///
/// Gets and sets the property CpuManufacturers.
///
/// The 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 manufacturer with the CPU 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
///
///
public List CpuManufacturers
{
get { return this._cpuManufacturers; }
set { this._cpuManufacturers = value; }
}
// Check to see if CpuManufacturers property is set
internal bool IsSetCpuManufacturers()
{
return this._cpuManufacturers != null && this._cpuManufacturers.Count > 0;
}
///
/// Gets and sets the property ExcludedInstanceTypes.
///
/// The instance types to exclude.
///
///
///
/// You can use strings with one or more wild cards, represented by an asterisk (*
),
/// to exclude an instance type, size, or generation. The following are examples: m5.8xlarge
,
/// c5*.*
, m5a.*
, r*
, *3*
.
///
///
///
/// For example, if you specify c5*
,Amazon EC2 will exclude the entire C5
/// instance family, which includes all C5a and C5n instance types. If you specify m5a.*
,
/// Amazon EC2 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
///
///
[AWSProperty(Min=0, Max=400)]
public List ExcludedInstanceTypes
{
get { return this._excludedInstanceTypes; }
set { this._excludedInstanceTypes = value; }
}
// Check to see if ExcludedInstanceTypes property is set
internal bool IsSetExcludedInstanceTypes()
{
return this._excludedInstanceTypes != null && this._excludedInstanceTypes.Count > 0;
}
///
/// Gets and sets the property InstanceGenerations.
///
/// Indicates whether current or previous generation instance types are included. The
/// current generation instance types are recommended for use. Current generation instance
/// types are typically the latest two to three generations in each instance family. For
/// more information, see Instance
/// types in the Amazon EC2 User Guide.
///
///
///
/// For current generation instance types, specify current
.
///
///
///
/// For previous generation instance types, specify previous
.
///
///
///
/// Default: Current and previous generation instance types
///
///
public List InstanceGenerations
{
get { return this._instanceGenerations; }
set { this._instanceGenerations = value; }
}
// Check to see if InstanceGenerations property is set
internal bool IsSetInstanceGenerations()
{
return this._instanceGenerations != null && this._instanceGenerations.Count > 0;
}
///
/// Gets and sets the property LocalStorage.
///
/// Indicates whether instance types with instance store volumes are included, excluded,
/// or required. For more information, Amazon
/// EC2 instance store in the Amazon EC2 User Guide.
///
/// -
///
/// To include instance types with instance store volumes, specify
included
.
///
/// -
///
/// To require only instance types with instance store volumes, specify
required
.
///
/// -
///
/// To exclude instance types with instance store volumes, specify
excluded
.
///
///
///
/// Default: included
///
///
public LocalStorage LocalStorage
{
get { return this._localStorage; }
set { this._localStorage = value; }
}
// Check to see if LocalStorage property is set
internal bool IsSetLocalStorage()
{
return this._localStorage != null;
}
///
/// Gets and sets the property LocalStorageTypes.
///
/// 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: hdd
and ssd
///
///
public List LocalStorageTypes
{
get { return this._localStorageTypes; }
set { this._localStorageTypes = value; }
}
// Check to see if LocalStorageTypes property is set
internal bool IsSetLocalStorageTypes()
{
return this._localStorageTypes != null && this._localStorageTypes.Count > 0;
}
///
/// Gets and sets the property MemoryGiBPerVCpu.
///
/// The minimum and maximum amount of memory per vCPU, in GiB.
///
///
///
/// Default: No minimum or maximum limits
///
///
public MemoryGiBPerVCpu MemoryGiBPerVCpu
{
get { return this._memoryGiBPerVCpu; }
set { this._memoryGiBPerVCpu = value; }
}
// Check to see if MemoryGiBPerVCpu property is set
internal bool IsSetMemoryGiBPerVCpu()
{
return this._memoryGiBPerVCpu != null;
}
///
/// Gets and sets the property MemoryMiB.
///
/// The minimum and maximum amount of memory, in MiB.
///
///
public MemoryMiB MemoryMiB
{
get { return this._memoryMiB; }
set { this._memoryMiB = value; }
}
// Check to see if MemoryMiB property is set
internal bool IsSetMemoryMiB()
{
return this._memoryMiB != null;
}
///
/// Gets and sets the property NetworkBandwidthGbps.
///
/// The minimum and maximum amount of network bandwidth, in gigabits per second (Gbps).
///
///
///
/// Default: No minimum or maximum limits
///
///
public NetworkBandwidthGbps NetworkBandwidthGbps
{
get { return this._networkBandwidthGbps; }
set { this._networkBandwidthGbps = value; }
}
// Check to see if NetworkBandwidthGbps property is set
internal bool IsSetNetworkBandwidthGbps()
{
return this._networkBandwidthGbps != null;
}
///
/// Gets and sets the property NetworkInterfaceCount.
///
/// The minimum and maximum number of network interfaces.
///
///
///
/// Default: No minimum or maximum limits
///
///
public NetworkInterfaceCount NetworkInterfaceCount
{
get { return this._networkInterfaceCount; }
set { this._networkInterfaceCount = value; }
}
// Check to see if NetworkInterfaceCount property is set
internal bool IsSetNetworkInterfaceCount()
{
return this._networkInterfaceCount != null;
}
///
/// Gets and sets the property 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.
///
///
///
/// To turn off price protection, specify a high value, such as 999999
.
///
///
///
/// This parameter is not supported for GetSpotPlacementScores
/// and GetInstanceTypesFromInstanceRequirements.
///
///
///
/// If you set TargetCapacityUnitType
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
///
///
public int OnDemandMaxPricePercentageOverLowestPrice
{
get { return this._onDemandMaxPricePercentageOverLowestPrice.GetValueOrDefault(); }
set { this._onDemandMaxPricePercentageOverLowestPrice = value; }
}
// Check to see if OnDemandMaxPricePercentageOverLowestPrice property is set
internal bool IsSetOnDemandMaxPricePercentageOverLowestPrice()
{
return this._onDemandMaxPricePercentageOverLowestPrice.HasValue;
}
///
/// Gets and sets the property RequireHibernateSupport.
///
/// Indicates whether instance types must support hibernation for On-Demand Instances.
///
///
///
/// This parameter is not supported for GetSpotPlacementScores.
///
///
///
/// Default: false
///
///
public bool RequireHibernateSupport
{
get { return this._requireHibernateSupport.GetValueOrDefault(); }
set { this._requireHibernateSupport = value; }
}
// Check to see if RequireHibernateSupport property is set
internal bool IsSetRequireHibernateSupport()
{
return this._requireHibernateSupport.HasValue;
}
///
/// Gets and sets the property 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.
///
///
///
/// To turn off price protection, specify a high value, such as 999999
.
///
///
///
/// This parameter is not supported for GetSpotPlacementScores
/// and GetInstanceTypesFromInstanceRequirements.
///
///
///
/// If you set TargetCapacityUnitType
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
///
///
public int SpotMaxPricePercentageOverLowestPrice
{
get { return this._spotMaxPricePercentageOverLowestPrice.GetValueOrDefault(); }
set { this._spotMaxPricePercentageOverLowestPrice = value; }
}
// Check to see if SpotMaxPricePercentageOverLowestPrice property is set
internal bool IsSetSpotMaxPricePercentageOverLowestPrice()
{
return this._spotMaxPricePercentageOverLowestPrice.HasValue;
}
///
/// Gets and sets the property TotalLocalStorageGB.
///
/// The minimum and maximum amount of total local storage, in GB.
///
///
///
/// Default: No minimum or maximum limits
///
///
public TotalLocalStorageGB TotalLocalStorageGB
{
get { return this._totalLocalStorageGB; }
set { this._totalLocalStorageGB = value; }
}
// Check to see if TotalLocalStorageGB property is set
internal bool IsSetTotalLocalStorageGB()
{
return this._totalLocalStorageGB != null;
}
///
/// Gets and sets the property VCpuCount.
///
/// The minimum and maximum number of vCPUs.
///
///
public VCpuCountRange VCpuCount
{
get { return this._vCpuCount; }
set { this._vCpuCount = value; }
}
// Check to see if VCpuCount property is set
internal bool IsSetVCpuCount()
{
return this._vCpuCount != null;
}
}
}