创建按计划运行的 Amazon EventBridge 梁规则 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建按计划运行的 Amazon EventBridge 梁规则

A规则可以运行以响应event或在某些时间间隔内进行. 例如,要定期运行Amazon Lambda函数,您可以创建按计划运行的规则。您可以使用 cron 或 rate 表达式创建按计划运行的规则。所有计划的事件都使用 UTC +0 时区,计划的最小精度是一分钟。您的计划规则会在这一分钟内运行,但不会精确到在第 0 秒时运行。

EventBridge 支持 cron 表达式和 rate 表达式。Rate 表达式更容易定义,cron 表达式提供详细的计划控制。例如,使用 cron 表达式,您可以定义在每周或每月的某一天的指定时间运行的规则。相反,rate 表达式以常规速率运行规则,例如每小时一次或每天一次。

注意

EventBridge 不在计划表达式中提供第二级精度。使用 cron 表达式的最高解析精度是一分钟。由于 EventBridge 和目标服务的分布式特性,计划规则触发时间与目标服务运行目标资源的时间之间可能有几秒钟。

Cron 表达式

Cron 表达式有六个必填字段,之间以空格分隔。

语法

cron(fields)
字段 通配符

分钟

0-59

, - * /

小时

0-23

, - * /

日期

1-31

, - * ? / L W

1-12 或 JAN-DEC

, - * /

星期几

1-7 或 SUN-SAT

, - * ? L #

1970-2199

, - * /

Wildcards

  • ,(逗号)通配符包含其他值。在 “月份” 字段中,JAN、FEB、MAR 包含 1 月、2 月和 3 月。

  • -(破折号)通配符用于指定范围。在 “日期” 字段中,1-15 包含指定月份的 1-15 日。

  • *(星号)通配符包含该字段中的所有值。在 “小时” 字段中,*包含每个小时。您不能使用*在 “日期” 和 “星期几” 字段中。如果您在一个中使用它,则必须在另一个中使用 ?

  • 这些区域有:/(斜杠) 通配符用于指定增量。在“分钟”字段中,您可以输入 1/10 以指定从一个小时的第一分钟开始的每个第十分钟 (例如,第 11 分钟、第 21 分钟和第 31 分钟,依此类推)。

  • 这些区域有:?(问号)通配符用于指定任何。在 “日期” 字段中,您可以输入7,如果一周中的任何一天可以接受,则可以输入?

  • “日期”或“星期几”字段中的 L 通配符用于指定月或周的最后一天。

  • “日期”字段中的 W 通配符用于指定工作日。在“日期”字段中,3W 用于指定最靠近当月的第三周的日。

  • “星期几”字段中的 # 通配符用于指定一个月内所指定星期几的特定实例。例如,3#2 指该月的第二个星期二:3 指的是星期二,因为它是每周的第三天,2 是指该月内该类型的第二天。

    注意

    如果使用 “#” 字符,则只能在星期字段中定义一个表达式。例如,"3#1,6#3"是无效的,因为它被解释为两个表达式。

Limitations

  • 您无法在同一 Cron 表达式中为日期和星期几字段同时指定值。如果您在其中一个字段中指定了值或 *(星号),则必须在另一个字段中使用?(问号)。

  • 不支持产生的速率快于 1 分钟的 Cron 表达式。

Examples

在创建带计划的规则时,可以使用以下示例 cron 字符串。

分钟 小时 日期 星期几 年份 意义

0

10

*

*

?

*

每天上午的 10:00 (UTC +0) 运行

15

12

*

*

?

*

每天下午 12:15 (UTC) 运行

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

*

每周一至周五每 30 分钟运行一次,开始日晚上 10 点至次日凌晨 2 点 (UTC)

以下示例创建在每天下午 12:00 (UTC) 运行的规则。

aws events put-rule --schedule-expression "cron(0 12 * * ? *)" --name MyRule1

以下示例创建在每天下午 2:05 (UTC) 和下午 2:35 (UTC) 运行的规则。

aws events put-rule --schedule-expression "cron(5,35 14 * * ? *)" --name MyRule2

以下示例创建从 2019 到 2022 年在每个月最后一个周五的上午 10:15 (UTC) 运行的规则。

aws events put-rule --schedule-expression "cron(15 10 ? * 6L 2019-2022)" --name MyRule3

Rate 表达式

ARate 表达式在创建计划事件规则时启动,然后按定义的计划运行。

Rate 表达式有两个必填字段,之间以空格分隔。

语法

rate(value unit)

正数。

单位

时间单位。需要不同的单位,例如,对于值 1 为 minute;对于大于 1 的值 1 为 minutes

有效值:minute | minutes | hour | hours | day | days

Limitations

如果值等于 1,则单位必须为单数。如果值大于 1,则单位必须为复数。例如,费用(1 小时)和 rate(5 小时)无效,而 rate(1 小时)和 rate(5 小时)有效。

Examples

以下示例演示了如何将 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 规则。

注意

您只能使用默认事件总线创建计划规则。

创建定期运行的规则

  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

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

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

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

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

  5. 对于 Define pattern (定义模式),选择 Schedule (计划)

  6. 选择 Fixed rate of (固定频率),然后指定运行任务的频率,或选择 Cron expression (Cron 表达式) 并指定一个用于定义何时触发任务的 Cron 表达式。

  7. 对于选择事件总线,选择 Amazon 默认事件总线。您只能在默认事件总线上创建计划规则。

  8. 对于 Select targets (选择目标),选择要按指定计划执行的 Amazon 服务。

  9. 在此部分的其他字段中,根据需要输入此目标类型的特定信息。

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

    • 要自动创建 IAM 角色,请选择为此特定资源创建新角色

    • 要使用您之前创建的 IAM 角色,请选择使用现有角色

  11. 适用于重试策略和死信队列:,在重试策略

    1. 适用于事件的最大年龄中,输入一个介于 1 分钟 (00:01) 和 24 小时 (24:00) 之间的值。

    2. 适用于重试尝试中,输入 0 和 185 之间的数字。

  12. 适用于死信队列中,选择是否将标准 Amazon SQS 队列用作死信队列。EventBridge 将与此规则匹配的事件发送到死信队列(如果它无法将这些事件传送到目标)。请执行下列操作之一:

    • 选择以不使用死信队列。

    • 选择Amazon SQS 前Amazon帐户用作死信队列,然后从下拉列表中选择要使用的队列。

    • 选择在另一个中选择 Amazon SQS 队列Amazon帐户用作死信队列,然后输入要使用的队列的 ARN。您必须将基于资源的策略附加到队列,以授予 EventBridge 向其发送消息的权限。要了解更多信息,请参阅“授予死信队列的权限”。

  13. (可选)选择 Add target (添加目标) 以便为此规则添加另一个目标。

  14. (可选)为规则输入一个或多个标记。有关更多信息,请参阅Amazon EventBridge 标签

  15. 选择创建