计划任务 - Amazon Elastic Container Service

计划任务

Amazon ECS 支持创建计划任务。计划任务使用 Amazon EventBridge 规则按计划或响应 EventBridge 事件时运行任务。

如果要按设置的时间间隔运行任务,例如备份操作或日志扫描,则可以创建在指定时间运行一个或多个任务的计划任务。您可以指定一个定期间隔(每 N 分钟、小时或天运行一次),或者对于更复杂的计划,可以使用 cron 表达式。有关更多信息,请参阅 Amazon EventBridge 用户指南 中的 Cron 表达式

如果您想要运行由事件启动的任务,系统提供针对服务的 AWS 托管事件(例如 Amazon ECS 任务和容器实例状态更改事件),您也可以创建自定义事件模式。有关更多信息,请参阅 Amazon EventBridge 用户指南中的事件模式

创建计划任务

计划任务由 Amazon EventBridge 规则启动,您可以使用 EventBridge 控制台创建这些规则。尽管您可以在 Amazon ECS 控制台中创建计划任务,但目前 EventBridge 控制台提供了更多功能,以下步骤将引导您创建启动计划任务的 EventBridge 规则。

在您可以使用 EventBridge 规则和目标提交计划任务之前,EventBridge 服务需要多个权限才能代表您运行 Amazon ECS 任务。有关此角色所需的服务委托人和 IAM 权限的更多信息,请参阅 Amazon ECS CloudWatch Events IAM 角色

