/* * 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 { /// /// Container for the parameters to the PutScalingPolicy operation. /// Creates or updates a scaling policy for an Auto Scaling group. Scaling policies are /// used to scale an Auto Scaling group based on configurable metrics. If no policies /// are defined, the dynamic scaling and predictive scaling features are not used. /// /// /// /// For more information about using dynamic scaling, see Target /// tracking scaling policies and Step /// and simple scaling policies in the Amazon EC2 Auto Scaling User Guide. /// /// /// /// For more information about using predictive scaling, see Predictive /// scaling for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide. /// /// /// /// You can view the scaling policies for an Auto Scaling group using the DescribePolicies /// API call. If you are no longer using a scaling policy, you can delete it by calling /// the DeletePolicy API. /// /// public partial class PutScalingPolicyRequest : AmazonAutoScalingRequest { private string _adjustmentType; private string _autoScalingGroupName; private int? _cooldown; private bool? _enabled; private int? _estimatedInstanceWarmup; private string _metricAggregationType; private int? _minAdjustmentMagnitude; private int? _minAdjustmentStep; private string _policyName; private string _policyType; private PredictiveScalingConfiguration _predictiveScalingConfiguration; private int? _scalingAdjustment; private List _stepAdjustments = new List(); private TargetTrackingConfiguration _targetTrackingConfiguration; /// /// Gets and sets the property AdjustmentType. /// /// Specifies how the scaling adjustment is interpreted (for example, an absolute number /// or a percentage). The valid values are ChangeInCapacity, ExactCapacity, /// and PercentChangeInCapacity. /// /// /// /// Required if the policy type is StepScaling or SimpleScaling. /// For more information, see Scaling /// adjustment types in the Amazon EC2 Auto Scaling User Guide. /// /// [AWSProperty(Min=1, Max=255)] public string AdjustmentType { get { return this._adjustmentType; } set { this._adjustmentType = value; } } // Check to see if AdjustmentType property is set internal bool IsSetAdjustmentType() { return this._adjustmentType != null; } /// /// Gets and sets the property AutoScalingGroupName. /// /// The name of the Auto Scaling group. /// /// [AWSProperty(Required=true, Min=1, Max=255)] public string AutoScalingGroupName { get { return this._autoScalingGroupName; } set { this._autoScalingGroupName = value; } } // Check to see if AutoScalingGroupName property is set internal bool IsSetAutoScalingGroupName() { return this._autoScalingGroupName != null; } /// /// Gets and sets the property Cooldown. /// /// A cooldown period, in seconds, that applies to a specific simple scaling policy. When /// a cooldown period is specified here, it overrides the default cooldown. /// /// /// /// Valid only if the policy type is SimpleScaling. For more information, /// see Scaling /// cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide. /// /// /// /// Default: None /// /// public int Cooldown { get { return this._cooldown.GetValueOrDefault(); } set { this._cooldown = value; } } // Check to see if Cooldown property is set internal bool IsSetCooldown() { return this._cooldown.HasValue; } /// /// Gets and sets the property Enabled. /// /// Indicates whether the scaling policy is enabled or disabled. The default is enabled. /// For more information, see Disabling /// a scaling policy for an Auto Scaling group in the Amazon EC2 Auto Scaling User /// Guide. /// /// public bool Enabled { get { return this._enabled.GetValueOrDefault(); } set { this._enabled = value; } } // Check to see if Enabled property is set internal bool IsSetEnabled() { return this._enabled.HasValue; } /// /// Gets and sets the property EstimatedInstanceWarmup. /// /// Not needed if the default instance warmup is defined for the group. /// /// /// /// The estimated time, in seconds, until a newly launched instance can contribute to /// the CloudWatch metrics. This warm-up period applies to instances launched due to a /// specific target tracking or step scaling policy. When a warm-up period is specified /// here, it overrides the default instance warmup. /// /// /// /// Valid only if the policy type is TargetTrackingScaling or StepScaling. /// /// /// /// The default is to use the value for the default instance warmup defined for the group. /// If default instance warmup is null, then EstimatedInstanceWarmup falls /// back to the value of default cooldown. /// /// /// public int EstimatedInstanceWarmup { get { return this._estimatedInstanceWarmup.GetValueOrDefault(); } set { this._estimatedInstanceWarmup = value; } } // Check to see if EstimatedInstanceWarmup property is set internal bool IsSetEstimatedInstanceWarmup() { return this._estimatedInstanceWarmup.HasValue; } /// /// Gets and sets the property MetricAggregationType. /// /// The aggregation type for the CloudWatch metrics. The valid values are Minimum, /// Maximum, and Average. If the aggregation type is null, the /// value is treated as Average. /// /// /// /// Valid only if the policy type is StepScaling. /// /// [AWSProperty(Min=1, Max=32)] public string MetricAggregationType { get { return this._metricAggregationType; } set { this._metricAggregationType = value; } } // Check to see if MetricAggregationType property is set internal bool IsSetMetricAggregationType() { return this._metricAggregationType != null; } /// /// Gets and sets the property MinAdjustmentMagnitude. /// /// The minimum value to scale by when the adjustment type is PercentChangeInCapacity. /// For example, suppose that you create a step scaling policy to scale out an Auto Scaling /// group by 25 percent and you specify a MinAdjustmentMagnitude of 2. If /// the group has 4 instances and the scaling policy is performed, 25 percent of 4 is /// 1. However, because you specified a MinAdjustmentMagnitude of 2, Amazon /// EC2 Auto Scaling scales out the group by 2 instances. /// /// /// /// Valid only if the policy type is StepScaling or SimpleScaling. /// For more information, see Scaling /// adjustment types in the Amazon EC2 Auto Scaling User Guide. /// /// /// /// Some Auto Scaling groups use instance weights. In this case, set the MinAdjustmentMagnitude /// to a value that is at least as large as your largest instance weight. /// /// /// public int MinAdjustmentMagnitude { get { return this._minAdjustmentMagnitude.GetValueOrDefault(); } set { this._minAdjustmentMagnitude = value; } } // Check to see if MinAdjustmentMagnitude property is set internal bool IsSetMinAdjustmentMagnitude() { return this._minAdjustmentMagnitude.HasValue; } /// /// Gets and sets the property MinAdjustmentStep. /// /// Available for backward compatibility. Use MinAdjustmentMagnitude instead. /// /// public int MinAdjustmentStep { get { return this._minAdjustmentStep.GetValueOrDefault(); } set { this._minAdjustmentStep = value; } } // Check to see if MinAdjustmentStep property is set internal bool IsSetMinAdjustmentStep() { return this._minAdjustmentStep.HasValue; } /// /// Gets and sets the property PolicyName. /// /// The name of the policy. /// /// [AWSProperty(Required=true, Min=1, Max=255)] public string PolicyName { get { return this._policyName; } set { this._policyName = value; } } // Check to see if PolicyName property is set internal bool IsSetPolicyName() { return this._policyName != null; } /// /// Gets and sets the property PolicyType. /// /// One of the following policy types: /// ///
  • /// /// TargetTrackingScaling /// ///
  • /// /// StepScaling /// ///
  • /// /// SimpleScaling (default) /// ///
  • /// /// PredictiveScaling /// ///
///
[AWSProperty(Min=1, Max=64)] public string PolicyType { get { return this._policyType; } set { this._policyType = value; } } // Check to see if PolicyType property is set internal bool IsSetPolicyType() { return this._policyType != null; } /// /// Gets and sets the property PredictiveScalingConfiguration. /// /// A predictive scaling policy. Provides support for predefined and custom metrics. /// /// /// /// Predefined metrics include CPU utilization, network in/out, and the Application Load /// Balancer request count. /// /// /// /// For more information, see PredictiveScalingConfiguration /// in the Amazon EC2 Auto Scaling API Reference. /// /// /// /// Required if the policy type is PredictiveScaling. /// /// public PredictiveScalingConfiguration PredictiveScalingConfiguration { get { return this._predictiveScalingConfiguration; } set { this._predictiveScalingConfiguration = value; } } // Check to see if PredictiveScalingConfiguration property is set internal bool IsSetPredictiveScalingConfiguration() { return this._predictiveScalingConfiguration != null; } /// /// Gets and sets the property ScalingAdjustment. /// /// The amount by which to scale, based on the specified adjustment type. A positive value /// adds to the current capacity while a negative number removes from the current capacity. /// For exact capacity, you must specify a non-negative value. /// /// /// /// Required if the policy type is SimpleScaling. (Not used with any other /// policy type.) /// /// public int ScalingAdjustment { get { return this._scalingAdjustment.GetValueOrDefault(); } set { this._scalingAdjustment = value; } } // Check to see if ScalingAdjustment property is set internal bool IsSetScalingAdjustment() { return this._scalingAdjustment.HasValue; } /// /// Gets and sets the property StepAdjustments. /// /// A set of adjustments that enable you to scale based on the size of the alarm breach. /// /// /// /// Required if the policy type is StepScaling. (Not used with any other /// policy type.) /// /// public List StepAdjustments { get { return this._stepAdjustments; } set { this._stepAdjustments = value; } } // Check to see if StepAdjustments property is set internal bool IsSetStepAdjustments() { return this._stepAdjustments != null && this._stepAdjustments.Count > 0; } /// /// Gets and sets the property TargetTrackingConfiguration. /// /// A target tracking scaling policy. Provides support for predefined or custom metrics. /// /// /// /// The following predefined metrics are available: /// ///
  • /// /// ASGAverageCPUUtilization /// ///
  • /// /// ASGAverageNetworkIn /// ///
  • /// /// ASGAverageNetworkOut /// ///
  • /// /// ALBRequestCountPerTarget /// ///
/// /// If you specify ALBRequestCountPerTarget for the metric, you must specify /// the ResourceLabel property with the PredefinedMetricSpecification. /// /// /// /// For more information, see TargetTrackingConfiguration /// in the Amazon EC2 Auto Scaling API Reference. /// /// /// /// Required if the policy type is TargetTrackingScaling. /// ///
public TargetTrackingConfiguration TargetTrackingConfiguration { get { return this._targetTrackingConfiguration; } set { this._targetTrackingConfiguration = value; } } // Check to see if TargetTrackingConfiguration property is set internal bool IsSetTargetTrackingConfiguration() { return this._targetTrackingConfiguration != null; } } }