Table of Contents

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

Properties

AdjustmentType

Specifies how the scaling adjustment is interpreted (for example, an absolute number or a percentage).

string? AdjustmentType { get; }

Property Value

string

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 .

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-adjustmenttype

AutoScalingGroupName

The name of the Auto Scaling group.

string AutoScalingGroupName { get; }

Property Value

string

Remarks

Cooldown

A cooldown period, in seconds, that applies to a specific simple scaling policy.

string? Cooldown { get; }

Property Value

string

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

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-cooldown

EstimatedInstanceWarmup

Not needed if the default instance warmup is defined for the group..

double? EstimatedInstanceWarmup { get; }

Property Value

double?

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.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-estimatedinstancewarmup

MetricAggregationType

The aggregation type for the CloudWatch metrics.

string? MetricAggregationType { get; }

Property Value

string

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 .

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-metricaggregationtype

MinAdjustmentMagnitude

The minimum value to scale by when the adjustment type is PercentChangeInCapacity .

double? MinAdjustmentMagnitude { get; }

Property Value

double?

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.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-minadjustmentmagnitude

PolicyType

One of the following policy types:.

string? PolicyType { get; }

Property Value

string

Remarks

PredictiveScalingConfiguration

A predictive scaling policy. Provides support for predefined and custom metrics.

object? PredictiveScalingConfiguration { get; }

Property Value

object

Remarks

Predefined metrics include CPU utilization, network in/out, and the Application Load Balancer request count.

Required if the policy type is PredictiveScaling .

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-predictivescalingconfiguration

ScalingAdjustment

The amount by which to scale, based on the specified adjustment type.

double? ScalingAdjustment { get; }

Property Value

double?

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.)

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-scalingadjustment

StepAdjustments

A set of adjustments that enable you to scale based on the size of the alarm breach.

object? StepAdjustments { get; }

Property Value

object

Remarks

TargetTrackingConfiguration

A target tracking scaling policy. Provides support for predefined or custom metrics.

object? TargetTrackingConfiguration { get; }

Property Value

object

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 .

    Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-scalingpolicy.html#cfn-autoscaling-scalingpolicy-targettrackingconfiguration