

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在映像建置器中使用 Cron 表達式
<a name="cron-expressions"></a>

使用 EC2 Image Builder 的 cron 表達式來設定時間範圍，透過適用於管道基礎映像和元件的更新來重新整理映像。管道重新整理的時間範圍從您在 Cron 表達式中設定的時間開始。您可以在 Cron 表達式中將時間設定為分鐘。您的管道建置可以在開始時間或之後執行。

有時可能需要幾秒鐘或一分鐘的時間，您的建置才會開始執行。

**注意**  
Cron 表達式預設使用國際標準時間 (UTC) 時區，或者您可以指定時區。如需 UTC 時間的詳細資訊，以及尋找時區的偏移量，請參閱[時區縮寫 – 全球清單](https://www.timeanddate.com/time/zones/)。

## Image Builder 中 cron 表達式的支援值
<a name="ib-cron-support"></a>

EC2 Image Builder 使用包含六個必要欄位的 Cron 格式。每一個都是以中間的空格分隔，沒有前置或結尾空格：

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

下表顯示支援的必要 cron 項目的值。


**Cron 運算式支援的值**  

| 欄位 | 值 | 萬用字元 | 
| --- | --- | --- | 
| 分鐘 | 0-59 | , - \* / | 
| 小時 | 0-23 | , - \* / | 
| 天 | 1-31 | , - \* ? / L W | 
| 月 | 1-12 或 jan-dec | , - \* / | 
| 星期幾 | 1-7 或 sun-sat | , - \* ? L \# | 
| 年 | 1970-2199 | , - \* / | 

**萬用字元**  
下表說明 Image Builder 如何使用萬用字元進行 Cron 表達式。請記住，在您指定開始建置的時間後，最多可能需要一分鐘的時間。


**Cron 運算式支援的萬用字元**  

| 萬用字元 | 描述 | 
| --- | --- | 
| , | , (逗號) 萬用字元包含額外的值。在月份欄位中， jan,feb,mar包含 1 月、2 月和 3 月。 | 
| - | - (破折號) 萬用字元用於指定範圍。在月份欄位中， 1-15包含指定月份的第 1 天到第 15 天。 | 
| \* | \* （星號） 萬用字元包含 欄位的所有有效值。 | 
| ? | ? （問號） 萬用字元指定欄位值取決於另一個設定。在星期幾和Day-of-week欄位中，指定一個 或包含所有可能的值 (\*) 時，另一個必須是 ?。您不能同時指定兩者。例如，如果您7在日期欄位中輸入 （在每月的第七天執行建置），Day-of-week幾位置必須包含 ?。 | 
| / | / (斜線) 萬用字元用於指定增量。例如，如果您希望建置每隔一天執行一次，\*/2請在日期欄位中輸入 。 | 
| L | 任一天欄位中的 L 萬用字元，指定最後一天：28-31 表示當月的日期，取決於當週日期的月份或星期日。 | 
| W | W 萬用字元在 Day-of-month (月中的日) 欄位可指定工作日。在Day-of-month欄位中，如果您在 之前輸入號碼W，這表示您想要將最接近該天的工作日設為目標。例如，如果您指定 3W，您希望組建在最接近當月第三天的工作日執行。 | 
| \# | \# （雜湊） 僅允許用於星期幾欄位，且後面必須加上介於 1 到 5 之間的數字。數字指定指定指定月份中哪些週數適用於要執行的組建。例如，如果您希望組建在每個月的第二個星期五執行，請在星期fri\#2幾欄位使用 。 | 

**限制**
+ 您無法在同一個 cron 表達式中指定 Day-of-month (月中的日) 和 Day-of-week (週中的日) 欄位。如果您在其中一個欄位中指定值或 ，則必須`?`在另一個`*`欄位中使用 。
+ 不支援頻率多於一分鐘的 Cron 表達式。

## Image Builder 中的 Cron 表達式範例
<a name="ib-cron-examples"></a>

映像建置器主控台的 Cron 表達式輸入方式與 API 或 CLI 不同。若要查看範例，請選擇適用於您的索引標籤。

------
#### [ 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 *`

**在每個月第一天的上午 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：00 (UTC) 執行**  
`cron(0 18 ? * mon-fri *)`

**在每個月第一天的上午 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}})
```

*value*  
正數。

*單位*  
時間的單位。所需單位可能不同，若值為 1，則需要 `minute`；若值超過 1，則需要 `minutes`。  
有效值：minute \| minutes \| hour \| hours \| day \| days (分鐘、數分鐘、小時、數小時、天、數天)

**限制**  
如果值等於 `1`，則單位必須為單數。同樣地，對於大於 `1` 的數值，單位必須為複數。例如，`rate(1 hours)` 與 `rate(5 hour)` 不是有效的，但 `rate(1 hour)` 與 `rate(5 hours)` 是有效的。