在 EC2 Image Builder 中使用 cron 表达式 - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 EC2 Image Builder 中使用 cron 表达式

使用 EC2 Image Builder 的 cron 表达式来设置时间窗口以刷新映像,作出适用于管道基础映像和组件的更新。管道刷新的时间窗口从您在 cron 表达式中设置的时间开始。您可以在 cron 表达式中将时间设置为分钟。您的管道构建可以在开始时间或之后运行。

有时可能需要几秒钟或长达一分钟的时间构建才能开始运行。

注意

默认情况下,Cron 表达式使用通用协调时间 (UTC) 时区,或者您可以指定时区。有关 UTC 时间的更多信息以及要查找您所在时区的偏移量,请参阅时区缩写-全球列表。

镜像生成器中 Cron 表达式支持的值

EC2 Image Builder 使用由六个必填字段组成的 cron 格式。每个字段都用一个空格与其他字段隔开,没有前导或尾随空格:

<Minute> <Hour> <Day> <Month> <Day of the week> <Year>

下表列出了必需的 cron 条目支持的值。

Cron 表达式支持的值
字段 通配符
分钟 0-59 , - * /
小时 0-23 , - * /
1-31 , - * ? / L W
1-12jan-dec , - * /
一星期中的日子。 1-7sun-sat , - * ? L #
1970-2199 , - * /
通配符

下表描述 Image Builder 如何在 cron 表达式中使用通配符。请记住,在您指定的构建时间之后,最多可能需要一分钟才能开始构建。

Cron 表达式支持的通配符
通配符 描述
, ,(逗号)通配符包含其他值。在字段中,jan,feb,mar 将包含 January、February 和 March。
- -(破折号)通配符用于指定范围。在“日”字段中,1-151-15 将包含指定月份的 1 - 15 日。
* *(星号)通配符包含该字段的所有有效值。
? ?(问号)通配符用于指定字段值取决于其他设置。对于 “日” 和 “D” ay-of-week 字段,当指定一个或包含所有可能的值 (*) 时,另一个必须是 a ?。不能同时指定两者。例如,如果您在 “日” 字段7中输入 a(在当月的第七天运行构建),则 D ay-of-week 位置必须包含 a ?
/ /(正斜杠)通配符用于指定增量。例如,如果您希望每隔一天运行构建,请在“日”字段中输入 */2
L 任一“日”字段中的 L 通配符指定最后一天:“28-31” 表示月份的最后一天,具体取决于月份,或者“星期日”表示一周中的最后一天。
W D ay-of-month 字段中的 W 通配符指定工作日。在 D ay-of-month 字段中,如果您在之前输入一个数字W,则表示您要将最接近该天的工作日作为目标。例如,如果您指定 3W,则希望您的构建在最接近该月第三天的工作日运行。
# # (hash) 仅允许用于“星期几”字段,并且后面必须有一个介于 1 到 5 之间的数字。该数字指定了给定月份中哪几周需要运行构建。例如,如果您希望在每个月的第二个星期五运行构建,请使用 fri#2 用于“星期几”字段。
限制
  • 您不能在同一 cron 表达式中指定 D ay-of-month 和 D ay-of-week 字段。如果您在其中一个字段中指定了值*(或一个 *),则必须在另一个字段中使用 ??

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

在 EC2 Image Builder 中的 cron 表达式示例

在 Image Builder 控制台中输入的 Cron 表达式与 API 或 CLI 中输入的 Cron 表达式不同。要查看示例,请选择适用于您的选项卡。

Image Builder console

以下示例显示了可以在控制台中输入构建计划的 cron 表达式。UTC 时间使用 24 小时制指定。

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

0 10 * * ? *

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

15 12 * * ? *

UTC 时间每天午夜运行

0 0 * * ? *

每个工作日上午 10:00 (UTC) 运行

0 10 ? * 2-6 *

每个工作日晚上 6 点 (UTC) 运行

0 18 ? * mon-fri *

每月第 1 天上午 8:00 (UTC) 运行

0 8 1 * ? *

每个月的第二个星期二晚上 10:30(UTC)运行

30 22 ? * tue#2 *

提示

如果您不希望管道作业在运行时延长到第二天,请确保在指定开始时间时将构建时间考虑在内。

API/CLI

以下示例显示了可以使用 CLI 指令或 API 请求输入构建计划的 cron 表达式。仅显示 cron 表达式。

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

cron(0 10 * * ? *)

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

cron(15 12 * * ? *)

UTC 时间每天午夜运行

cron(0 0 * * ? *)

每个工作日上午 10:00 (UTC) 运行

cron(0 10 ? * 2-6 *)

每个工作日晚上 6 点 (UTC) 运行

cron(0 18 ? * mon-fri *)

每月第 1 天上午 8:00 (UTC) 运行

cron(0 8 1 * ? *)

每个月的第二个星期二晚上 10:30(UTC)运行

cron(30 22 ? * tue#2 *)

提示

如果您不希望管道作业在运行时延长到第二天,请确保在指定开始时间时将构建时间考虑在内。

EC2 Image Builder 中的 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) 有效。