EventBridge 调度器入门 - EventBridge 调度器

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

EventBridge 调度器入门

本主题介绍如何创建新的 EventBridge 调度器计划。您可以使用 EventBridge 调度器控制台、AWS Command Line Interface (AWS CLI) 或 AWS 软件开发工具包来创建带有模板化 Amazon SQS 目标的计划。然后,您将设置日志记录,配置重试次数,并为失败的任务设置最长保留时间。创建计划后,您将验证您的计划是否成功调用了目标并向目标队列发送了消息。

注意

要遵循本指南,我们建议您使用 使用基于身份的策略 中所述的最低要求权限设置 IAM 用户。创建和配置用户后,运行以下命令来设置您的访问凭证。要配置 AWS CLI,您需要访问密钥 ID 和秘密访问密钥。

$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json

有关设置凭证的不同方式的更多信息,请参阅《版本 2 AWS Command Line Interface 用户指南》中的配置设置和优先级

先决条件

在尝试本部分中的步骤之前,您必须执行以下操作:

使用 EventBridge 调度器控制台创建计划

要使用控制台创建新计划
  1. 登录 AWS Management Console,然后选择以下链接打开 EventBridge 控制台的 EventBridge 调度器部分:https://us-west-2.console.aws.amazon.com/scheduler/home?region=us-west-2#home

    注意

    您可以使用 AWS Management Console 的区域选择器切换 AWS 区域。

  2. 计划页面,选择创建计划

  3. 指定计划详细信息页面,在计划名称和描述部分中,执行以下操作:

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

    2. 对于描述(可选,输入对计划的描述。例如,My first schedule

    3. 对于计划组,从下拉选项中选择一个计划组。如果您之前没有创建过任何计划组,则可以为您的计划选择 default 组。要创建新的计划组,请在控制台描述中选择创建自己的计划链接。您可以使用计划组将标签添加到计划组。

  4. 计划模式部分执行以下操作:

    1. 出现中,请选择以下模式选项之一。配置选项会根据您选择的模式而变化。

      • 一次性计划:一次性计划仅在您指定的日期和时间调用一次目标。

        日期和时间中,以 YYYY/MM/DD 格式输入有效的日期。然后,指定 24 小时 hh:mm 格式的时间戳。最后,从下拉选项中选择一个时区。

      • 定期计划:定期计划按照您使用 cron 表达式或 rate 表达式指定的速率调用目标。

        选择基于 Cron 的计划以使用 cron 表达式配置计划。要使用 rate 表达式,请选择基于速率的计划并在中输入正数,然后从下拉选项中选择一个单位

      有关使用 cron 和 rate 表达式的更多信息,请参阅 EventBridge 调度器上的计划类型

    2. 对于灵活的时间窗口,选择关闭以关闭该选项,或者从下拉列表中选择一个预定义的时间窗口。例如,如果您选择 15 分钟并且将定期计划设置为每小时调用一次其目标,则该计划将在每小时开始后的 15 分钟内运行。

  5. 注意

    弹性时间窗功能不适用于一次性计划。

    如果您在上一步中选择了定期计划,则在时间范围部分中,指定时区,也可以设置计划的开始日期和时间以及结束日期和时间。没有开始日期的定期计划将在创建并可用后立即开始。没有结束日期的定期计划将继续无限期地调用其目标。

  6. 选择下一步

  7. 选择目标页面上,执行以下操作:

    1. 选择模板化目标并选择目标 API。在本示例中,我们将选择 Amazon SQS SendMessage 模板化目标。

    2. 发送消息部分,对于 SQS 队列,从下拉列表中选择一个现有的 Amazon SQS 队列 ARN,例如 arn:aws:sqs:us-west-2:123456789012:TestQueue。要创建新队列,请选择创建新 SQS 队列以导航到 Amazon SQS 控制台。队列创建完毕后,返回 EventBridge 调度器控制台并刷新下拉列表。您的新队列 ARN 将显示并可供选择。

    3. 目标中,输入您希望 EventBridge 调度器传送到目标的有效负载。在本示例中,将向目标队列发送以下消息:Hello, it's EventBridge Scheduler.

  8. 选择下一步,然后在设置(可选)页面上,执行以下操作:

    1. 计划状态部分中,对于启用计划,使用开关开启或关闭功能。默认情况下, EventBridge 调度器会启用您的计划。

    2. 计划完成后的操作部分,配置 EventBridge 调度器在计划完成后采取的操作:

      • 如果要自动删除计划,请选择删除。对于一次性计划,这种情况发生在计划调用一次目标之后。对于定期计划,这发生在计划的最后一次计划调用之后。有关自动删除的更多信息,请参阅 计划完成后删除

      • 如果您不想让 EventBridge 调度器在计划完成后执行任何操作,请选择或不选择任何值。

    3. 重试策略和死信队列 (DLQ) 部分中,在重试策略中,打开重试,为计划配置重试策略。配置重试策略后,如果计划未能调用其目标,EventBridge 调度器将重新运行该计划。如果已配置,则必须为计划设置最长保留时间和最大重试次数。

    4. 对于事件的最长期限(可选),输入 EventBridge 调度器必须保留未处理事件的最长小时数分钟数

      注意

      最大值为 24 小时。

    5. 对于最大重试次数,输入在目标返回错误的情况下,EventBridge 调度器重试计划的最大次数。

      注意

      最大值为 185 次重试。

    6. 对于死信队列 (DLQ),请从以下选项中选择:

      • :如果您不想配置 DLQ,请选择此选项。

      • 在我的 AWS 账户中选择一个 Amazon SQS 队列作为 DLQ:选择此选项,然后从下拉列表中选择一个队列 ARN,使用与您创建计划时相同的 AWS 账户 配置 DLQ。

      • 将其他 AWS 账户中的 Amazon SQS 队列指定为 DLQ:选择此选项,然后输入配置为 DLQ 的队列的 ARN(如果队列位于另一个 AWS 账户 中)。要使用此选项,您必须为队列输入确切的 ARN。

    7. 要使用客户托管 KMS 密钥加密目标输入,在加密部分中,选择自定义加密设置(高级)。如果选择此选项,请输入现有的 KMS 密钥 ARN 或选择创建一个 AWS KMS 密钥以导航到 AWS KMS 控制台。有关 EventBridge 调度器如何加密静态数据的更多信息,请参阅 静态加密

    8. 对于权限,选择使用现有角色,然后从下拉列表中选择您在设置过程中创建的角色。您也可以选择前往 IAM 控制台来创建新角色。

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

  9. 选择下一步

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

  11. 选择创建计划以完成新计划的创建。您可以在计划页面上查看新的和现有的计划列表。在状态列下,验证新计划是否已启用

  12. 要验证您的计划是否调用了 Amazon SQS 目标,请打开 Amazon SQS 控制台并执行以下操作:

    1. 队列列表中选择目标队列。

    2. 选择 Send and receive messages(发送和接收消息)

    3. 发送和接收消息页面的接收消息下,选择轮询消息以检索您的计划发送到目标队列的测试消息。

使用 AWS CLI 创建计划

以下示例说明如何使用 AWS CLI 命令 create-schedule 创建带有模板化的 Amazon SQS 目标的 EventBridge 调度器计划。在下面的命令中,将占位符的值替换为您自己的信息:

  • --name:为计划输入一个名称。

  • RoleArn:输入要与计划关联的执行角色的 ARN。

  • Arn:输入目标的 ARN。在本例中,目标为 Amazon SQS 队列。

  • Input:输入 EventBridge 调度器传送到目标队列的消息。

$ aws scheduler create-schedule --name sqs-templated-schedule --schedule-expression 'rate(5 minutes)' \ --target '{"RoleArn": "ROLE_ARN", "Arn": "QUEUE_ARN", "Input": "TEST_PAYLOAD" }' \ --flexible-time-window '{ "Mode": "OFF"}'

使用 EventBridge 调度器开发工具包创建计划

在以下示例中,您将使用 EventBridge 调度器开发工具包创建带有模板化 Amazon SQS 目标的 EventBridge 调度器计划。

例 Python 开发工具包
import boto3 scheduler = boto3.client('scheduler') flex_window = { "Mode": "OFF" } sqs_templated = { "RoleArn": "<ROLE_ARN>", "Arn": "<QUEUE_ARN>", "Input": "Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'" } scheduler.create_schedule( Name="sqs-python-templated", ScheduleExpression="rate(5 minutes)", Target=sqs_templated, FlexibleTimeWindow=flex_window)
例 Java 软件开发工具包
package com.example; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.scheduler.SchedulerClient; import software.amazon.awssdk.services.scheduler.model.*; public class MySchedulerApp { public static void main(String[] args) { final SchedulerClient client = SchedulerClient.builder() .region(Region.US_WEST_2) .build(); Target sqsTarget = Target.builder() .roleArn("<ROLE_ARN>") .arn("<QUEUE_ARN>") .input("Message for scheduleArn: '<aws.scheduler.schedule-arn>', scheduledTime: '<aws.scheduler.scheduled-time>'") .build(); CreateScheduleRequest createScheduleRequest = CreateScheduleRequest.builder() .name("<SCHEDULE NAME>") .scheduleExpression("rate(10 minutes)") .target(sqsTarget) .flexibleTimeWindow(FlexibleTimeWindow.builder() .mode(FlexibleTimeWindowMode.OFF) .build()) .build(); client.createSchedule(createScheduleRequest); System.out.println("Created schedule with rate expression and an Amazon SQS templated target"); } }

接下来做什么?

  • 有关使用控制台、AWS CLI 或 EventBridge 调度器开发工具包管理计划的更多信息,请参阅 管理计划

  • 有关如何配置模板化目标和了解如何使用通用目标参数的更多信息,请参阅 管理目标

  • 有关 EventBridge 调度器数据类型和 API 操作的更多信息,请参阅 EventBridge 调度器 API 参考