Skip to content

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
  }
});