本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
EventBridge 排程器中的排程類型
下列主題說明 Amazon EventBridge Scheduler 支援的不同排程類型,以及排程 EventBridge 器如何處理日光節約時間,以及在不同時區中排程。設定排程時,您可以從三種排程型態中進行選擇:以費率為基準、以 Cronn 為基準及一次性排程。
以費率為基準與以客戶為基準的排程都是重複產生排程。您可以針對要設定的排程類型,使用排程運算式來設定每個週期性排程類型,並指定 EventBridge Scheduler 評估運算式的時區。
一次性排程是只呼叫目標一次的排程。您可以透過指定「排程器」評估 EventBridge 排程的時間、日期和時區來設定一次性排程。
注意
EventBridge 排程器上的所有排程類型都會以 60 秒精確度呼叫其目標。這表示,如果您將排程設定為執行時間1:00
,則會在1:00:00
和API之間叫用目標1:00:59
,假設未設定彈性時間範圍。
您可以使用下列各節來瞭解如何設定每個週期性排程類型的排程運算式,以及如何在 EventBridge Scheduler 上設定一次性排程。
以速率為基礎的
以費率為基準的排程會在您為排程指定的開始日期之後開始,並以您定義的一般費率執行,直到排程的結束日期為止。您可以使用以費率為基礎的排程來設定最常見的經常性排程使用案例。例如,如果您希望排程每 15 分鐘、每兩小時或每五天呼叫一次目標,則可以使用以費率為基準的排程來達成此目標。您可以使用費率運算式來設定以比率為基礎的排程。
使用以費率為基礎的明細表時,您可以使用StartDate
性質來設定明細表的第一次出現。如果您未提供以費率StartDate
為基準的排程,則排程會立即開始呼叫目標。
費率運算式有兩個必填欄位,並以空格分隔,如下所示。
語法
rate(
value
unit
)
- value
-
正數。
- 單位
-
您希望排程呼叫其目標的時間單位。
有效輸入:
minutes
|hours
|days
範例
下列範例顯示如何將費率運算式與 AWS CLI create-schedule
命令搭配使用,以設定以速率為基礎的排程。此範例會建立每五分鐘執行一次的排程,並使用範本化的SqsParameters
目標類型將訊息傳遞至 Amazon SQS 佇列。
由於此範例並未設定--start-date
參數的值,因此排程會在您建立並啟動它之後立即開始呼叫其目標。
$
aws scheduler create-schedule --schedule-expression 'rate(5 minutes)' --name
schedule-name
\ --target '{"RoleArn": "role-arn
", "Arn": "QUEUE_ARN
", "Input": "TEST_PAYLOAD
" }' \ --flexible-time-window '{ "Mode": "OFF"}'
以 Cron 為基礎的排程
Cron 運算式會建立精細的週期性排程,並在您選擇的特定時間執行。 EventBridge Scheduler 支援在通用協調時間 (UTC) 或您在建立排程時指定的時區中設定以 Cron 為基礎的排程。使用以 Cron 為基礎的排程,您可以更好地控制排程執行的時間和頻率。當您需要排程器的費率運算式不支援的自訂週期排程時,請使用以 Cron 為基礎的 EventBridge 排程。例如,您可以建立在上午 8:00 執行的以 Cron 為基礎的排程。PST在每個月的第一個星期一。您可以使用 cron 運算式來設定以 C ron 為基礎的排程。
Cron 運算式包含五個以空格分隔的必要欄位:分鐘、小時 day-of-month、月 day-of-week,以及一個選擇性欄位 (年份),如下所示。
語法
cron(
minutes
hours
day-of-month
month
day-of-week
year
)
欄位 | Values (數值) | 萬用字元 |
---|---|---|
分鐘 |
0-59 |
, - * / |
小時 |
0-23 |
, - * / |
D ay-of-month |
1-31 |
, - * ? / L W |
月 |
一至十二或 JAN-DEC |
, - * / |
D ay-of-week |
1 至 7 號或 SUN-SAT |
, - * ? L # |
年 |
1970-2199 |
, - * / |
萬用字元
-
, (逗號) 萬用字元包含額外的值。在「月」欄位中,JANFEB,MAR包括「一月」、「二月」和「三月」。
-
- (破折號) 萬用字元用於指定範圍。在日欄位,1-15 包含指定月份的 1 至 15 號。
-
* (星號) 包含欄位中所有的值。在 Hours (小時) 欄位,* 包含每個小時。您不能在 D ay-of-month 和 D ay-of-week 欄位中使用 *。若您在其中一個欄位使用它,您必須在另一個欄位使用 ?。
-
/ (斜線) 萬用字元用於指定增量。在 Minutes (分鐘) 欄位,您可以輸入 1/10 指定每十分鐘的間隔,從小時的第一分鐘開始 (例如第 11、第 21、第 31 分鐘等)。
-
? (問號) 萬用字元用於表示不限定任何一個。在 D 字ay-of-month 段中,您可以輸入 7,如果一周中的任何一天可以接受,則可以輸入? 在 D 字ay-of-week段中。
-
D ay-of-month 或 D ay-of-week 欄位中的 L 萬用字元會指定月份或週的最後一天。
-
D ay-of-month 欄位中的
W
萬用字元指定工作日。在 D ay-of-month 欄位中,3W
指定最接近月份第三天的星期幾。 -
D ay-of-week 欄位中的 # 萬用字元會指定一個月內星期中指定日期的特定執行個體。例如,3#2 代表則該月的第二個星期二:3 是指星期二,因為它是每週的第三天,2 指的是一個月內該類型的第二天。
注意
如果您使用 '#' 字元,則只能在 day-of-week 欄位中定義一個運算式。例如:
"3#1,6#3"
是無效的,因為它被轉譯為兩個表達式。
範例
下列範例顯示如何使用 cron 運算式搭配命 AWS CLI create-schedule
令來設定 cron 型排程。此範例會建立一個排程,在 2022 年至 2023 年期間每個月最後一個星期五上午 10:15 UTC +0 執行,並使用範SqsParameters
本化的目標類型將訊息傳送至 Amazon SQS 佇列。
$
aws scheduler create-schedule --schedule-expression "cron(15 10 ? * 6L 2022-2023)" --name
schedule-name
\ --target '{"RoleArn": "role-arn
", "Arn": "QUEUE_ARN
", "Input": "TEST_PAYLOAD
" }' \ --flexible-time-window '{ "Mode": "OFF"}'
一次性排程
一次性排程只會在您使用有效日期和時間戳記指定的日期和時間呼叫目標一次。 EventBridge 排程器支援使用全球協調時間 (UTC) 或您在建立排程時指定的時區排程。
注意
一次性排程在完成執行並呼叫其目標後,仍會計入您的帳戶配額。我們建議您在完成執行後刪除一次性排程。
您可以使用 at 運算式設定一次性排程。at 運算式是由您希望 EventBridge 排程器呼叫排程的日期和時間所組成,如下所示。
語法
at(
yyyy-mm-ddThh:mm:ss
)
當您設定一次性排程時,排 EventBridge 程器會忽略EndDate
您為排程所指定的,StartDate
而且會忽略您指定的
範例
下列範例顯示如何使用 at 運算式搭配命 AWS CLI create-schedule
令來設定一次性排程。此範例會建立一個排程,該排程在 2022 年 11 月 20 日下午 1 點 UTC -8 點執行一次,並使用範本化的SqsParameters
目標類型將訊息傳遞至 Amazon SQS 佇列。
$
aws scheduler create-schedule --schedule-expression "at(2022-11-20T13:00:00)" --name
schedule-name
\ --target '{"RoleArn": "role-arn
", "Arn": "QUEUE_ARN
", "Input": "TEST_PAYLOAD
" }' \ --schedule-expression-timezone "America/Los_Angeles" --flexible-time-window '{ "Mode": "OFF"}'
EventBridge 排程器上的時區
EventBridge 排程器支援在您指定的任何時區中設定 cron 型和一次性排程。 EventBridge 排程器會使用由網際網路號碼指派授權單位 (IANA) 所維護的時區資料庫
使用 AWS CLI,您可以設定要 EventBridge Scheduler 使用--schedule-expression-timezone
參數評估排程的時區。例如,下列命令會建立一個以 Cron 為基礎的排程,以便在美國/紐約每天早上 8:30 叫用範本化 Amazon SQS SendMessage
目標。
$
aws scheduler create-schedule --schedule-expression "cron(30 8 * * ? *)" --name schedule-in-est \ --target '{"RoleArn": "
role-arn
", "Arn": "QUEUE_ARN
", "Input": "This schedule runs in the America/New_York time zone." }' \ --schedule-expression-timezone "America/New_York" --flexible-time-window '{ "Mode": "OFF"}'
EventBridge 排程器上的日光節約時間
EventBridge 排程器會自動調整您的日光節約時間排程。當時間在 Spring 中向前移動時,如果 cron 表達式落在不存在的日期和時間上,則會跳過您的計劃調用。當秋季時間向後移動時,您的排程只會執行一次,而不會重複呼叫。以下調用通常發生在指定的日期和時間。
EventBridge 排程器會根據您在建立排程時指定的時區來調整排程。如果您在 America/New_York 中設定排程,則您的排程會在該時區的時間變更時進行調整,而當西海岸時間變更時,美洲/洛杉磯的排程會在三小時後調整。
對於以費率days
為基礎的排程,例如rate(1 days)
,days
代表時鐘 24 小時的持續時間。這表示當日光節約時間導致一天縮短至 23 小時,或延長至 25 小時, EventBridge Scheduler 仍會在排程最後一次呼叫後 24 小時評估比率運算式。
注意
根據當地的規則和規定,某些時區不會遵守夏令時。如果您在未遵守日光節約時間的時區中建立 EventBridge 排程,Scheduler 不會調整您的排程。節省日光的時間調整不適用於全球協調時間的排程 ()。UTC
範例
假設您在美國/洛杉磯使用下列 cron 運算式建立排程的案例:。cron(30 2 * * ? *)
此排程會在指定時區的每天上午 2:30 執行。
-
向前春天 — 當春季時間從上午 1:59 向前移至凌晨 3:00 時, EventBridge 排程器會略過當天的排程呼叫,並在次日恢復正常執行排程。
-
倒退 — 當秋季時間從上午 2:59 向後移至凌晨 2:00 時, EventBridge 排程器只會在工作班次發生前的上午 2:30 執行排程一次,但不會在時間偏移之後的上午 2:30 再次重複排程呼叫。