# StepScalingPolicyProps

Extends: StepScalingPolicyProps
Extends: BasicStepScalingPolicyProps
Used as props by: StepScalingPolicy

- Source: [`aws-applicationautoscaling/lib/step-scaling-policy.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-applicationautoscaling/lib/step-scaling-policy.ts#L91)
- Type last changed: v2.234.0 · 8 Jan 2026

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import * as cdk from 'aws-cdk-lib';
import { aws_applicationautoscaling as appscaling } from 'aws-cdk-lib';
import { aws_cloudwatch as cloudwatch } from 'aws-cdk-lib';
import { aws_applicationautoscaling as interfaces_applicationautoscaling } from 'aws-cdk-lib/interfaces';

declare const metric: cloudwatch.Metric;
declare const scalableTargetRef: interfaces_applicationautoscaling.IScalableTargetRef;
const stepScalingPolicyProps: appscaling.StepScalingPolicyProps = {
  metric: metric,
  scalingSteps: [{
    change: 123,

    // the properties below are optional
    lower: 123,
    upper: 123,
  }],
  scalingTarget: scalableTargetRef,

  // the properties below are optional
  adjustmentType: appscaling.AdjustmentType.CHANGE_IN_CAPACITY,
  cooldown: cdk.Duration.minutes(30),
  datapointsToAlarm: 123,
  evaluationPeriods: 123,
  metricAggregationType: appscaling.MetricAggregationType.AVERAGE,
  minAdjustmentMagnitude: 123,
};
```

## Properties

- `adjustmentType`: [AdjustmentType](/cdk/api/v2/docs/aws-cdk-lib.aws_applicationautoscaling.AdjustmentType.html) = ChangeInCapacity — How the adjustment numbers inside 'intervals' are interpreted.

- `cooldown`: [Duration](/cdk/api/v2/docs/aws-cdk-lib.Duration.html) — Grace period after scaling activity.

  **Default:** No cooldown period

  Subsequent scale outs during the cooldown period are squashed so that only
  the biggest scale out happens.

  Subsequent scale ins during the cooldown period are ignored.

- `datapointsToAlarm`: number — The number of data points out of the evaluation periods that must be breaching to trigger a scaling action.

  **Default:** Same as `evaluationPeriods`

  Creates an "M out of N" alarm, where this property is the M and the value set for
  `evaluationPeriods` is the N value.

  Only has meaning if `evaluationPeriods != 1`.

- `evaluationPeriods`: number = 1 — How many evaluation periods of the metric to wait before triggering a scaling action.

  Raising this value can be used to smooth out the metric, at the expense
  of slower response times.

  If `datapointsToAlarm` is not set, then all data points in the evaluation period
  must meet the criteria to trigger a scaling action.

- `metric`: [IMetric](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudwatch.IMetric.html) (required) — Metric to scale on.

- `metricAggregationType`: [MetricAggregationType](/cdk/api/v2/docs/aws-cdk-lib.aws_applicationautoscaling.MetricAggregationType.html) — Aggregation to apply to all data points over the evaluation periods.

  **Default:** The statistic from the metric if applicable (MIN, MAX, AVERAGE), otherwise AVERAGE.

  Only has meaning if `evaluationPeriods != 1`.

- `minAdjustmentMagnitude`: number — Minimum absolute number to adjust capacity with as result of percentage scaling.

  **Default:** No minimum scaling effect

  Only when using AdjustmentType = PercentChangeInCapacity, this number controls
  the minimum absolute effect size.

- `scalingSteps`: [ScalingInterval](/cdk/api/v2/docs/aws-cdk-lib.aws_applicationautoscaling.ScalingInterval.html)[] (required) — The intervals for scaling.

  Maps a range of metric values to a particular scaling behavior.

  Must be between 2 and 40 steps.

- `scalingTarget`: [IScalableTargetRef](/cdk/api/v2/docs/aws-cdk-lib.interfaces.aws_applicationautoscaling.IScalableTargetRef.html) (required) — The scaling target.
