本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 cron 和费率表达式在 Amazon 中安排规则 EventBridge
在中创建计划规则时, EventBridge 可以指定决定何时 EventBridge 运行该规则的计划模式:
使用 cron 表达式在特定的时间和日期运行规则。
使用比率表达式定期运行规则。
Cron 表达式
Cron 表达式有六个必填字段,之间以空格分隔。
语法
cron(fields)
字段 | 值 | 通配符 |
---|---|---|
分钟 |
0-59 |
, - * / |
小时 |
0-23 |
, - * / |
D ay-of-month |
1-31 |
, - * ? / L W |
月 |
1-12 或 JAN-DEC |
, - * / |
D ay-of-week |
1-7 或 SUN-SAT |
, - * ? L # |
年 |
1970-2199 |
, - * / |
通配符
-
,(逗号)通配符包含其他值。在 “月” 字段中JAN,FEB,MAR包括一月、二月和三月。
-
-(破折号)通配符用于指定范围。在“日”字段中,1-15 包含指定月份的 1 - 15 日。
-
*(星号)通配符包含该字段中的所有值。在“Hours(小时)”字段中,* 包括每个小时。不能同时在 D ay-of-month 和 D ay-of-week 字段中使用 *。如果您在一个中使用它,则必须在另一个中使用 ? 。
-
/(斜杠)通配符用于指定增量。在“分钟”字段中,您可以输入 1/10 以指定从一个小时的第一分钟开始的每个第十分钟 (例如,第 11 分钟、第 21 分钟和第 31 分钟,依此类推)。
-
?(问号)通配符用于指定任何内容。在 D ay-of-month 字段中,您可以输入 7,如果一周中的任何一天可以接受,则可以输入? 在 D ay-of-week 字段中。
-
D ay-of-month 或 D ay-of-week 字段中的 L 通配符指定一个月或一周的最后一天。
-
D ay-of-month 字段中的
W
通配符指定工作日。在 D ay-of-month 字段中,3W
指定最接近该月第三天的工作日。 -
D ay-of-week 字段中的 # 通配符指定一个月内一周中指定某一天的特定实例。例如,3#2 指该月的第二个星期二:3 指的是星期二,因为它是每周的第三天,2 是指该月内该类型的第二天。
注意
如果使用 '#' 字符,则只能在 day-of-week 字段中定义一个表达式。例如,
"3#1,6#3"
是无效的,因为它被解释为两个表达式。
限制
-
您不能在同一 cron 表达式中指定 D ay-of-month 和 D ay-of-week 字段。如果您在其中一个字段中指定值或 *(星号),则必须在另一个字段中使用 ?(问号)。
-
不支持产生的速率快于 1 分钟的 Cron 表达式。
示例
在创建带计划的规则时,可以使用以下示例 cron 字符串。
分钟 | 小时 | 日期 | 月份 | 星期几 | 年 | 含义 |
---|---|---|---|---|---|---|
0 |
10 |
* |
* |
? |
* |
每天上午 10 点 (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 之间,每 5 分钟跑一次 (UTC+0) |
0/30 |
20-2 |
? |
* |
MON-FRI |
* |
周一至周五每30分钟跑一次,起始日晚上 10:00 至次日凌晨 2:00 () 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 运行的规则 +0。UTC
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) 有效。
示例
以下示例说明如何在 AWS 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