

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

# 在 Image Builder 中使用 cron 表达式
<a name="cron-expressions"></a>

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

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

**注意**  
默认情况下，Cron 表达式使用通用协调时间 (UTC) 时区，或者您也可以自己指定时区。有关 UTC 时间的更多信息以及要查找您所在时区的偏移量，请参阅[时区缩写-全球列表。](https://www.timeanddate.com/time/zones/)

## 镜像生成器中 Cron 表达式支持的值
<a name="ib-cron-support"></a>

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

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

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


**Cron 表达式支持的值**  

| 字段 | 值 | 通配符 | 
| --- | --- | --- | 
| 分钟 | 0-59 | , - \$1 / | 
| 小时 | 0-23 | , - \$1 / | 
| 天 | 1-31 | , - \$1 ? / L W | 
| Month | 1-12 或 jan-dec | , - \$1 / | 
| 一星期中的日子。 | 1-7 或 sun-sat | , - \$1 ? L \$1 | 
| Year | 1970-2199 | , - \$1 / | 

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


**Cron 表达式支持的通配符**  

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

**限制**
+ 您无法在同一 cron 表达式中为 Day-of-month 和 Day-of-week 字段同时指定值。如果您在其中一个字段中指定了值`*`（或一个 \$1），则必须在另一个字段中使用 ?`?`。
+ 不支持产生的速率快于一分钟的 Cron 表达式。

## Image Builder 中的 cron 表达式示例
<a name="ib-cron-examples"></a>

在 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 *)`

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

------

## Image Builder 中的 rate 表达式
<a name="ib-rate-expressions"></a>

Rate 表达式在创建计划事件规则时启动，然后按照其定义的计划运行。

Rate 表达式有两个必需字段。这些字段用空格分隔。

**语法**

```
rate(value unit)
```

*值*  
一个正数。

*unit*  
时间单位。需要不同的单位，例如，对于值 1 为 `minute`；对于大于 1 的值 1 为 `minutes`。  
有效值：minute \$1 minutes \$1 hour \$1 hours \$1 day \$1 days

**限制**  
如果值等于 `1`，则单位必须为单数。同样，对于大于 `1` 的值，单位必须为复数。例如，`rate(1 hours)` 和 `rate(5 hour)` 无效，但 `rate(1 hour)` 和 `rate(5 hours)` 有效。