

# 使用基于 CloudWatch 警报的预定义增量扩展 Amazon ECS 服务
<a name="service-autoscaling-stepscaling"></a>

利用分布扩缩策略，可以创建和管理调用扩缩过程的 CloudWatch 警报。当警报被触发时，Amazon ECS 会启动与该警报关联的扩缩策略。步进扩缩策略使用一组调整（称为步进调整）来扩展任务。调整的大小将根据超出警报阈值的规模而变化。
+ 如果违例超过第一个阈值，Amazon ECS 将应用第一步调整。
+ 如果违例超过第二个阈值，Amazon ECS 将应用第二步调整，以此类推。

强烈建议您使用目标跟踪扩缩策略，根据类似于平均 CPU 利用率或每个目标的平均请求数等指标进行扩展。使用目标跟踪，可以通过在容量增加时减少以及在容量减少时增加的指标，按比例横向扩展或缩减任务数。这有助于确保 Amazon ECS 密切遵循应用程序的需求曲线。

# 为 Amazon ECS 服务自动扩缩创建步进扩缩策略
<a name="step-scaling-create-policy"></a>

创建步进扩缩策略，以便 Amazon ECS 自动增加或减少服务中所需的任务数。步进扩缩基于一组扩缩调整（称作步进调整），这些调整因警报违例大小而异。

## 控制台
<a name="step-scaling-create-policy-aws-console"></a>

1. 除了用于创建和更新服务的标准 IAM 权限之外，您还需要额外权限。有关更多信息，请参阅 [Amazon ECS 服务自动扩缩所需的 IAM 权限](auto-scaling-IAM.md)。

1. 请确定要用于策略的指标。可供使用的指标如下：
   +  **ECSServiceAverageCPUUtilization**：服务应使用的平均 CPU 使用率。
   + **ECSServiceAverageMemoryUtilization**：服务应使用的平均内存使用率。
   + **ALBRequestCountPerTarget**：任务理想情况下应接收的平均每分钟请求数。

1. 为指标创建 CloudWatch 警报。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[根据静态阈值创建 CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)。

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 在 **Clusters**（集群）页面上，选择集群。

1. 在“集群详细信息”页面，找到**服务**部分，然后选择服务。

   此时系统会显示服务详细信息页面。

1. 选择**设置任务数**。

1. 在 **Amazon ECS 服务任务计数**下，选择**使用自动扩缩**。

   此时将显示**任务计数部分**。

   1. 对于**最小任务数**，输入供服务自动扩缩使用的任务数的下限。所需计数不会低于此计数。

   1. 对于**最大值**，输入供服务自动扩缩使用的任务数的上限。所需计数不会高于此计数。

   1. 选择**保存**。

      此时将显示策略页面。

1. 选择**创建扩缩策略**。

   此时将显示**创建策略**页面。

1. 对于**扩缩策略类型**，选择**步进扩缩**。

1. 配置横向扩展属性。在**添加任务的步骤**下，执行以下操作：

   1. 对于 **Policy name**（策略名称），请输入策略的名称。

   1. 在 **CloudWatch 警报名称**中，选择 CloudWatch 警报。

   1. 对于**指标聚合类型**，选择如何将所选指标与定义的阈值进行比较。

   1. 对于**调整类型**，选择是基于任务数的变化还是基于任务百分比的变化进行调整。

   1. 对于**要采取的操作**，输入要采取的操作的值。

      选择**添加步骤**以添加其他操作。

1. 配置横向缩减属性。在**移除任务的步骤**下，执行以下操作：

   1. 对于 **Policy name**（策略名称），请输入策略的名称。

   1. 在 **CloudWatch 警报名称**中，选择 CloudWatch 警报。

   1. 对于**指标聚合类型**，选择如何将所选指标与定义的阈值进行比较。

   1. 对于**调整类型**，选择是基于任务数的变化还是基于任务百分比的变化进行调整。

   1. 对于**要采取的操作**，输入要采取的操作的值。

      选择**添加步骤**以添加其他操作。

1. 对于**冷却时间**，输入等待先前的扩展活动生效的时间（以秒为单位）。对于添加策略，该时间是在横向扩展活动之后，扩展策略阻止横向缩减活动并限制一次可以横向扩展的任务数量的时间。对于移除策略，该时间是横向缩减活动结束后，在另一个横向缩减活动可以开始前经过的时间。

1. 选择**创建扩缩策略**。

## AWS CLI
<a name="step-scaling-create-policy-aws-cli"></a>

1. 使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令将 Amazon ECS 服务注册为可扩展目标。

1. 使用 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令创建扩展策略。