Interface ICfnScalingPolicyProps
- Namespace
- Amazon.CDK.AWS.AutoScaling
- Assembly
- Amazon.CDK.AWS.AutoScaling.dll
Properties for defining a CfnScalingPolicy
.
public interface ICfnScalingPolicyProps
Examples
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
using Amazon.CDK.AWS.AutoScaling;
var cfnScalingPolicyProps = new CfnScalingPolicyProps {
AutoScalingGroupName = "autoScalingGroupName",
// the properties below are optional
AdjustmentType = "adjustmentType",
Cooldown = "cooldown",
EstimatedInstanceWarmup = 123,
MetricAggregationType = "metricAggregationType",
MinAdjustmentMagnitude = 123,
PolicyType = "policyType",
PredictiveScalingConfiguration = new PredictiveScalingConfigurationProperty {
MetricSpecifications = new [] { new PredictiveScalingMetricSpecificationProperty {
TargetValue = 123,
// the properties below are optional
CustomizedCapacityMetricSpecification = new PredictiveScalingCustomizedCapacityMetricProperty {
MetricDataQueries = new [] { new MetricDataQueryProperty {
Id = "id",
// the properties below are optional
Expression = "expression",
Label = "label",
MetricStat = new MetricStatProperty {
Metric = new MetricProperty {
MetricName = "metricName",
Namespace = "namespace",
// the properties below are optional
Dimensions = new [] { new MetricDimensionProperty {
Name = "name",
Value = "value"
} }
},
Stat = "stat",
// the properties below are optional
Unit = "unit"
},
ReturnData = false
} }
},
CustomizedLoadMetricSpecification = new PredictiveScalingCustomizedLoadMetricProperty {
MetricDataQueries = new [] { new MetricDataQueryProperty {
Id = "id",
// the properties below are optional
Expression = "expression",
Label = "label",
MetricStat = new MetricStatProperty {
Metric = new MetricProperty {
MetricName = "metricName",
Namespace = "namespace",
// the properties below are optional
Dimensions = new [] { new MetricDimensionProperty {
Name = "name",
Value = "value"
} }
},
Stat = "stat",
// the properties below are optional
Unit = "unit"
},
ReturnData = false
} }
},
CustomizedScalingMetricSpecification = new PredictiveScalingCustomizedScalingMetricProperty {
MetricDataQueries = new [] { new MetricDataQueryProperty {
Id = "id",
// the properties below are optional
Expression = "expression",
Label = "label",
MetricStat = new MetricStatProperty {
Metric = new MetricProperty {
MetricName = "metricName",
Namespace = "namespace",
// the properties below are optional
Dimensions = new [] { new MetricDimensionProperty {
Name = "name",
Value = "value"
} }
},
Stat = "stat",
// the properties below are optional
Unit = "unit"
},
ReturnData = false
} }
},
PredefinedLoadMetricSpecification = new PredictiveScalingPredefinedLoadMetricProperty {
PredefinedMetricType = "predefinedMetricType",
// the properties below are optional
ResourceLabel = "resourceLabel"
},
PredefinedMetricPairSpecification = new PredictiveScalingPredefinedMetricPairProperty {
PredefinedMetricType = "predefinedMetricType",
// the properties below are optional
ResourceLabel = "resourceLabel"
},
PredefinedScalingMetricSpecification = new PredictiveScalingPredefinedScalingMetricProperty {
PredefinedMetricType = "predefinedMetricType",
// the properties below are optional
ResourceLabel = "resourceLabel"
}
} },
// the properties below are optional
MaxCapacityBreachBehavior = "maxCapacityBreachBehavior",
MaxCapacityBuffer = 123,
Mode = "mode",
SchedulingBufferTime = 123
},
ScalingAdjustment = 123,
StepAdjustments = new [] { new StepAdjustmentProperty {
ScalingAdjustment = 123,
// the properties below are optional
MetricIntervalLowerBound = 123,
MetricIntervalUpperBound = 123
} },
TargetTrackingConfiguration = new TargetTrackingConfigurationProperty {
TargetValue = 123,
// the properties below are optional
CustomizedMetricSpecification = new CustomizedMetricSpecificationProperty {
MetricName = "metricName",
Namespace = "namespace",
Statistic = "statistic",
// the properties below are optional
Dimensions = new [] { new MetricDimensionProperty {
Name = "name",
Value = "value"
} },
Unit = "unit"
},
DisableScaleIn = false,
PredefinedMetricSpecification = new PredefinedMetricSpecificationProperty {
PredefinedMetricType = "predefinedMetricType",
// the properties below are optional
ResourceLabel = "resourceLabel"
}
}
};
Remarks
ExampleMetadata: fixture=_generated
Properties
AdjustmentType
Specifies how the scaling adjustment is interpreted (for example, an absolute number or a percentage).
string? AdjustmentType { get; }
Property Value
Remarks
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 .
AutoScalingGroupName
The name of the Auto Scaling group.
string AutoScalingGroupName { get; }
Property Value
Remarks
Cooldown
A cooldown period, in seconds, that applies to a specific simple scaling policy.
string? Cooldown { get; }
Property Value
Remarks
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
EstimatedInstanceWarmup
Not needed if the default instance warmup is defined for the group..
double? EstimatedInstanceWarmup { get; }
Property Value
Remarks
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 <code>EstimatedInstanceWarmup</code> falls back to the value of default cooldown.
MetricAggregationType
The aggregation type for the CloudWatch metrics.
string? MetricAggregationType { get; }
Property Value
Remarks
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
.
MinAdjustmentMagnitude
The minimum value to scale by when the adjustment type is PercentChangeInCapacity
.
double? MinAdjustmentMagnitude { get; }
Property Value
Remarks
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 <code>MinAdjustmentMagnitude</code> to a value that is at least as large as your largest instance weight.
PolicyType
One of the following policy types:.
string? PolicyType { get; }
Property Value
Remarks
PredictiveScalingConfiguration
A predictive scaling policy. Provides support for predefined and custom metrics.
object? PredictiveScalingConfiguration { get; }
Property Value
Remarks
Predefined metrics include CPU utilization, network in/out, and the Application Load Balancer request count.
Required if the policy type is PredictiveScaling
.
ScalingAdjustment
The amount by which to scale, based on the specified adjustment type.
double? ScalingAdjustment { get; }
Property Value
Remarks
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.)
StepAdjustments
A set of adjustments that enable you to scale based on the size of the alarm breach.
object? StepAdjustments { get; }
Property Value
Remarks
Required if the policy type is StepScaling
. (Not used with any other policy type.)
TargetTrackingConfiguration
A target tracking scaling policy. Provides support for predefined or custom metrics.
object? TargetTrackingConfiguration { get; }
Property Value
Remarks
The following predefined metrics are available:
If you specify ALBRequestCountPerTarget
for the metric, you must specify the ResourceLabel
property with the PredefinedMetricSpecification
.
Required if the policy type is TargetTrackingScaling
.