AWS CloudFormation
用户指南 (API 版本 2010-05-15)

AWS::AutoScaling::ScalingPolicy

在 Amazon EC2 Auto Scaling 组中添加扩展策略。扩展策略将指明是增加还是减少 Auto Scaling 组,以及增加或减少的数量。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的动态扩展

您可以将扩展策略与 CloudWatch 警报配合使用。CloudWatch 警报可以根据您指定的参数自动为您发起操作。扩展策略就是警报可以发起的操作类型之一。有关说明如何创建由 CloudWatch 警报触发的 Auto Scaling 策略的代码段,请参阅 CloudWatch 警报触发的 Auto Scaling 策略。请注意,您只能将一个扩展策略与警报关联。

此类型支持更新。有关更新该资源的更多信息,请参阅 Amazon EC2 Auto Scaling API 参考 中的 PutScalingPolicy

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : String, "AutoScalingGroupName" : String, "Cooldown" : String, "EstimatedInstanceWarmup" : Integer, "MetricAggregationType" : String, "MinAdjustmentMagnitude" : Integer, "PolicyType" : String, "ScalingAdjustment" : Integer, "StepAdjustments" : [ StepAdjustments, ... ], "TargetTrackingConfiguration" : TargetTrackingConfiguration } }

属性

AdjustmentType

指定 ScalingAdjustment 是绝对数还是当前容量所占的百分比。有效值包括 ChangeInCapacityExactCapacityPercentChangeInCapacity

Required: No

Type: String

更新要求无需中断

AutoScalingGroupName

您希望将策略附加到的 Auto Scaling 组的名称或 Amazon 资源名称 (ARN)。

Required: Yes

Type: String

更新要求无需中断

Cooldown

从一项扩展活动完成到其他与触发相关的扩展活动开始之间的时长(秒)。

如果使用了 StepScaling 策略类型,则不要指定该属性。

Required: No

Type: String

更新要求无需中断

EstimatedInstanceWarmup

新启动的实例可向 CloudWatch 发送指标的估计时间 (以秒为单位)。默认情况下,Amazon EC2 Auto Scaling 使用在 Cooldown 属性中指定的冷却时间。

如果使用了 SimpleScaling 策略类型,则不要指定该属性。

Required: No

Type: Integer

更新要求无需中断

MetricAggregationType

CloudWatch 指标的聚合类型。可以指定 MinimumMaximumAverage。默认情况下,AWS CloudFormation 将指定 Average

如果使用了 SimpleScaling 策略类型,则不要指定该属性。

Required: No

Type: String

更新要求无需中断

MinAdjustmentMagnitude

对于 PercentChangeInCapacity 调整类型,此为要扩展的最少实例数。扩展策略通过此最少实例数更改 Auto Scaling 组的所需容量。该属性替代 MinAdjustmentStep 属性。

Required: No

Type: Integer

更新要求无需中断

PolicyType

Auto Scaling 策略类型。可以指定 SimpleScalingStepScalingTargetTrackingScaling。默认情况下,AWS CloudFormation 将指定 SimpleScaling。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的动态扩展

Required: No

Type: String

更新要求无需中断

ScalingAdjustment

要扩展的实例数量。AdjustmentType 属性确定 AWS CloudFormation 是将该数字解释为绝对数值(在指定 ExactCapacity 值时),将容量增加或减小指定的数值(在指定 ChangeInCapacity 值时),还是按现有 Auto Scaling 组大小的百分比增加或减少容量(在指定 PercentChangeInCapacity 值时)。正值会为当前容量增加相应容量,负值则会从当前容量中减去相应容量。对于确切的容量,必须指定正值。

Required: Conditional.如果策略类型为 SimpleScaling,则该属性是必需的。其他策略类型均不支持该属性。

Type: Integer

更新要求无需中断

StepAdjustments

让您能够根据警报违例的规模进行扩展的一组调整设置。

Required: Conditional.如果策略类型为 StepScaling,则该属性是必需的。其他策略类型均不支持该属性。

Type: Amazon EC2 Auto Scaling ScalingPolicy StepAdjustments 列表

更新要求无需中断

TargetTrackingConfiguration

配置一个目标跟踪扩展策略。

Required: Conditional.如果策略类型为 TargetTrackingScaling,则该属性是必需的。其他策略类型均不支持该属性。

Type: Amazon EC2 Auto Scaling ScalingPolicy TargetTrackingConfiguration

