开始使用 EventBridge 调度器
本主题介绍如何创建新的 EventBridge 调度器计划。您可以使用 EventBridge 调度器控制台、AWS Command Line Interface (AWS CLI) 或 AWS 软件开发工具包来创建带有模板化 Amazon SQS 目标的计划。然后,您将设置日志记录,配置重试次数,并为失败的任务设置最长保留时间。创建计划后,您将验证您的计划是否成功调用了目标并向目标队列发送了消息。
注意
要遵循本指南,我们建议您使用 在 EventBridge 调度器中使用基于身份的策略 中所述的最低要求权限设置 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 用户指南》中的配置设置和优先级。
先决条件
在尝试本部分中的步骤之前,您必须执行以下操作:
-
完成 设置 Amazon EventBridge 调度器 中所述的任务
使用 EventBridge 调度器控制台创建计划
要使用控制台创建新计划
-
登录 AWS Management Console,然后选择以下链接打开 EventBridge 控制台的 EventBridge 调度器部分:https://us-west-2.console.aws.amazon.com/scheduler/home?region=us-west-2#home
注意
您可以使用 AWS Management Console 的区域选择器切换 AWS 区域。
-
在计划页面,选择创建计划。
-
在指定计划详细信息页面,在计划名称和描述部分中,执行以下操作:
-
对于计划名称,输入计划的名称。例如,
MyTestSchedule
-
对于描述(可选),输入对计划的描述。例如,
My first schedule
。 -
对于计划组,从下拉选项中选择一个计划组。如果您之前没有创建过任何计划组,则可以为您的计划选择
default
组。要创建新的计划组,请在控制台描述中选择创建自己的计划链接。您可以使用计划组将标签添加到计划组。
-
-
在计划模式部分执行以下操作:
-
在出现中,请选择以下模式选项之一。配置选项会根据您选择的模式而变化。
-
一次性计划:一次性计划仅在您指定的日期和时间调用一次目标。
在日期和时间中,以
YYYY/MM/DD
格式输入有效的日期。然后,指定 24 小时hh:mm
格式的时间戳。最后,从下拉选项中选择一个时区。 -
定期计划:定期计划按照您使用 cron 表达式或 rate 表达式指定的速率调用目标。
选择基于 Cron 的计划,使用 cron 表达式配置计划。要使用 rate 表达式,请选择基于 rate 的计划,并在 值中输入一个正数,然后从下拉选项中选择单位。
有关使用 cron 和 rate 表达式的更多信息,请参阅 EventBridge 调度器中的计划类型。
-
-
对于灵活的时间窗口,选择关闭以关闭该选项,或者从下拉列表中选择一个预定义的时间窗口。例如,如果您选择 15 分钟并且将定期计划设置为每小时调用一次其目标,则该计划将在每小时开始后的 15 分钟内运行。
-
-
如果您在上一步中选择了定期计划,则在时间范围部分中,指定时区,也可以设置计划的开始日期和时间以及结束日期和时间。没有开始日期的定期计划将在创建并可用后立即开始。没有结束日期的定期计划将继续无限期地调用其目标。
-
选择下一步。
-
在选择目标页面上,执行以下操作:
-
选择模板化目标并选择目标 API。在本示例中,我们将选择 Amazon SQS
SendMessage
模板化目标。 -
在发送消息部分,对于 SQS 队列,从下拉列表中选择一个现有的 Amazon SQS 队列 ARN,例如
arn:aws:sqs:
。要创建新队列,请选择创建新 SQS 队列以导航到 Amazon SQS 控制台。队列创建完毕后,返回 EventBridge 调度器控制台并刷新下拉列表。您的新队列 ARN 将显示并可供选择。us-west-2
:123456789012
:TestQueue
-
在目标中,输入您希望 EventBridge 调度器传送到目标的有效负载。在本示例中,将向目标队列发送以下消息:
Hello, it's EventBridge Scheduler.
-
-
选择下一步,然后在设置(可选)页面上,执行以下操作:
-
-
在计划状态部分中,对于启用计划,使用开关开启或关闭功能。默认情况下, EventBridge 调度器会启用您的计划。
-
在计划完成后的操作部分,配置 EventBridge 调度器在计划完成后采取的操作:
-
如果要自动删除计划,请选择删除。对于一次性计划,这种情况发生在计划调用一次目标之后。对于定期计划,这发生在计划的最后一次计划调用之后。有关自动删除的更多信息,请参阅 计划完成后删除。
-
如果您不想让 EventBridge 调度器在计划完成后执行任何操作,请选择无或不选择任何值。
-
-
在重试策略和死信队列 (DLQ) 部分中,在重试策略中,打开重试,为计划配置重试策略。配置重试策略后,如果计划未能调用其目标,EventBridge 调度器将重新运行该计划。如果已配置,则必须为计划设置最长保留时间和最大重试次数。
-
对于事件的最长期限(可选),输入 EventBridge 调度器必须保留未处理事件的最长小时数和分钟数。
注意
最大值为 24 小时。
-
对于最大重试次数,输入在目标返回错误的情况下,EventBridge 调度器重试计划的最大次数。
注意
最大值为 185 次重试。
-
对于死信队列 (DLQ),请从以下选项中选择:
-
无:如果您不想配置 DLQ,请选择此选项。
-
在我的 AWS 账户中选择一个 Amazon SQS 队列作为 DLQ:选择此选项,然后从下拉列表中选择一个队列 ARN,使用与您创建计划时相同的 AWS 账户 配置 DLQ。
-
将其他 AWS 账户中的 Amazon SQS 队列指定为 DLQ:选择此选项,然后输入配置为 DLQ 的队列的 ARN(如果队列位于另一个 AWS 账户 中)。要使用此选项,您必须为队列输入确切的 ARN。
-
-
要使用客户托管 KMS 密钥加密目标输入,在加密部分中,选择自定义加密设置(高级)。如果选择此选项,请输入现有的 KMS 密钥 ARN 或选择创建一个 AWS KMS 密钥以导航到 AWS KMS 控制台。有关 EventBridge 调度器如何加密静态数据的更多信息,请参阅 EventBridge 调度器中的静态加密。
-
对于权限,选择使用现有角色,然后从下拉列表中选择您在设置过程中创建的角色。您也可以选择前往 IAM 控制台来创建新角色。
如果要让 EventBridge 调度器为您创建新的执行角色,请选择为此计划创建新角色。然后,在角色名称中输入名称。如果您选择此选项,EventBridge 调度器会将模板化目标所需的必要权限添加到该角色。
-
-
选择下一步。
-
在查看并创建计划页面上,查看计划的详细信息。在每个部分中,选择编辑返回到该步骤并编辑其详细信息。
-
选择创建计划以完成新计划的创建。您可以在计划页面上查看新的和现有的计划列表。在状态列下,验证新计划是否已启用。
-
要验证您的计划是否调用了 Amazon SQS 目标,请打开 Amazon SQS 控制台并执行以下操作:
-
从队列列表中选择目标队列。
-
选择发送和接收消息。
-
在发送和接收消息页面的接收消息下,选择轮询消息以检索您的计划发送到目标队列的测试消息。
-
使用 AWS CLI 创建计划
以下示例说明如何使用 AWS CLI 命令 create-schedule
--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 调度器中管理计划。
-
有关如何配置模板化目标和了解如何使用通用目标参数的更多信息,请参阅 在 EventBridge 调度器中管理目标。
-
有关 EventBridge 调度器数据类型和 API 操作的更多信息,请参阅 EventBridge 调度器 API 参考。