Skip to content

ScalingPolicy ​

The ScalingPolicy resource lets you manage AWS ApplicationAutoScaling ScalingPolicys for automatically adjusting the capacity of scalable resources.

Minimal Example ​

Create a basic scaling policy for an ECS service with target tracking.

ts
import AWS from "alchemy/aws/control";

const scalingPolicy = await AWS.ApplicationAutoScaling.ScalingPolicy("ecsServiceScalingPolicy", {
  PolicyType: "TargetTrackingScaling",
  PolicyName: "ecsServiceScalingPolicy",
  ResourceId: "service/default/sample-ecs-service",
  ScalableDimension: "ecs:Service:DesiredCount",
  ServiceNamespace: "ecs",
  TargetTrackingScalingPolicyConfiguration: {
    TargetValue: 50.0,
    PredefinedMetricSpecification: {
      PredefinedMetricType: "ECSServiceAverageCPUUtilization"
    },
    ScaleOutCooldown: 60,
    ScaleInCooldown: 60
  }
});

Advanced Configuration ​

Configure a scaling policy with step scaling adjustments.

ts
const stepScalingPolicy = await AWS.ApplicationAutoScaling.ScalingPolicy("stepScalingPolicy", {
  PolicyType: "StepScaling",
  PolicyName: "stepScalingPolicy",
  ResourceId: "app/my-application",
  ScalableDimension: "elasticmapreduce:InstanceGroup:DesiredSize",
  ServiceNamespace: "elasticmapreduce",
  StepScalingPolicyConfiguration: {
    AdjustmentType: "PercentChangeInCapacity",
    StepAdjustments: [
      {
        MetricIntervalLowerBound: 0,
        ScalingAdjustment: 10
      },
      {
        MetricIntervalLowerBound: 10,
        ScalingAdjustment: 20
      }
    ],
    Cooldown: 300
  }
});

Predictive Scaling ​

Set up a predictive scaling policy for an application.

ts
const predictiveScalingPolicy = await AWS.ApplicationAutoScaling.ScalingPolicy("predictiveScalingPolicy", {
  PolicyType: "PredictiveScaling",
  PolicyName: "predictiveScalingPolicy",
  ResourceId: "application/my-app",
  ScalableDimension: "dynamodb:table:ReadCapacityUnits",
  ServiceNamespace: "dynamodb",
  PredictiveScalingPolicyConfiguration: {
    PredictiveScalingMaxCapacity: 20,
    PredictiveScalingMinCapacity: 5,
    PredictiveScalingMode: "ForecastAndScale",
    ScheduledActionBufferTime: 300
  }
});

This document provides a practical guide to creating and configuring scaling policies using AWS ApplicationAutoScaling with Alchemy, helping you to effectively manage resource scaling in your applications.