AWS EventBridgeのcron式の書き方 — 6フィールド・?・L・Wの独自仕様
AWS EventBridge(旧CloudWatch Events)のcron式は【6フィールド(分 時 日 月 曜日 年)】で、標準のcronとは仕様がかなり異なります。標準の式をそのまま貼ると動きません。
書式の要点(標準cronとの違い)
- フィールドは6つ: 分 時 日 月 曜日 年。全体を cron( ) で囲みます。
- 「日」と「曜日」は同時指定できず、使わない方に必ず『?』を書きます(両方に値や*を書くとエラー)。
- 独自拡張が使えます: L(月末・最終曜日)、W(最寄りの平日)、#(第n曜日。例: 6#3=第3金曜)。
- 曜日の番号が【1=日曜〜7=土曜】で、標準cron(0=日曜)と1つずれています。SUN,MONなどの英字表記が安全です。
- 通常のEventBridgeルールはUTC基準。EventBridge Schedulerを使うとタイムゾーン(Asia/Tokyo)を指定できます。
日本時間(JST)で指定するには
推奨はEventBridge Schedulerでタイムゾーンに Asia/Tokyo を指定する方法。従来のルールを使う場合はUTCで9時間引いて書きます。
コピペで使える設定例
平日の日本時間9時(UTC 0時)
cron(0 0 ? * MON-FRI *)毎月末日の日本時間0時(UTC 前日15時)
cron(0 15 L * ? *)第3金曜の日本時間10時(UTC 1時)
cron(0 1 ? * 6#3 *)つまずきポイント
- 『?』の書き忘れが最頻エラー。日か曜日のどちらかは必ず?にします。
- 曜日番号のズレ(1=日曜)に注意。数字ではなくMON等の英字で書くと事故を防げます。
- 標準cronの5フィールド式は使えません。上のツールは標準cron用なので、EventBridgeでは6フィールドに読み替えてください。
式を検証する(標準cron形式)
下のツールで式の意味と次回実行時刻を確認できます。このサービスはUTC基準のため、タイムゾーンを「UTC」に設定済みです。表示される時刻はあなたの手元(日本時間)で実際に動く時刻です。
次に実行される時刻
※ 時刻はお使いの端末のローカルタイムで計算しています。