

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

# 在 Amazon EventBridge 中設定排程規則 （舊版） 的排程模式
<a name="eb-scheduled-rule-pattern"></a>

**注意**  
排程規則是 EventBridge 的舊版功能。  
EventBridge 提供更靈活且強大的方法來集中大規模建立、執行和管理排程任務：EventBridge 排程器。使用 EventBridge 排程器，您可以使用週期性模式的 Cron 和 Rate 表達式來建立排程，或設定一次性調用。您可以設定彈性的交付時段、定義重試次數上限，以及設定失敗的 API 調用的最長保留時間。  
排程器可高度自訂，並提供比排程規則更佳的可擴展性，具有更廣泛的目標 API 操作 AWS 和服務。我們建議您使用排程器來排程叫用目標。  
如需詳細資訊，請參閱 [建立排程](using-eventbridge-scheduler.md#using-eventbridge-scheduler-create)或 *[EventBridge 排程器使用者指南](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html)*。

當您在 EventBridge 中建立排程規則時，您可以指定排程模式來決定 EventBridge 何時執行規則：
+ 使用 *cron* 表達式在特定時間和日期執行規則。
+ 使用*速率*表達式定期執行規則。

## Cron 表達式
<a name="eb-cron-expressions"></a>

Cron 表達式有六個必要欄位，以空格隔開。

**語法**

```
cron(fields)
```


| **欄位** | **Values (數值)** | **萬用字元** | 
| --- | --- | --- | 
|  分鐘  |  0-59  |  , - \$1 /  | 
|  小時  |  0-23  |  , - \$1 /  | 
|  月中的日  |  1-31  |  , - \$1 ? / L W  | 
|  月  |  1-12 或 JAN-DEC  |  , - \$1 /  | 
|  週中的日  |  1-7 或 SUN-SAT  |  , - \$1 ? L \$1  | 
|  年  |  1970-2199  |  , - \$1 /  | 

**萬用字元**
+ **,** (逗號) 萬用字元包含額外的值。在月欄位，JAN、FEB、MAR 包括一月、二月與三月。
+ **-** (破折號) 萬用字元用於指定範圍。在日欄位，1-15 包含指定月份的 1 至 15 號。
+ **\$1** (星號) 包含欄位中所有的值。在 Hours (小時) 欄位，**\$1** 包含每個小時。您無法在月中的特定一天和週中的特定一天兩個欄位同時使用 **\$1**。若您在其中一個欄位使用它，您必須在另一個欄位使用 **?**。
+ **/** (斜線) 萬用字元用於指定增量。在 Minutes (分鐘) 欄位，您可以輸入 1/10 指定每十分鐘的間隔，從小時的第一分鐘開始 (例如第 11、第 21、第 31 分鐘等)。
+ **?** (問號) 萬用字元用於表示不限定任何一個。在月中的日欄位，您可以輸入 **7**，如果您不在意這個月的 7 號是星期幾，就可以在月中的日欄位中輸入 **?**​。
+ **L** 萬用字元在 Day-of-month (月中的日) 或 Day-of-week (週中的日) 欄位可指定月份或週的最後一天。
+ **W** 萬用字元在 Day-of-month (月中的日) 欄位可指定工作日。在 Day-of-month (月中的日) 欄位，**3W** 指定的是月份中最接近第三個工作日的日子。
+ **\$1** 萬用字元在 Day-of-week (週中的日) 欄位可指定某個月中某週特定日子的特定執行個體。例如，3\$12 代表則該月的第二個星期二：3 是指星期二，因為它是每週的第三天，2 指的是一個月內該類型的第二天。
**注意**  
如果您使用 '\$1' 字元，則只能在星期幾欄位中定義一個表達式。例如：`"3#1,6#3"` 是無效的，因為它被轉譯為兩個表達式。

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

**範例**  
使用排程建立規則時，您可以使用下列 cron 字串範例。


| 分鐘 | 小時 | 月中的日 | 月 | 週中的日 | 年 | 意義 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  0  |  10  |  \$1  |  \$1  |  ?  |  \$1  |  在每天上午 10:00 (UTC\$10) 執行  | 
|  15  |  12  |  \$1  |  \$1  |  ?  |  \$1  |  在每天下午 12:15 (UTC\$10) 執行  | 
|  0  |  18  |  ?  |  \$1  |  MON-FRI  |  \$1  |  在每週一至週五下午 6:00 (UTC\$10) 執行  | 
|  0  |  8  |  1  |  \$1  |  ?  |  \$1  |  在每個月第 1 天上午 8:00 (UTC\$10) 執行  | 
|  0/15  |  \$1  |  \$1  |  \$1  |  ?  |  \$1  |  每 15 分鐘執行  | 
|  0/10  |  \$1  |  ?  |  \$1  |  MON-FRI  |  \$1  |  在週一至週五每 10 分鐘執行  | 
|  0/5  |  8-17  |  ?  |  \$1  |  MON-FRI  |  \$1  |  在週一至週五上午 8:00 至下午 5:55 (UTC\$10) 之間每 5 分鐘執行  | 
|  0/30  |  20-2  |  ?  |  \$1  |  MON-FRI  |  \$1  |  週一至週五每 30 分鐘執行一次，從開始日的晚上 10:00 至次日凌晨 2:00 (UTC) 在星期一早上 (UTC) 上午 12 點至凌晨 2 點執行。  | 



以下範例會建立在每天下午 12:00 UTC\$10 執行之規則。

```
aws events put-rule --schedule-expression "cron(0 12 * * ? *)" --name MyRule1
```

以下範例會建立在每天下午 2:05 至 2:35 UTC\$10 之間執行之規則。

```
aws events put-rule --schedule-expression "cron(5,35 14 * * ? *)" --name MyRule2
```

以下範例會建立規則，並在 2019 年至 2022 年每個月的最後一個週五 UTC\$10 時間上午 10:15 執行。

```
aws events put-rule --schedule-expression "cron(15 10 ? * 6L 2019-2022)" --name MyRule3
```

## Rate 運算式
<a name="eb-rate-expressions"></a>

*Rate 表達式*在您建立排程事件規則時開始，然後在定義的排程上執行。

Rate 表達式有六個必要欄位，以空格隔開。

**語法**

```
rate(value unit)
```

value  
正數。

單位  
時間的單位。所需單位可能不同，若值為 1，則需要 `minute`；若值超過 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) 為有效。

**範例**  
下列範例示範如何搭配 `put-rule`命令使用速率表達式 AWS CLI 。第一個範例會每分鐘觸發規則，下一個範例則會每 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
```