/* * 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 { /// /// Describes the configuration of Spot Instances in an EC2 Fleet. /// public partial class SpotOptions { private SpotAllocationStrategy _allocationStrategy; private SpotInstanceInterruptionBehavior _instanceInterruptionBehavior; private int? _instancePoolsToUseCount; private FleetSpotMaintenanceStrategies _maintenanceStrategies; private string _maxTotalPrice; private int? _minTargetCapacity; private bool? _singleAvailabilityZone; private bool? _singleInstanceType; /// /// Gets and sets the property AllocationStrategy. /// /// The strategy that determines how to allocate the target Spot Instance capacity across /// the Spot Instance pools specified by the EC2 Fleet launch configuration. For more /// information, see Allocation /// strategies for Spot Instances in the Amazon EC2 User Guide. /// ///
price-capacity-optimized (recommended)
/// /// EC2 Fleet identifies the pools with the highest capacity availability for the number /// of instances that are launching. This means that we will request Spot Instances from /// the pools that we believe have the lowest chance of interruption in the near term. /// EC2 Fleet then requests Spot Instances from the lowest priced of these pools. /// ///
capacity-optimized
/// /// EC2 Fleet identifies the pools with the highest capacity availability for the number /// of instances that are launching. This means that we will request Spot Instances from /// the pools that we believe have the lowest chance of interruption in the near term. /// To give certain instance types a higher chance of launching first, use capacity-optimized-prioritized. /// Set a priority for each instance type by using the Priority parameter /// for LaunchTemplateOverrides. You can assign the same priority to different /// LaunchTemplateOverrides. EC2 implements the priorities on a best-effort /// basis, but optimizes for capacity first. capacity-optimized-prioritized /// is supported only if your EC2 Fleet uses a launch template. Note that if the On-Demand /// AllocationStrategy is set to prioritized, the same priority /// is applied when fulfilling On-Demand capacity. /// ///
diversified
/// /// EC2 Fleet requests instances from all of the Spot Instance pools that you specify. /// ///
lowest-price
/// /// EC2 Fleet requests instances from the lowest priced Spot Instance pool that has available /// capacity. If the lowest priced pool doesn't have available capacity, the Spot Instances /// come from the next lowest priced pool that has available capacity. If a pool runs /// out of capacity before fulfilling your desired capacity, EC2 Fleet will continue to /// fulfill your request by drawing from the next lowest priced pool. To ensure that your /// desired capacity is met, you might receive Spot Instances from several pools. Because /// this strategy only considers instance price and not capacity availability, it might /// lead to high interruption rates. /// ///
/// /// Default: lowest-price /// ///
public SpotAllocationStrategy AllocationStrategy { get { return this._allocationStrategy; } set { this._allocationStrategy = value; } } // Check to see if AllocationStrategy property is set internal bool IsSetAllocationStrategy() { return this._allocationStrategy != null; } /// /// Gets and sets the property InstanceInterruptionBehavior. /// /// The behavior when a Spot Instance is interrupted. /// /// /// /// Default: terminate /// /// public SpotInstanceInterruptionBehavior InstanceInterruptionBehavior { get { return this._instanceInterruptionBehavior; } set { this._instanceInterruptionBehavior = value; } } // Check to see if InstanceInterruptionBehavior property is set internal bool IsSetInstanceInterruptionBehavior() { return this._instanceInterruptionBehavior != null; } /// /// Gets and sets the property InstancePoolsToUseCount. /// /// The number of Spot pools across which to allocate your target Spot capacity. Supported /// only when AllocationStrategy is set to lowest-price. EC2 /// Fleet selects the cheapest Spot pools and evenly allocates your target Spot capacity /// across the number of Spot pools that you specify. /// /// /// /// Note that EC2 Fleet attempts to draw Spot Instances from the number of pools that /// you specify on a best effort basis. If a pool runs out of Spot capacity before fulfilling /// your target capacity, EC2 Fleet will continue to fulfill your request by drawing from /// the next cheapest pool. To ensure that your target capacity is met, you might receive /// Spot Instances from more than the number of pools that you specified. Similarly, if /// most of the pools have no Spot capacity, you might receive your full target capacity /// from fewer than the number of pools that you specified. /// /// public int InstancePoolsToUseCount { get { return this._instancePoolsToUseCount.GetValueOrDefault(); } set { this._instancePoolsToUseCount = value; } } // Check to see if InstancePoolsToUseCount property is set internal bool IsSetInstancePoolsToUseCount() { return this._instancePoolsToUseCount.HasValue; } /// /// Gets and sets the property MaintenanceStrategies. /// /// The strategies for managing your workloads on your Spot Instances that will be interrupted. /// Currently only the capacity rebalance strategy is available. /// /// public FleetSpotMaintenanceStrategies MaintenanceStrategies { get { return this._maintenanceStrategies; } set { this._maintenanceStrategies = value; } } // Check to see if MaintenanceStrategies property is set internal bool IsSetMaintenanceStrategies() { return this._maintenanceStrategies != null; } /// /// Gets and sets the property MaxTotalPrice. /// /// The maximum amount per hour for Spot Instances that you're willing to pay. We do not /// recommend using this parameter because it can lead to increased interruptions. If /// you do not specify this parameter, you will pay the current Spot price. /// /// /// /// If you specify a maximum price, your Spot Instances will be interrupted more frequently /// than if you do not specify this parameter. /// /// /// public string MaxTotalPrice { get { return this._maxTotalPrice; } set { this._maxTotalPrice = value; } } // Check to see if MaxTotalPrice property is set internal bool IsSetMaxTotalPrice() { return this._maxTotalPrice != null; } /// /// Gets and sets the property MinTargetCapacity. /// /// The minimum target capacity for Spot Instances in the fleet. If the minimum target /// capacity is not reached, the fleet launches no instances. /// /// /// /// Supported only for fleets of type instant. /// /// /// /// At least one of the following must be specified: SingleAvailabilityZone /// | SingleInstanceType /// /// public int MinTargetCapacity { get { return this._minTargetCapacity.GetValueOrDefault(); } set { this._minTargetCapacity = value; } } // Check to see if MinTargetCapacity property is set internal bool IsSetMinTargetCapacity() { return this._minTargetCapacity.HasValue; } /// /// Gets and sets the property SingleAvailabilityZone. /// /// Indicates that the fleet launches all Spot Instances into a single Availability Zone. /// /// /// /// Supported only for fleets of type instant. /// /// public bool SingleAvailabilityZone { get { return this._singleAvailabilityZone.GetValueOrDefault(); } set { this._singleAvailabilityZone = value; } } // Check to see if SingleAvailabilityZone property is set internal bool IsSetSingleAvailabilityZone() { return this._singleAvailabilityZone.HasValue; } /// /// Gets and sets the property SingleInstanceType. /// /// Indicates that the fleet uses a single instance type to launch all Spot Instances /// in the fleet. /// /// /// /// Supported only for fleets of type instant. /// /// public bool SingleInstanceType { get { return this._singleInstanceType.GetValueOrDefault(); } set { this._singleInstanceType = value; } } // Check to see if SingleInstanceType property is set internal bool IsSetSingleInstanceType() { return this._singleInstanceType.HasValue; } } }