

# 使用 Amazon EventBridge 调度器计划 Amazon ECS 任务
<a name="tasks-scheduled-eventbridge-scheduler"></a>

EventBridge 调度器是一个无服务器调度器，使您能够从一个中央托管服务创建、运行和管理任务。它提供独立于事件总线和规则的一次性和重复性计划功能。EventBridge Scheduler 具有高度可定制性，与 EventBridge 计划规则相比，可扩展性更高，目标 API 操作和 AWS 服务范围更广。EventBridge Scheduler 提供以下计划，您可以在 EventBridge Scheduler 控制台中为您的任务配置这些计划：
+ 基于速率 
+ 基于 Cron

  您可以在任何时区配置基于 cron 的计划。
+ 一次性计划

  您可以在任何时区配置一次性的计划。

您可以使用 Amazon EventBridge 调度器计划 Amazon ECS。

尽管您可以在 Amazon ECS 控制台中创建计划任务，但目前 EventBridge 调度器控制台提供了更多功能。

在计划任务之前，完成以下步骤：

1. 使用 VPC 控制台，获取任务运行所在的子网 ID 和子网的安全组 ID。有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 的子网](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html)和[使用安全组控制指向 AWS 资源的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)。

1. 配置 EventBridge Scheduler 执行角色。有关更多信息，请参阅《Amazon EventBridge 调度器用户指南》**中的[设置执行角色](https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html#setting-up-execution-role)。

1. 如果要使用容量提供程序策略来运行任务，则必须拥有与集群关联的容量提供程序。

**要使用控制台创建新计划**

1. 打开 Amazon EventBridge 调度器控制台，网址为：[https://console.aws.amazon.com/scheduler/home](https://console.aws.amazon.com/scheduler/home/)。

1.  在**计划**页面，选择**创建计划**。

1.  在**指定计划详细信息**页面，在**计划名称和描述**部分中，执行以下操作：

   1. 对于**计划名称**，输入计划的名称。例如 **MyTestSchedule**。

   1. （可选）对于**描述**，输入对计划的描述。例如 **TestSchedule**。

   1. 对于**计划组**，请选择一个计划组。如果您没有计划组，选择**默认**。要创建计划组，选择**创建自己的计划**。

      您可以使用计划组将标签添加到计划组。

1. 选择计划选项。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

1. （可选）如果您在上一步中选择**定期计划**，在**时间范围**部分，请执行以下操作：

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

   1. 对于**开始日期和时间**，请输入 `YYYY/MM/DD` 格式的有效日期，然后指定 24 小时 `hh:mm` 格式的时间戳。

   1. 对于**结束日期和时间**，请输入 `YYYY/MM/DD` 格式的有效日期，然后指定 24 小时 `hh:mm` 格式的时间戳。

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

1. 在**选择目标**页面上，执行以下操作：

   1. 选择**所有 API**，然后在搜索框中输入 **ECS**。

   1. 选择 **Amazon ECS**。

   1. 在搜索框中输入 **RunTask**，然后选择 **RunTask**。

   1. 对于 **Cluster**，选择集群。

   1. 对于 **ECS 任务**，请选择要用于任务的任务定义。

   1. 选择任务在集群基础设施中的分发方式。展开**计算选项**，然后选择以下选项之一    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. 对于**子网**，请输入要在其中运行任务的子网 ID。

   1. 对于**安全组**，请输入子网的安全组 ID。

   1. （可选）要使用默认策略之外的其他任务放置策略，请展开**置放约束**，然后输入约束。

       有关更多信息，请参阅 [Amazon ECS 如何将任务放置在容器实例上](task-placement.md)。

   1. （可选）为了帮助识别您的任务，请在**标签**下配置您的标签。

      要让 Amazon ECS 使用任务定义标签自动标记全部新启动的任务，选择**启用 Amazon ECS 托管标签**。

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

1. 在**设置**页面上，执行以下操作：

   1. 要打开计划，在**计划状态**下，切换**启用计划**。

   1. 要为计划配置重试策略，在**重试策略和死信队列（DLQ）**下，请执行以下操作：
      + 切换**重试**。
      + 对于**事件的最长保留时间**，输入 EventBridge Scheduler 器必须保留未处理事件的最长**小时**和**分钟**数。
      + 最长时间为 24 小时。
      + 对于**最大重试次数**，输入在目标返回错误的情况下，EventBridge  调度器重试计划的最大次数。

         最大值为 185 次重试。

      配置重试策略后，如果计划未能调用其目标，EventBridge 调度器将重新运行该计划。如果已配置，则必须为计划设置最长保留时间和最大重试次数。

   1. 选择 EventBridge 调度器存储未送达事件的位置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. 要使用客户托管密钥加密目标输入，在**加密**下，选择**自定义加密设置（高级）**。

      如果选择此选项，请输入现有的 KMS 密钥 ARN 或选择**创建一个 AWS KMS key** 以导航到 AWS KMS 控制台。有关 EventBridge 调度器如何加密静态数据的更多信息，请参阅 *Amazon EventBridge 调度器用户指南* 中的 [静态加密](https://docs.aws.amazon.com/scheduler/latest/UserGuide/encryption-rest.html)。

   1. 对于**权限**，选择**使用现有角色**，然后选择角色。

      要让 EventBridge 调度器为您创建新的执行角色，请选择**为此计划创建新角色**。然后，在**角色名称**中输入名称。如果您选择此选项，EventBridge 调度器会将模板化目标所需的必要权限附加到该角色。

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

1.  在**查看并创建计划**页面上，查看计划的详细信息。在每个部分中，选择**编辑**返回到该步骤并编辑其详细信息。

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

   您可以在**计划**页面上查看新的和现有的计划列表。在**状态**列下，验证新计划是否**已启用**。

## 后续步骤
<a name="eventbridge-scheduler-next-steps"></a>

您可以使用 EventBridge Scheduler 控制台或 AWS CLI 来管理计划。有关更多信息，请参阅《Amazon EventBridge 调度器用户指南》**中的[管理计划](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule.html)。