创建计划任务(EventBridge 控制台)
  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

  2. 在导航窗格中,选择 Rules (规则)

  3. 选择 Create rule (创建规则)

  4. 为规则输入名称和描述。

    注意

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  5. 对于 Event bus(事件总线),请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发,请选择 AWS 原定设置事件总线。当您账户中的某个 AWS 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  6. 选择如何排程任务。

    要基于以下内容创建 VPC 请执行此操作...

    事件

    1. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

    2. 选择 Next(下一步)。

    3. 对于事件源,选择 AWS 事件

    4. 对于 Event pattern(事件模式),执行以下操作之一:

      • 要使用模板创建您的事件模式,请选择事件模式表,然后选择事件源AWS 服务事件类型。如果您选择 All Events(所有事件)作为事件类型,此 AWS 服务发送的所有事件将会匹配规则。

        要自定义模板,请选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器))进行您的更改。

      • 要使用自定义事件模式,请选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器)),然后创建您的事件模式。

    计划
    1. 对于 Rule type(规则类型),选择 Schedule(计划)。

    2. 选择在 EventBridge 调度器中继续

    3. 对于计划名称,输入一个唯一的名称。

    4. 对于发生率,选择是运行一次还是按计划运行。

    5. 对于计划类型,执行以下操作之一:

      • 要使用 cron 表达式定义计划,请选择基于 cron 的计划并输入 cron 表达式。

      • 要使用 rate 表达式定义计划,请选择基于 rate 的计划并输入 rate 表达式。

  7. 选择 Next(下一步)。

  8. 对于 Target types(目标类型),选择 AWS service(服务)。

  9. 对于 Select a target(选择一个目标),选择 ECS task(ECS 任务)。

  10. 对于群集,选择 Amazon ECS 集群。

  11. 对于任务定义,选择任务定义系列。

  12. 对于任务定义修订版本,选择最新修订,然后选择要使用的特定任务定义修订版本。

  13. 对于计数,指定要运行的任务数。

  14. 选择计划任务在集群基础设施中的分配方式。

    分配方式 步骤

    容量提供程序策略

    1. Compute options(计算选项)部分中,选择 Capacity provider strategy(容量提供程序策略)。

    2. 选择策略:

      • 要使用集群的原定设置容量提供程序策略,请选择 Use cluster default(使用集群原定设置)。

      • 如果集群没有原定设置的容量提供程序策略,或者要使用自定义策略,请选择 Use custom(使用自定义),Add capacity provider strategy(添加容量提供程序策略),并通过指定 Base(基准)、Capacity provider(容量提供程序)和 Weight(权重)来定义自定义容量提供程序策略。

    注意

    要在策略中使用容量提供程序,容量提供程序必须与集群相关联。有关容量提供程序的更多信息,请参阅 Amazon ECS 容量提供程序

    启动类型
    1. Compute options(计算选项)部分中,选择 Launch type(启动类型)。

    2. 对于 Launch type(启动类型),请选择一种启动类型。

    3. (可选)当指定 Fargate 启动类型时,对于平台版本中,指定要使用的平台版本。如果未指定任何版本,将原定设置使用 LATEST 平台版本。

  15. 如果任务托管在 Fargate 上或者使用 awsvpc 网络模式,请展开 Configure network configuration(配置网络配置),然后指定网络配置。

    1. 对于子网,指定一个或多个子网 ID。

    2. 对于安全组,指定一个或多个安全组 ID。

    3. 对于自动分配公共 IP,指定是否向任务分配子网中的公有 IP 地址。

  16. (可选)要为您的任务指定其他参数,请展开 Configure additional properties(配置其他属性)。

    1. 对于任务组,指定任务组名称。任务组名称用于标识一组相关任务,并与 spread 任务放置策略结合使用,确保同一任务组中的任务在集群中的容器实例之间均匀分布。

    2. 对于放置约束,选择添加放置约束。选择放置约束类型,然后输入表达式。有关更多信息,请参阅Amazon ECS 任务放置约束

      注意

      托管在 Fargate 上的任务不支持任务放置约束。

    3. 对于放置策略,选择添加放置策略。选择放置策略类型,然后输入表达式。对要添加的每个放置策略重复此过程。有关更多信息,请参阅Amazon ECS 任务放置策略

      注意

      Fargate 上托管的任务不支持任务放置策略。

    4. 对于标签,选择添加标签来关联任务的键值对标签。

    5. 要添加要在您的成本和使用情况报告中查看成本分配时使用的标签,对于 Configure managed tags(配置托管标签),选择 Enable managed tags(启用托管标签)。有关更多信息,请参阅标记资源以便于计费

    6. 要针对任务使用 ECS Exec 功能,对于 Configure execute command(配置执行命令),选择 Enable execute command(启用执行命令)。有关更多信息,请参阅使用 Amazon ECS Exec进行调试

    7. 要将与任务定义相关的标签添加到您的任务,对于 Configure propagate tags(配置传播标签),选择 Propagate tags from task definition(从任务定义传播标签)。有关更多信息,请参阅如何为资源添加标签

      注意

      如果您在 Tags(标签)部分指定密钥相同的标签,该标签将覆盖从任务定义传播的标签。

  17. 对于许多目标类型,EventBridge 需要权限以便将事件发送到目标。在这些情况下,EventBridge 可以创建运行事件所需的 IAM 角色:请执行下列操作之一:

    • 若要自动创建 IAM 角色,请选择 Create a new role for this specific resource (为此特定资源创建新角色)

    • 要使用您之前创建的 IAM 角色,请选择 Use existing role(使用现有角色),然后从下拉列表中选择现有角色。

  18. (可选)对于 Additional settings(其他设置),执行以下操作:

    1. 对于 Maximum age of event(事件的最大时长),输入一分钟(00:01)与 24 小时(24:00)之间的值。

    2. 对于重试尝试,输入 0 到 185 之间的数字。

    3. 对于死信队列,选择是否使用标准 Amazon SQS 队列作为死信队列。如果与此规则匹配的事件未成功传递到目标,EventBridge 会将这些事件发送到死信队列。请执行下列操作之一:

      • 选择不使用死信队列。

      • 选择在当前 AWS 账户中选择一个 Amazon SQS 队列用作死信队列,然后从下拉列表中选择要使用的队列。

      • 选择在其他 Amazon SQS 队列中选择其他队列 AWS 帐户作为死信队列,然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到队列,以授予 EventBridge 向其发送消息的权限。有关更多信息,请参阅 Amazon EventBridge 用户指南中的授予死信队列的权限

  19. 选择 Next(下一步)。

  20. (可选)为规则输入一个或多个标签。有关更多信息,请参阅 Amazon EventBridge 用户指南中的 Amazon EventBridge 标签

  21. 选择 Next(下一步)。

  22. 查看规则详细信息并选择 Create rule(创建规则)。

在经典控制台中查看您的计划任务。

可以在经典 Amazon ECS 控制台中查看您的计划任务。您还可以在 EventBridge 控制台中查看启动计划任务的 Amazon EventBridge 规则。

查看您的计划任务(Amazon ECS 控制台)
  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. 选择在其中运行计划任务的群集。

  3. Cluster: cluster-name 页面上,选择 Scheduled Tasks选项卡。

  4. 将列出所有计划任务。

编辑计划任务

您可以在经典 Amazon ECS 控制台中编辑您的计划任务。您还可以在 EventBridge 控制台中编辑启动计划任务的 Amazon EventBridge 规则。

编辑计划任务(Amazon ECS 控制台)
  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. 选择要编辑其计划任务的集群。

  3. Cluster: cluster-name 页面上,选择 Scheduled Tasks

  4. 选中要编辑的计划规则左侧的框,然后选择 Edit

  5. 编辑要更新的字段,然后选择 Update