/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include Describes an instances distribution for an Auto Scaling group with a
* MixedInstancesPolicy. The instances distribution specifies the
* distribution of On-Demand Instances and Spot Instances, the maximum price to pay
* for Spot Instances, and how the Auto Scaling group allocates instance types to
* fulfill On-Demand and Spot capacity. When you update
* SpotAllocationStrategy, SpotInstancePools, or
* SpotMaxPrice, this update action does not deploy any changes across
* the running Amazon EC2 instances in the group. Your existing Spot Instances
* continue to run as long as the maximum price for those instances is higher than
* the current Spot price. When scale out occurs, Amazon EC2 Auto Scaling launches
* instances based on the new settings. When scale in occurs, Amazon EC2 Auto
* Scaling terminates instances according to the group's termination
* policies.See Also:
AWS
* API Reference
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
Indicates how to allocate instance types to fulfill On-Demand capacity.
*The only valid value is prioritized, which is also the default
* value. This strategy uses the order of instance type overrides for the
* LaunchTemplate to define the launch priority of each instance type. The
* first instance type in the array is prioritized higher than the last. If all
* your On-Demand capacity cannot be fulfilled using your highest priority
* instance, then the Auto Scaling groups launches the remaining capacity using the
* second priority instance type, and so on.
The minimum amount of the Auto Scaling group's capacity that must be * fulfilled by On-Demand Instances. This base portion is provisioned first as your * group scales.
Default if not set is 0. If you leave it set to 0,
* On-Demand Instances are launched as a percentage of the Auto Scaling group's
* desired capacity, per the OnDemandPercentageAboveBaseCapacity
* setting.
An update to this setting means a gradual replacement of * instances to maintain the specified number of On-Demand Instances for your base * capacity. When replacing instances, Amazon EC2 Auto Scaling launches new * instances before terminating the old ones.
*/ inline int GetOnDemandBaseCapacity() const{ return m_onDemandBaseCapacity; } /** *The minimum amount of the Auto Scaling group's capacity that must be * fulfilled by On-Demand Instances. This base portion is provisioned first as your * group scales.
Default if not set is 0. If you leave it set to 0,
* On-Demand Instances are launched as a percentage of the Auto Scaling group's
* desired capacity, per the OnDemandPercentageAboveBaseCapacity
* setting.
An update to this setting means a gradual replacement of * instances to maintain the specified number of On-Demand Instances for your base * capacity. When replacing instances, Amazon EC2 Auto Scaling launches new * instances before terminating the old ones.
*/ inline bool OnDemandBaseCapacityHasBeenSet() const { return m_onDemandBaseCapacityHasBeenSet; } /** *The minimum amount of the Auto Scaling group's capacity that must be * fulfilled by On-Demand Instances. This base portion is provisioned first as your * group scales.
Default if not set is 0. If you leave it set to 0,
* On-Demand Instances are launched as a percentage of the Auto Scaling group's
* desired capacity, per the OnDemandPercentageAboveBaseCapacity
* setting.
An update to this setting means a gradual replacement of * instances to maintain the specified number of On-Demand Instances for your base * capacity. When replacing instances, Amazon EC2 Auto Scaling launches new * instances before terminating the old ones.
*/ inline void SetOnDemandBaseCapacity(int value) { m_onDemandBaseCapacityHasBeenSet = true; m_onDemandBaseCapacity = value; } /** *The minimum amount of the Auto Scaling group's capacity that must be * fulfilled by On-Demand Instances. This base portion is provisioned first as your * group scales.
Default if not set is 0. If you leave it set to 0,
* On-Demand Instances are launched as a percentage of the Auto Scaling group's
* desired capacity, per the OnDemandPercentageAboveBaseCapacity
* setting.
An update to this setting means a gradual replacement of * instances to maintain the specified number of On-Demand Instances for your base * capacity. When replacing instances, Amazon EC2 Auto Scaling launches new * instances before terminating the old ones.
*/ inline InstancesDistribution& WithOnDemandBaseCapacity(int value) { SetOnDemandBaseCapacity(value); return *this;} /** *Controls the percentages of On-Demand Instances and Spot Instances for your
* additional capacity beyond OnDemandBaseCapacity.
Default if * not set is 100. If you leave it set to 100, the percentages are 100% for * On-Demand Instances and 0% for Spot Instances.
An update to this * setting means a gradual replacement of instances to maintain the percentage of * On-Demand Instances for your additional capacity above the base capacity. When * replacing instances, Amazon EC2 Auto Scaling launches new instances before * terminating the old ones.
Valid Range: Minimum value of 0. * Maximum value of 100.
*/ inline int GetOnDemandPercentageAboveBaseCapacity() const{ return m_onDemandPercentageAboveBaseCapacity; } /** *Controls the percentages of On-Demand Instances and Spot Instances for your
* additional capacity beyond OnDemandBaseCapacity.
Default if * not set is 100. If you leave it set to 100, the percentages are 100% for * On-Demand Instances and 0% for Spot Instances.
An update to this * setting means a gradual replacement of instances to maintain the percentage of * On-Demand Instances for your additional capacity above the base capacity. When * replacing instances, Amazon EC2 Auto Scaling launches new instances before * terminating the old ones.
Valid Range: Minimum value of 0. * Maximum value of 100.
*/ inline bool OnDemandPercentageAboveBaseCapacityHasBeenSet() const { return m_onDemandPercentageAboveBaseCapacityHasBeenSet; } /** *Controls the percentages of On-Demand Instances and Spot Instances for your
* additional capacity beyond OnDemandBaseCapacity.
Default if * not set is 100. If you leave it set to 100, the percentages are 100% for * On-Demand Instances and 0% for Spot Instances.
An update to this * setting means a gradual replacement of instances to maintain the percentage of * On-Demand Instances for your additional capacity above the base capacity. When * replacing instances, Amazon EC2 Auto Scaling launches new instances before * terminating the old ones.
Valid Range: Minimum value of 0. * Maximum value of 100.
*/ inline void SetOnDemandPercentageAboveBaseCapacity(int value) { m_onDemandPercentageAboveBaseCapacityHasBeenSet = true; m_onDemandPercentageAboveBaseCapacity = value; } /** *Controls the percentages of On-Demand Instances and Spot Instances for your
* additional capacity beyond OnDemandBaseCapacity.
Default if * not set is 100. If you leave it set to 100, the percentages are 100% for * On-Demand Instances and 0% for Spot Instances.
An update to this * setting means a gradual replacement of instances to maintain the percentage of * On-Demand Instances for your additional capacity above the base capacity. When * replacing instances, Amazon EC2 Auto Scaling launches new instances before * terminating the old ones.
Valid Range: Minimum value of 0. * Maximum value of 100.
*/ inline InstancesDistribution& WithOnDemandPercentageAboveBaseCapacity(int value) { SetOnDemandPercentageAboveBaseCapacity(value); return *this;} /** *Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
Indicates how to allocate instances across Spot Instance pools.
If the
* allocation strategy is lowest-price, the Auto Scaling group
* launches instances using the Spot pools with the lowest price, and evenly
* allocates your instances across the number of Spot pools that you specify. If
* the allocation strategy is capacity-optimized, the Auto Scaling
* group launches instances using Spot pools that are optimally chosen based on the
* available Spot capacity.
The default Spot allocation strategy for calls
* that you make through the API, the AWS CLI, or the AWS SDKs is
* lowest-price. The default Spot allocation strategy for the AWS
* Management Console is capacity-optimized.
Valid values:
* lowest-price | capacity-optimized
The number of Spot Instance pools across which to allocate your Spot * Instances. The Spot pools are determined from the different instance types in * the Overrides array of LaunchTemplate. Default if not set is 2.
*Used only when the Spot allocation strategy is lowest-price.
Valid Range: Minimum value of 1. Maximum value of 20.
*/ inline int GetSpotInstancePools() const{ return m_spotInstancePools; } /** *The number of Spot Instance pools across which to allocate your Spot * Instances. The Spot pools are determined from the different instance types in * the Overrides array of LaunchTemplate. Default if not set is 2.
*Used only when the Spot allocation strategy is lowest-price.
Valid Range: Minimum value of 1. Maximum value of 20.
*/ inline bool SpotInstancePoolsHasBeenSet() const { return m_spotInstancePoolsHasBeenSet; } /** *The number of Spot Instance pools across which to allocate your Spot * Instances. The Spot pools are determined from the different instance types in * the Overrides array of LaunchTemplate. Default if not set is 2.
*Used only when the Spot allocation strategy is lowest-price.
Valid Range: Minimum value of 1. Maximum value of 20.
*/ inline void SetSpotInstancePools(int value) { m_spotInstancePoolsHasBeenSet = true; m_spotInstancePools = value; } /** *The number of Spot Instance pools across which to allocate your Spot * Instances. The Spot pools are determined from the different instance types in * the Overrides array of LaunchTemplate. Default if not set is 2.
*Used only when the Spot allocation strategy is lowest-price.
Valid Range: Minimum value of 1. Maximum value of 20.
*/ inline InstancesDistribution& WithSpotInstancePools(int value) { SetSpotInstancePools(value); return *this;} /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline const Aws::String& GetSpotMaxPrice() const{ return m_spotMaxPrice; } /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline bool SpotMaxPriceHasBeenSet() const { return m_spotMaxPriceHasBeenSet; } /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline void SetSpotMaxPrice(const Aws::String& value) { m_spotMaxPriceHasBeenSet = true; m_spotMaxPrice = value; } /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline void SetSpotMaxPrice(Aws::String&& value) { m_spotMaxPriceHasBeenSet = true; m_spotMaxPrice = std::move(value); } /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline void SetSpotMaxPrice(const char* value) { m_spotMaxPriceHasBeenSet = true; m_spotMaxPrice.assign(value); } /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline InstancesDistribution& WithSpotMaxPrice(const Aws::String& value) { SetSpotMaxPrice(value); return *this;} /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline InstancesDistribution& WithSpotMaxPrice(Aws::String&& value) { SetSpotMaxPrice(std::move(value)); return *this;} /** *The maximum price per unit hour that you are willing to pay for a Spot * Instance. If you leave the value of this parameter blank (which is the default), * the maximum Spot price is set at the On-Demand price.
To remove a value * that you previously set, include the parameter but leave the value blank.
*/ inline InstancesDistribution& WithSpotMaxPrice(const char* value) { SetSpotMaxPrice(value); return *this;} private: Aws::String m_onDemandAllocationStrategy; bool m_onDemandAllocationStrategyHasBeenSet; int m_onDemandBaseCapacity; bool m_onDemandBaseCapacityHasBeenSet; int m_onDemandPercentageAboveBaseCapacity; bool m_onDemandPercentageAboveBaseCapacityHasBeenSet; Aws::String m_spotAllocationStrategy; bool m_spotAllocationStrategyHasBeenSet; int m_spotInstancePools; bool m_spotInstancePoolsHasBeenSet; Aws::String m_spotMaxPrice; bool m_spotMaxPriceHasBeenSet; }; } // namespace Model } // namespace AutoScaling } // namespace Aws