

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为横向缩减创建步进扩缩策略
<a name="step-scaling-create-scale-in-policy"></a>

要为您的自动扩缩组创建横向缩减的步进扩缩策略，请使用以下方法之一：

------
#### [ Console ]

**步骤 1：为指标低阈值创建 CloudWatch 警报**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 如果需要，可以更改区域。从导航栏中，选择您的自动扩缩组所在的区域。

1. 在导航窗格中，选择 **Alarms, All alarms**（警报，所有警报），然后选择 **Create alarm**（创建警报）。

1. 选择**选择指标**。

1. 在 **All metrics**（所有指标）选项卡上，选择 **EC2**、**By Auto Scaling Group**（按 Auto Scaling 组），然后在搜索字段中输入 Auto Scaling 组的名称。然后，选择 `CPUUtilization` 并选择 **Select metric**（选择指标）。将显示 **Specify metric and conditions**（指定指标和条件）页面，其中显示一个图表以及有关指标的其他信息。

1. 在 **Period**（周期）下，选择警报的评估周期，例如 1 分钟。评估警报时，每个周期都聚合到一个数据点。
**注意**  
周期越短，创建的警报越敏感。

1. 在 **Conditions**（条件）下，执行以下操作：
   + 对于 **Threshold type**（阈值类型），选择 **Static**（静态）。
   + 对于**每当 `CPUUtilization` 为**，请指定您是希望指标值小于还是小于等于阈值以触发警报。然后，在 **than**（大于/小于）下，输入您希望超过警报的阈值。
**重要**  
要使警报与横向缩减策略（警报的低阈值）一起使用，请确保不要选择大于或大于等于阈值。

1. 在**其他配置**下，执行以下操作：
   + 对于 **Datapoints to alarm**（触发警报的数据点数），输入指标值必须满足阈值条件才会触发警报的数据点（评估时间段）数。例如，2 个连续的 5 分钟时间段需要花 10 分钟才会调用警报状态。
   + 对于 **Missing data treatment**（缺失数据处理），选择 **Treat missing data as bad (breaching threshold)**（将丢失的数据视为不良数据（违反阈值））。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[配置 CloudWatch 警报如何处理丢失的数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)。

1. 选择**下一步**。

   **Configure actions**（配置操作）页面会显示。

1. 在 **Notification**（通知）下面，选择一个在警报处于 `ALARM`、`OK` 或 `INSUFFICIENT_DATA` 状态时通知的 Amazon SNS 主题。

   要使告警为相同告警状态或不同告警状态发送多个通知，请选择**添加通知**。

   要让警报不发送通知，请选择**删除**。

1. 您可以保留 **Configure actions**（配置操作）页面的其他部分为空。将其他部分留空会创建警报，而不会将其与扩展策略相关联。然后，您可以从 Amazon EC2 Auto Scaling 控制台将警报与扩展策略关联。

1. 选择**下一步**。

1. 输入警报的名称（例如，`Step-Scaling-AlarmLow-RemoveCapacity`）和可选的描述，然后选择 **Next**（下一步）。

1. 选择**创建警报**。

创建 CloudWatch 警报后，按照以下步骤继续从上次中断的地方继续。

**步骤 2：为横向缩减创建步进扩缩策略**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 选中您的自动扩缩组旁边的复选框。

   这时将在页面底部打开一个拆分窗格。

1. 验证是否正确设置了扩缩限制。例如，如果您的组所需容量已经是最小，则需要指定一个新的最小值才能横向缩减。有关更多信息，请参阅 [为自动扩缩组设置扩缩限制](asg-capacity-limits.md)。

1. 在 **Automatic scaling**（自动扩展）选项卡的 **Dynamic scaling policies**（动态扩展策略）中，选择 **Create dynamic scaling policy**（创建动态扩展策略）。

1. 对于**策略类型**，选择**步进扩展**，然后指定该策略的名称。

1. 要获得**CloudWatch 警报**，请选择您的闹钟。如果您尚未创建警报，请选择**创建警 CloudWatch 报，然后完成上一个**过程中的步骤 4 到步骤 14 以创建警报。

1. 指定在使用 **Take the action (执行操作)** 来完成操作时，此策略对当前组大小进行的更改。您可以删除特定数量的实例或现有组大小的百分比，也可将组设置为准确的大小。

   例如，要创建将组容量减少两个实例的横向缩减策略，请选择 `Remove`，在下一个字段中输入 `2`，然后选择 `capacity units`。默认情况下，此步骤调整的上限为警报阈值，下限为负 (-) 无穷。

1. 要添加另一个步骤，请选择 **Add step (添加步进)**，然后定义要缩放的量以及步进相对于警报阈值的下限和上限。

1. 选择**创建**。

------
#### [ AWS CLI ]

要创建横向缩减（减少容量）的步进扩缩策略，可以使用以下示例命令。将每个 *user input placeholder* 替换为您自己的信息。

使用时 AWS CLI，首先要创建分步扩展策略，该策略向 Amazon EC2 Auto Scaling 提供有关在指标值减少时如何缩减的说明。然后，通过确定要监控的指标、为警报定义指标的低阈值和其他详细信息，并将警报与扩缩策略关联，您可以创建警报。

**步骤 1：为横向缩减创建策略**  
使用以下[put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)命令创建名为的分步扩展策略`my-step-scale-in-policy`，其调整类型为，当关联的`ChangeInCapacity` CloudWatch 警报违反指标低阈值时，该策略会将组的容量减少 2 个实例。

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-in-policy \
  --policy-type StepScaling \
  --adjustment-type ChangeInCapacity \
  --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2
```

记下策略的 Amazon Resource Name (ARN)。您需要它来为策略创建 CloudWatch 警报。

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-step-scale-out-policy
}
```

**步骤 2：为指标低阈值创建 CloudWatch 警报**  
使用以下 CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html)命令创建警报，根据平均 CPU 阈值 40% 减小 Auto Scaling 组的大小，至少连续两个评估周期（两分钟）。要使用您自己的自定义指标，请在 `--metric-name` 中指定其名称，并在 `--namespace` 指定其命名空间。

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmLow-RemoveCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 40 \
  --comparison-operator LessThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------