规则的计划表达式
可以使用 cron 或 rate 表达式在 CloudWatch Events 中创建按自动化计划自行触发的规则。所有计划的事件都使用 UTC 时区,计划的最小精度为 1 分钟。
CloudWatch Events 不在计划表达式中提供第二级精度。使用 cron 表达式的最高解析精度是一分钟。由于 CloudWatch Events 和目标服务的分布式特性,计划规则触发时间与目标服务实际执行目标资源的时间之间的延迟可能有几秒钟。您的计划规则会在这一分钟内触发,但不会精确到在第 0 秒时触发。
CloudWatch Events 支持计划表达式的以下格式。
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 日。
-
* (星号) 通配符包含该字段中的所有值。在“小时”字段中,* 将包含每个小时。
-
/ (正斜杠) 通配符用于指定增量。在“分钟”字段中,您可以输入 1/10 以指定从一个小时的第一分钟开始的每个第十分钟 (例如,第 11 分钟、第 21 分钟和第 31 分钟,依此类推)。
-
?(问号)通配符用于指定一个或另一个。在“日期”字段中,您可以输入 7,如果您不介意 7 日是星期几,则可以在“星期几”字段中输入 ?
-
“日期”或“星期几”字段中的 L 通配符用于指定月或周的最后一天。
-
“日期”字段中的 W 通配符用于指定工作日。在“日期”字段中,3W 用于指定最靠近当月的第三周的日。
-
“星期几”字段中的 # 通配符用于指定一个月内所指定星期几的特定实例。例如,3#2 指该月的第二个星期二:3 指的是星期二,因为它是每周的第三天,2 是指该月内该类型的第二天。
限制
-
您无法在同一 Cron 表达式中为日期和星期几字段同时指定值。如果您在其中一个字段中指定了值(或一个 *),则必须在另一个字段中使用 ?(问号)。
-
不支持产生的速率快于 1 分钟的 Cron 表达式。
示例
在创建带计划的规则时,可以使用以下示例 cron 字符串。
分钟 | 小时 | 日期 | 月 | 星期几 | 年 | 意义 |
---|---|---|---|---|---|---|
0 |
10 |
* |
* |
? |
* |
每天上午的 10:00 (UTC) 运行 |
15 |
12 |
* |
* |
? |
* |
每天在下午 12:15 (UTC) 运行 |
0 |
18 |
? |
* |
MON-FRI |
* |
每星期一到星期五的下午 6:00 (UTC) 运行 |
0 |
8 |
1 |
* |
? |
* |
每月第 1 天的上午 8:00 (UTC) 运行 |
0/15 |
* |
* |
* |
? |
* |
每 15 分钟运行一次 |
0/10 |
* |
? |
* |
MON-FRI |
* |
从星期一到星期五,每 10 分钟运行一次 |
0/5 |
8-17 |
? |
* |
MON-FRI |
* |
每星期一到星期五的上午 8:00 和下午 5:55 (UTC) 之间,每 5 分钟运行一次 |
以下示例说明如何将 Cron 表达式与 AWS CLI put-rule 命令结合使用。第一个示例创建在每天中午 12:00 (UTC) 触发的规则。
aws events put-rule --schedule-expression "cron(0 12 * * ? *)" --name
MyRule1
下一个示例创建在每天下午 2:00 过后的 5:35 (UTC) 触发的规则。
aws events put-rule --schedule-expression "cron(5,35 14 * * ? *)" --name
MyRule2
下一个示例创建从 2002 到 2005 年在每个月最后一个周五的上午 10:15 (UTC) 触发的规则。
aws events put-rule --schedule-expression "cron(15 10 ? * 6L 2002-2005)" --name
MyRule3
Rate 表达式
Rate 表达式在创建计划事件规则时启动,然后按照其定义的计划运行。
Rate 表达式有两个必需字段。这些字段用空格分隔。
语法
rate(value unit)
- value
-
正数。
- unit
-
时间单位。
有效值:minute | minutes | hour | hours | day | days
限制
如果值等于 1,则单位必须为单数。同样,对于大于 1 的值,单位必须为复数。例如,rate(1 hours) 和 rate(5 hour) 无效,而 rate(1 hour) 和 rate(5 hours) 有效。
示例
以下示例说明如何将 Rate 表达式与 AWS CLI put-rule 命令结合使用。
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