ScalingPolicy ​
The ScalingPolicy resource lets you manage AWS AutoScaling ScalingPolicys for automatically scaling your resources based on demand.
Minimal Example ​
Create a basic scaling policy that adjusts the desired capacity of an Auto Scaling group.
ts
import AWS from "alchemy/aws/control";
const basicScalingPolicy = await AWS.AutoScaling.ScalingPolicy("basicScalingPolicy", {
AutoScalingGroupName: "my-auto-scaling-group",
ScalingAdjustment: 1,
AdjustmentType: "ChangeInCapacity",
Cooldown: "300"
});
Advanced Configuration ​
Configure a scaling policy with step adjustments and a cooldown period for more fine-tuned scaling behavior.
ts
const advancedScalingPolicy = await AWS.AutoScaling.ScalingPolicy("advancedScalingPolicy", {
AutoScalingGroupName: "my-auto-scaling-group",
AdjustmentType: "ChangeInCapacity",
StepAdjustments: [
{
MetricIntervalLowerBound: 0,
MetricIntervalUpperBound: 10,
ScalingAdjustment: 2
},
{
MetricIntervalLowerBound: 10,
ScalingAdjustment: 3
}
],
Cooldown: "300"
});
Predictive Scaling Configuration ​
Create a scaling policy that includes predictive scaling configuration to proactively adjust capacity based on forecasted demand.
ts
const predictiveScalingPolicy = await AWS.AutoScaling.ScalingPolicy("predictiveScalingPolicy", {
AutoScalingGroupName: "my-auto-scaling-group",
PredictiveScalingConfiguration: {
PredefinedMetricPairSpecification: {
PredefinedMetricType: "ASGAverageCPUUtilization",
ResourceLabel: "my-auto-scaling-group"
},
TargetValue: 50.0,
EstimatedInstanceWarmup: 300
},
ScalingAdjustment: 2,
AdjustmentType: "ChangeInCapacity"
});
Target Tracking Configuration ​
Establish a scaling policy that uses target tracking to maintain a specific metric, such as average CPU utilization.
ts
const targetTrackingScalingPolicy = await AWS.AutoScaling.ScalingPolicy("targetTrackingScalingPolicy", {
AutoScalingGroupName: "my-auto-scaling-group",
TargetTrackingConfiguration: {
TargetValue: 50.0,
PredefinedMetricSpecification: {
PredefinedMetricType: "ASGAverageCPUUtilization"
},
ScaleInCooldown: 300,
ScaleOutCooldown: 300
}
});