146 lines
4.2 KiB
TypeScript
146 lines
4.2 KiB
TypeScript
import { Construct } from 'constructs';
|
|
import * as cdk from '../../core';
|
|
import type { IScalableTargetRef } from '../../interfaces/generated/aws-applicationautoscaling-interfaces.generated';
|
|
/**
|
|
* Properties for a scaling policy
|
|
*/
|
|
export interface StepScalingActionProps {
|
|
/**
|
|
* The scalable target
|
|
*/
|
|
readonly scalingTarget: IScalableTargetRef;
|
|
/**
|
|
* A name for the scaling policy
|
|
*
|
|
* @default Automatically generated name
|
|
*/
|
|
readonly policyName?: string;
|
|
/**
|
|
* How the adjustment numbers are interpreted
|
|
*
|
|
* @default ChangeInCapacity
|
|
*/
|
|
readonly adjustmentType?: AdjustmentType;
|
|
/**
|
|
* Grace period after scaling activity.
|
|
*
|
|
* For scale out policies, multiple scale outs during the cooldown period are
|
|
* squashed so that only the biggest scale out happens.
|
|
*
|
|
* For scale in policies, subsequent scale ins during the cooldown period are
|
|
* ignored.
|
|
*
|
|
* @see https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html
|
|
* @default No cooldown period
|
|
*/
|
|
readonly cooldown?: cdk.Duration;
|
|
/**
|
|
* Minimum absolute number to adjust capacity with as result of percentage scaling.
|
|
*
|
|
* Only when using AdjustmentType = PercentChangeInCapacity, this number controls
|
|
* the minimum absolute effect size.
|
|
*
|
|
* @default No minimum scaling effect
|
|
*/
|
|
readonly minAdjustmentMagnitude?: number;
|
|
/**
|
|
* The aggregation type for the CloudWatch metrics.
|
|
*
|
|
* @default Average
|
|
*/
|
|
readonly metricAggregationType?: MetricAggregationType;
|
|
}
|
|
/**
|
|
* Define a step scaling action
|
|
*
|
|
* This kind of scaling policy adjusts the target capacity in configurable
|
|
* steps. The size of the step is configurable based on the metric's distance
|
|
* to its alarm threshold.
|
|
*
|
|
* This Action must be used as the target of a CloudWatch alarm to take effect.
|
|
*/
|
|
export declare class StepScalingAction extends Construct {
|
|
/**
|
|
* ARN of the scaling policy
|
|
*/
|
|
readonly scalingPolicyArn: string;
|
|
private readonly adjustments;
|
|
constructor(scope: Construct, id: string, props: StepScalingActionProps);
|
|
/**
|
|
* Add an adjustment interval to the ScalingAction
|
|
*/
|
|
addAdjustment(adjustment: AdjustmentTier): void;
|
|
}
|
|
/**
|
|
* How adjustment numbers are interpreted
|
|
*/
|
|
export declare enum AdjustmentType {
|
|
/**
|
|
* Add the adjustment number to the current capacity.
|
|
*
|
|
* A positive number increases capacity, a negative number decreases capacity.
|
|
*/
|
|
CHANGE_IN_CAPACITY = "ChangeInCapacity",
|
|
/**
|
|
* Add this percentage of the current capacity to itself.
|
|
*
|
|
* The number must be between -100 and 100; a positive number increases
|
|
* capacity and a negative number decreases it.
|
|
*/
|
|
PERCENT_CHANGE_IN_CAPACITY = "PercentChangeInCapacity",
|
|
/**
|
|
* Make the capacity equal to the exact number given.
|
|
*/
|
|
EXACT_CAPACITY = "ExactCapacity"
|
|
}
|
|
/**
|
|
* How the scaling metric is going to be aggregated
|
|
*/
|
|
export declare enum MetricAggregationType {
|
|
/**
|
|
* Average
|
|
*/
|
|
AVERAGE = "Average",
|
|
/**
|
|
* Minimum
|
|
*/
|
|
MINIMUM = "Minimum",
|
|
/**
|
|
* Maximum
|
|
*/
|
|
MAXIMUM = "Maximum"
|
|
}
|
|
/**
|
|
* An adjustment
|
|
*/
|
|
export interface AdjustmentTier {
|
|
/**
|
|
* What number to adjust the capacity with
|
|
*
|
|
* The number is interpreted as an added capacity, a new fixed capacity or an
|
|
* added percentage depending on the AdjustmentType value of the
|
|
* StepScalingPolicy.
|
|
*
|
|
* Can be positive or negative.
|
|
*/
|
|
readonly adjustment: number;
|
|
/**
|
|
* Lower bound where this scaling tier applies.
|
|
*
|
|
* The scaling tier applies if the difference between the metric
|
|
* value and its alarm threshold is higher than this value.
|
|
*
|
|
* @default -Infinity if this is the first tier, otherwise the upperBound of the previous tier
|
|
*/
|
|
readonly lowerBound?: number;
|
|
/**
|
|
* Upper bound where this scaling tier applies
|
|
*
|
|
* The scaling tier applies if the difference between the metric
|
|
* value and its alarm threshold is lower than this value.
|
|
*
|
|
* @default +Infinity
|
|
*/
|
|
readonly upperBound?: number;
|
|
}
|