规则的计划表达式 - Amazon CloudWatch 事件

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

规则的计划表达式

注意

Amazon EventBridge is the preferred way to manage your events. CloudWatch Events and EventBridge are the same underlying service and API, but EventBridge provides more features. Changes you make in either CloudWatch or EventBridge will appear in each console. For more information, see Amazon EventBridge.

可以使用 cron 或 rate 表达式在 CloudWatch Events 中创建按自动化计划自行触发的规则。所有计划的事件都使用 UTC 时区,计划的最小精度为 1 分钟。

CloudWatch Events 支持 cron 表达式和 rate 表达式。Rate 表达式更容易定义,但不提供 cron 表达式支持的精细安排控制。例如,使用 cron 表达式,您可以定义在每周或每月的某一天的指定时间触发的规则。相反,rate 表达式以常规速率触发规则,例如每小时一次或每天一次。

注意

CloudWatch Events 不在计划表达式中提供第二级精度。使用 cron 表达式的最高解析精度是一分钟。由于 CloudWatch Events 和目标服务的分布式特性,计划规则触发时间与目标服务实际执行目标资源的时间之间的延迟可能有几秒钟。您的计划规则会在这一分钟内触发,但不会精确到在第 0 秒时触发。

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

时间单位。需要不同的单位,例如,对于值 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 表达式与 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