

# 为 Amazon ECS 服务自动扩缩创建计划操作
<a name="scheduled-action-create-policy"></a>

创建计划操作，可让 Amazon ECS 根据日期和时间增加或减少服务运行的任务数。

## 控制台
<a name="scheduled-action-policy-aws-console"></a>

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

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

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

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

1. 选择**服务自动扩缩**。

   此时将显示“服务自动扩缩”页面。

1. 如果您尚未配置服务自动扩缩，请选择**设置任务数**。

   此时将显示 **Amazon ECS 服务任务数**部分。

   在 **Amazon ECS 服务任务数**下，选择**使用服务自动扩缩来调整服务所需的任务数**。

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

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

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

   1. 选择**选择“保存”**。

      此时将显示策略页面。

1. 选择**计划操作**，然后选择**创建**。

   此时将显示**创建计划操作**页面。

1. 对于 **操作名称**，输入唯一的名称。

1. 对于**时区**，请选择时区。

   列出的所有时区均来自 IANA 时区数据库。有关详细信息，请参阅 [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。

1. 对于**启动时间**，输入操作启动的**日期**和**时间**。

   如果您选择了循环计划，则开始时间将定义循环系列中第一个计划操作的运行时间。

1. 对于**循环**，请选择下列可用选项之一。
   + 要按重复性计划进行扩展，请选择 Amazon ECS 运行计划操作的频率。
     + 如果您选择以 **Rate** 开头的选项，则将为您创建 cron 表达式。
     + 如果您选择 **Cron**，请输入 cron 表达式，此表达式指定了执行操作的时间。
   + 如果只想扩展一次，请选择**一次**。

1. 在**任务调整**下，执行以下操作：
   + 在**最小值**中，输入服务应运行的最小任务数。
   + 在**最大值**中，输入服务应运行的最大任务数。

1. 选择**创建计划操作**。

## CLI
<a name="scheduled-action-aws-cli"></a>

按如下所示，使用 Amazon CLI 为服务配置计划的扩展策略。将每个{{用户输入占位符}}替换为您自己的信息。

**示例：仅扩展一次**  
使用以下 [put-scheduled-action](https://docs.amazonaws.cn/cli/latest/reference/application-autoscaling/put-scheduled-action.html) 命令和 `--start-time "YYYY-MM-DDThh:mm:ssZ"`，以及 `--MinCapacity` 和（或）`--MaxCapacity` 选项。

```
aws application-autoscaling put-scheduled-action --service-namespace ecs \
  --resource-id service/{{my-cluster}}/{{my-service}} \
  --scheduled-action-name {{my-one-time-schedule}} \
  --start-time {{2021-01-30T12:00:00}} \
  --scalable-target-action MinCapacity={{3}},MaxCapacity={{10}}
```

**示例：根据周期性计划来计划扩展**  
使用以下 [put-scheduled-action](https://docs.amazonaws.cn/cli/latest/reference/application-autoscaling/put-scheduled-action.html) 命令。将 {{user input}} 替换为您的值。

```
aws application-autoscaling put-scheduled-action --service-namespace ecs \
  --resource-id service/{{my-cluster}}/{{my-service}} \
  --scheduled-action-name {{my-recurring-action}} \
  --schedule "rate({{5 hours}})" \
  --start-time {{2021-01-30T12:00:00}} \
  --end-time {{2021-01-31T22:00:00}} \
  --scalable-target-action MinCapacity={{3}},MaxCapacity={{10}}
```

指定的周期性计划会基于 UTC 时区运行。要指定不同的时区，请包含 `--time-zone` 选项和 IANA 时区的名称，如下例所示。

```
--time-zone "{{America/New_York}}"
```

有关详细信息，请参阅 [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。