在 Amazon EventBridge 中使用 cron 和 rate 表达式为规则制定计划 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Amazon EventBridge 中使用 cron 和 rate 表达式为规则制定计划

在 EventBridge 中创建计划规则时,您可以指定一种计划模式来确定 EventBridge 运行该规则的时间:

  • 使用 cron 表达式在特定的时间和日期运行规则。

  • 使用 rate 表达式定期运行规则。

Cron 表达式

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

语法

cron(fields)
字段 通配符

分钟

0-59

, - * /

小时

0-23

, - * /

日期

1-31

, - * ? / L W

1-12 或 JAN-DEC

, - * /

星期几

1-7 或 SUN-SAT

, - * ? L #

1970-2199

, - * /

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

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

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

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

  • ?(问号)通配符用于指定任何内容。在“日期”字段中,您可以输入 7,如果一周的任何日期都是可接受的,则可以在“日期”字段中输入 ?

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

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

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

    注意

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

限制
  • 您无法在同一 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:00 至次日凌晨 2:00 (UTC) 每隔 30 分钟运行一次

星期一凌晨 12:00 至凌晨 2:00 (UTC) 运行。

以下示例创建一条规则,在每天中午 12:00 (UTC+0) 运行。

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

以下示例创建一条规则,在每天下午 2:05pm 和 2:35pm (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 表达式有两个必填字段,之间以空格分隔。

语法

rate(value unit)
value

正数。

单位

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

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

限制

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

示例

以下示例说明如何将 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