更新要求无需中断

返回值

在将 AWS::AutoScaling::ScalingPolicy 类型指定为 Ref 函数的参数时,AWS CloudFormation 返回策略 Amazon 资源名称 (ARN),如 arn:aws:autoscaling:us-east-2:123456789012:scalingPolicy:ab12c4d5-a1b2-a1b2-a1b2-ab12c4d56789:autoScalingGroupName/myStack-AutoScalingGroup-AB12C4D5E6:policyName/myStack-myScalingPolicy-AB12C4D5E6

有关使用 Ref 功能的更多信息,请参阅参考

示例

简单策略类型

以下示例是一个简单的扩展策略,它在触发时增加一个实例。

JSON

"SimpleScaling" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : "ChangeInCapacity", "PolicyType" : "SimpleScaling", "Cooldown" : "60", "AutoScalingGroupName" : { "Ref" : "ASG" }, "ScalingAdjustment" : 1 } }

YAML

SimpleScaling: Type: AWS::AutoScaling::ScalingPolicy Properties: AdjustmentType: "ChangeInCapacity" PolicyType: "SimpleScaling" Cooldown: "60" AutoScalingGroupName: Ref: "ASG" ScalingAdjustment: 1

分步策略类型

以下示例是一个分步扩展策略,它在触发时增加一个或两个实例,具体视警报违例的规模而定。对于高于阈值不足 50 个单位的违例,此策略增加一个实例。对于高于阈值 50 或更多单位的违例,此策略增加两个实例。

JSON

"StepScaling" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AdjustmentType" : "ChangeInCapacity", "AutoScalingGroupName" : { "Ref" : "ASG" }, "PolicyType" : "StepScaling", "MetricAggregationType" : "Average", "EstimatedInstanceWarmup" : "60", "StepAdjustments": [ { "MetricIntervalLowerBound": "0", "MetricIntervalUpperBound" : "50", "ScalingAdjustment": "1" }, { "MetricIntervalLowerBound": "50", "ScalingAdjustment": "2" } ] } }

YAML

StepScaling: Type: AWS::AutoScaling::ScalingPolicy Properties: AdjustmentType: "ChangeInCapacity" AutoScalingGroupName: Ref: "ASG" PolicyType: "StepScaling" MetricAggregationType: "Average" EstimatedInstanceWarmup: "60" StepAdjustments: - MetricIntervalLowerBound: "0" MetricIntervalUpperBound: "50" ScalingAdjustment: "1" - MetricIntervalLowerBound: "50" ScalingAdjustment: "2"

目标跟踪扩展策略类型

以下示例是一个基于 ASGAverageCPUUtilization 指标的目标跟踪扩展策略。

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "AMI" : { "Type" : "String" }, "Subnets": { "Type" : "CommaDelimitedList" }, "AZs": { "Type" : "CommaDelimitedList" }, "PolicyTargetValue": { "Type" : "String" } }, "Resources" : { "LC" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : { "Ref" : "AMI" }, "InstanceType" : "t2.large" } }, "POL" : { "Type" : "AWS::AutoScaling::ScalingPolicy", "Properties" : { "AutoScalingGroupName" : { "Ref" : "ASG" }, "PolicyType" : "TargetTrackingScaling", "TargetTrackingConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" }, "TargetValue": {"Ref": "PolicyTargetValue"} } } }, "ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "MaxSize" : "1", "AvailabilityZones": { "Ref": "AZs" }, "VPCZoneIdentifier": { "Ref" : "Subnets" }, "MinSize" : "0", "DesiredCapacity" : "0", "LaunchConfigurationName" : { "Ref" : "LC" } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Parameters: AMI: Type: String Subnets: Type: CommaDelimitedList AZs: Type: CommaDelimitedList PolicyTargetValue: Type: String Resources: LC: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: !Ref AMI InstanceType: t2.large POL: Type: AWS::AutoScaling::ScalingPolicy Properties: AutoScalingGroupName: !Ref ASG PolicyType: TargetTrackingScaling TargetTrackingConfiguration: PredefinedMetricSpecification: PredefinedMetricType: ASGAverageCPUUtilization TargetValue: !Ref PolicyTargetValue ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: MaxSize: '1' AvailabilityZones: !Ref AZs VPCZoneIdentifier: !Ref Subnets MinSize: '0' DesiredCapacity: '0' LaunchConfigurationName: !Ref LC

本页内容: