/* * 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 autoscaling-2011-01-01.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.AutoScaling.Model { /// /// Use this structure to specify the distribution of On-Demand Instances and Spot Instances /// and the allocation strategies used to fulfill On-Demand and Spot capacities for a /// mixed instances policy. /// public partial class InstancesDistribution { private string _onDemandAllocationStrategy; private int? _onDemandBaseCapacity; private int? _onDemandPercentageAboveBaseCapacity; private string _spotAllocationStrategy; private int? _spotInstancePools; private string _spotMaxPrice; /// /// Gets and sets the property OnDemandAllocationStrategy. /// /// The allocation strategy to apply to your On-Demand Instances when they are launched. /// Possible instance types are determined by the launch template overrides that you specify. /// /// /// /// The following lists the valid values: /// ///
lowest-price
/// /// Uses price to determine which instance types are the highest priority, launching the /// lowest priced instance types within an Availability Zone first. This is the default /// value for Auto Scaling groups that specify InstanceRequirements. /// ///
prioritized
/// /// You set the order of instance types for the launch template overrides from highest /// to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling launches /// your highest priority instance types first. If all your On-Demand capacity cannot /// be fulfilled using your highest priority instance type, then Amazon EC2 Auto Scaling /// launches the remaining capacity using the second priority instance type, and so on. /// This is the default value for Auto Scaling groups that don't specify InstanceRequirements /// and cannot be used for groups that do. /// ///
///
public string OnDemandAllocationStrategy { get { return this._onDemandAllocationStrategy; } set { this._onDemandAllocationStrategy = value; } } // Check to see if OnDemandAllocationStrategy property is set internal bool IsSetOnDemandAllocationStrategy() { return this._onDemandAllocationStrategy != null; } /// /// Gets and sets the property OnDemandBaseCapacity. /// /// The minimum amount of the Auto Scaling group's capacity that must be fulfilled by /// On-Demand Instances. This base portion is launched first as your group scales. /// /// /// /// This number has the same unit of measurement as the group's desired capacity. If you /// change the default unit of measurement (number of instances) by specifying weighted /// capacity values in your launch template overrides list, or by changing the default /// desired capacity type setting of the group, you must specify this number using the /// same unit of measurement. /// /// /// /// Default: 0 /// /// public int OnDemandBaseCapacity { get { return this._onDemandBaseCapacity.GetValueOrDefault(); } set { this._onDemandBaseCapacity = value; } } // Check to see if OnDemandBaseCapacity property is set internal bool IsSetOnDemandBaseCapacity() { return this._onDemandBaseCapacity.HasValue; } /// /// Gets and sets the property OnDemandPercentageAboveBaseCapacity. /// /// Controls the percentages of On-Demand Instances and Spot Instances for your additional /// capacity beyond OnDemandBaseCapacity. Expressed as a number (for example, /// 20 specifies 20% On-Demand Instances, 80% Spot Instances). If set to 100, only On-Demand /// Instances are used. /// /// /// /// Default: 100 /// /// public int OnDemandPercentageAboveBaseCapacity { get { return this._onDemandPercentageAboveBaseCapacity.GetValueOrDefault(); } set { this._onDemandPercentageAboveBaseCapacity = value; } } // Check to see if OnDemandPercentageAboveBaseCapacity property is set internal bool IsSetOnDemandPercentageAboveBaseCapacity() { return this._onDemandPercentageAboveBaseCapacity.HasValue; } /// /// Gets and sets the property SpotAllocationStrategy. /// /// The allocation strategy to apply to your Spot Instances when they are launched. Possible /// instance types are determined by the launch template overrides that you specify. /// /// /// /// The following lists the valid values: /// ///
capacity-optimized
/// /// Requests Spot Instances using pools that are optimally chosen based on the available /// Spot capacity. This strategy has the lowest risk of interruption. To give certain /// instance types a higher chance of launching first, use capacity-optimized-prioritized. /// ///
capacity-optimized-prioritized
/// /// You set the order of instance types for the launch template overrides from highest /// to lowest priority (from first to last in the list). Amazon EC2 Auto Scaling honors /// the instance type priorities on a best effort basis but optimizes for capacity first. /// Note that if the On-Demand allocation strategy is set to prioritized, /// the same priority is applied when fulfilling On-Demand capacity. This is not a valid /// value for Auto Scaling groups that specify InstanceRequirements. /// ///
lowest-price
/// /// Requests Spot Instances using the lowest priced pools within an Availability Zone, /// across the number of Spot pools that you specify for the SpotInstancePools /// property. To ensure that your desired capacity is met, you might receive Spot Instances /// from several pools. This is the default value, but it might lead to high interruption /// rates because this strategy only considers instance price and not available capacity. /// ///
price-capacity-optimized (recommended)
/// /// The price and capacity optimized allocation strategy looks at both price and capacity /// to select the Spot Instance pools that are the least likely to be interrupted and /// have the lowest possible price. /// ///
///
public string SpotAllocationStrategy { get { return this._spotAllocationStrategy; } set { this._spotAllocationStrategy = value; } } // Check to see if SpotAllocationStrategy property is set internal bool IsSetSpotAllocationStrategy() { return this._spotAllocationStrategy != null; } /// /// Gets and sets the property 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. Valid /// only when the SpotAllocationStrategy is lowest-price. Value /// must be in the range of 1–20. /// /// /// /// Default: 2 /// /// public int SpotInstancePools { get { return this._spotInstancePools.GetValueOrDefault(); } set { this._spotInstancePools = value; } } // Check to see if SpotInstancePools property is set internal bool IsSetSpotInstancePools() { return this._spotInstancePools.HasValue; } /// /// Gets and sets the property SpotMaxPrice. /// /// The maximum price per unit hour that you are willing to pay for a Spot Instance. If /// your maximum price is lower than the Spot price for the instance types that you selected, /// your Spot Instances are not launched. We do not recommend specifying a maximum price /// because it can lead to increased interruptions. When Spot Instances launch, you pay /// the current Spot price. To remove a maximum price that you previously set, include /// the property but specify an empty string ("") for the value. /// /// /// /// If you specify a maximum price, your instances will be interrupted more frequently /// than if you do not specify one. /// /// /// /// Valid Range: Minimum value of 0.001 /// /// [AWSProperty(Min=0, Max=255)] public string SpotMaxPrice { get { return this._spotMaxPrice; } set { this._spotMaxPrice = value; } } // Check to see if SpotMaxPrice property is set internal bool IsSetSpotMaxPrice() { return this._spotMaxPrice != null; } } }