本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建 AmazonEventBridge按计划运行的规则
一个规则可以运行以响应事件或者在一定时间间隔内。例如,要定期运行Amazon Lambda函数,您可以创建按计划运行的规则。您可以使用 cron 或 rate 表达式创建按计划运行的规则。所有计划的事件都使用 UTC+0 时区,计划的最小精度为 1 分钟。您的计划规则会在这一分钟内运行,但不会精确到在 0 秒时运行。
EventBridge 支持 cron 表达式和 rate 表达式。Rate 表达式更容易定义,cron 表达式提供详细的计划控制。例如,使用 cron 表达式,您可以定义在每周或每月的某一天的指定时间运行的规则。相反,Rate 表达式以常规速率运行规则,例如每小时一次或每天一次。
EventBridge 不在计划表达式中提供第二级精度。使用 Cron 表达式的最高解析精度是一分钟。由于分布式的性质EventBridge和目标服务实际上,计划规则触发时间与目标服务实际运行目标资源的时间之间可能有几秒钟。
以下视频概述了调度任务:
Cron 表达式
Cron 表达式有六个必填字段,之间以空格分隔。
Syntax(语法
cron(fields)
字段 | 值 | 通配符 |
---|---|---|
分钟 |
0-59 |
, - * / |
小时 |
0-23 |
, - * / |
Day-of-month |
1-31 |
, - * ? / L W |
月份 |
1-12 或 JAN-DEC |
, - * / |
Day-of-week |
1-7 或 SUN-SAT |
, - * ? L # |
年 |
1970-2199 |
, - * / |
通配符
-
,(逗号)通配符包含其他值。在 “月份” 字段中,JAN、FEB 和 MAR 包含 January、FEB 和 MAR。
-
-(破折号)通配符用于指定范围。在 “日” 字段中,1-15 包含指定月份的 1-15 日。
-
*(星号)通配符包含该字段中的所有值。在“Hours(小时)”字段中,* 包括每个小时。你不能使用*在这两个 Day-of-monthDay-of-week字段之间没有不同。如果您在一个中使用它,则必须在另一个中使用 ? 。
-
这些区域有:/(斜杠) 通配符用于指定增量。在“分钟”字段中,您可以输入 1/10 以指定从一个小时的第一分钟开始的每个第十分钟 (例如,第 11 分钟、第 21 分钟和第 31 分钟,依此类推)。
-
这些区域有:?(问号)通配符用于指定任何。Day-of-month你可以输入的字段7如果一周中的任何一天都可以接受,你可以进入?Day-of-week字段中返回的子位置类型。
-
这些区域有:LD 中的通配符ay-of-month或 Day-of-week字段用于指定一月或周的最后一天。
-
这些区域有:
W
D 中的通配符ay-of-month字段用于指定工作日。Day-of-month字段中,3W
指定最靠近当月第三天的工作日。 -
这些区域有:#D 中的通配符ay-of-week字段指定在一个月内指定星期几的特定实例。例如,3#2 指该月的第二个星期二:3 指的是星期二,因为它是每周的第三天,2 是指该月内该类型的第二天。
注意 如果您使用 “#” 字符,则只能在day-of-week字段中返回的子位置类型。例如,
"3#1,6#3"
是无效的,因为它被解释为两个表达式。
限制
-
您不能指定 Day-of-monthDay-of-week同一 Cron 表达式中的字段。如果您在其中一个字段中指定了值或 * (星号),则必须使用?(问号)。
-
不支持产生的速率快于 1 分钟的 Cron 表达式。
示例
在创建带计划的规则时,可以使用以下示例 cron 字符串。
分钟 | 小时 | 日期 | 月份 | 星期几 | 年份 | 意义 |
---|---|---|---|---|---|---|
0 |
10 |
* |
* |
? |
* |
每天上午 10:00 (UTC+0) 运行 |
15 |
12 |
* |
* |
? |
* |
每天在下午 12:15 (UTC+0) 运行 |
0 |
18 |
? |
* |
MON-FRI |
* |
每星期一到星期一到星期五的下午 6:00 (UTC+0) 运行 |
0 |
8 |
1 |
* |
? |
* |
每月第 1 天上午 8:00 (UTC+0) 运行 |
0/15 |
* |
* |
* |
? |
* |
每 15 分钟运行一次 |
0/10 |
* |
? |
* |
MON-FRI |
* |
从星期一到星期五,每 10 分钟运行一次 |
0/5 |
8-17 |
? |
* |
MON-FRI |
* |
在星期一到星期五的上午 8:00 和下午 5:55 (UTC+0) 之间,每 5 分钟运行一次 |
0/30 |
20-2 |
? |
* |
MON-FRI |
* |
周一至周五开始日晚上 10 点至次日凌晨 2:00 之间每 30 分钟运行一次(UTC) 运行时间为周一早上 12:00 至凌晨 2:00(UTC)。 |
以下示例创建在每天中午 12:00 (UTC+0) 运行的规则。
aws events put-rule --schedule-expression "cron(0 12 * * ? *)" --name
MyRule1
以下示例创建在每天下午 2:05 和 2:35 (UTC+0) 运行的规则。
aws events put-rule --schedule-expression "cron(5,35 14 * * ? *)" --name
MyRule2
以下示例创建在 2019 到 2022 年在每个月最后一个星期五的上午 10:15 (UTC+0) 运行的规则。
aws events put-rule --schedule-expression "cron(15 10 ? * 6L 2019-2022)" --name
MyRule3
Rate 表达式
一个Rate 表达式在创建计划事件规则时启动,然后按照定义的计划运行。
Rate 表达式有两个必需字段,以空格分隔。
Syntax(语法
rate(value unit)
- 值
-
正数。
- 单位
-
时间单位。需要不同的单位,例如,对于值 1 为
minute
;对于大于 1 的值 1 为minutes
。有效值:minute | minutes | hour | hours | day | days
限制
如果值等于 1,则单位必须为单数。如果值大于 1,则单位必须为复数。例如,房价(1 小时)和 rate (5 小时) 无效,但房价(1 小时)和 rate (5 小时) 有效。
示例
以下示例演示了如何将 Rate 表达式与Amazon CLI put-rule
命令。第一个示例每分钟触发一次规则,第二个示例每 5 分钟触发一次规则,第三个示例每小时触发一次规则,第四个示例每天触发一次规则。
aws events put-rule --schedule-expression "rate(1 minute)" --name
MyRule2
aws events put-rule --schedule-expression "rate(5 minutes)" --name
MyRule3
aws events put-rule --schedule-expression "rate(1 hour)" --name
MyRule4
aws events put-rule --schedule-expression "rate(1 day)" --name
MyRule5
创建规则
以下步骤将指导您如何创建EventBridge定期触发的规则。
您只能使用默认事件总线创建计划规则。
创建定期运行的规则
打开 AmazonEventBridge控制台https://console.aws.amazon.com/events/
. -
在导航窗格中,选择 Rules (规则)。
-
选择 Create rule (创建规则)。
-
为规则输入名称和描述。
规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。
-
适用于事件总线中,请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的账户的匹配事件触发,请选择 Amazon 原定设置事件总线。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。
-
适用于Rule type,选择Schedule.
-
请选择 Next (下一步)。
-
(可选)对于示例事件中,选择事件的类型。
-
适用于计划模式请执行以下操作之一:
-
要使用 cron 表达式定义时间表,请选择在特定时间(例如上午 8:00)运行的精细计划 每月第一个星期一太平洋标准时间。然后输入 cron 表达式。
-
要使用汇率表达式定义时间表,请选择以常规费率运行的时间表,例如每 10 分钟一次。然后输入汇率表达式。
-
-
请选择 Next (下一步)。
-
适用于目标类型,选择Amazon服务.
-
适用于选择一个目标,选择Amazon什么时候要将信息发送到的服务EventBridge检测与事件模式匹配的事件。
-
显示的字段因您选择的服务而异。根据需要输入特定于此目标类型的信息。
-
对于许多目标类型,EventBridge 需要权限以便将事件发送到目标。在这些情况下,EventBridge您可以创建运行规则所需的 IAM 角色。请执行下列操作之一:
-
若要自动创建 IAM 角色,请选择 Create a new role for this specific resource (为此特定资源创建新角色)。
-
要使用您之前创建的 IAM 角色,请选择使用现有角色然后从下拉列表中选择现有角色。
-
-
(可选)对于其他设置中,执行以下操作:
-
适用于活动的最长年龄中,输入一分钟之间的值 (00:01) 和 24 小时 (24:00)。
-
对于重试尝试,输入 0 到 185 之间的数字。
-
对于死信队列,选择是否使用标准 Amazon SQS 队列作为死信队列。EventBridge如果与此规则匹配的事件未成功传递到目标,则会将这些事件发送到死信队列。请执行下列操作之一:
-
选择无不使用死信队列。
-
在当前 Amazon 帐户中选择选择一个Amazon SQS队列用作死信队列,然后从下拉列表中选择要使用的队列。
-
选择在其他 Amazon SQS 队列中选择其他队列 Amazon 帐户作为死信队列,然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到授予的队列EventBridge向它发送消息的权限。有关更多信息,请参阅 授予死信队列的权限。
-
-
-
(可选) 选择添加另一个目标为此规则添加另一个目标。
-
请选择 Next (下一步)。
-
(可选)为规则输入一个或多个标签。有关更多信息,请参阅 标签 Amazon EventBridge。
-
请选择 Next (下一步)。
-
查看规则详细信息并选择创建规则.