AWS Cron の構文
EventBridge の式は cron(0 12 * * ? *) のような形で、分・時・日・月・曜日・年の 6 フィールドを持ちます。秒フィールドがないため、最小単位は 1 分です。曜日は 1(日曜日)〜 7(土曜日)で、MON-FRI のような略称も使えます。
守るべきルール
2 つの日付フィールドのどちらかは「?」にする必要があります。平日の朝なら cron(0 8 ? * MON-FRI *)、毎月 1 日なら cron(0 8 1 * ? *) です。年フィールドは必須で、毎年なら * を指定します。日付フィールドでは L・W・# が使え、たとえば cron(0 18 L * ? *) は毎月の最終日です。
タイムゾーン
EventBridge のスケジュールルールは常に UTC で実行されます。そのためツールは AWS の式をデフォルトで UTC で評価し、各実行の横にあなたの現地時刻を表示します。EventBridge Scheduler ではスケジュールにタイムゾーンを設定できるので、その場合はセレクターで同じタイムゾーンを選ぶと正しくプレビューできます。
cron と rate のどちらを使う?
15 分ごとのような固定間隔なら rate 式のほうが簡単です。rate(15 minutes) はルール作成時からカウントを始めます。平日の 08:00、月末、特定の年だけなど、カレンダー上の時刻に実行したい場合は cron を使います。EventBridge Scheduler では、1 回限りの at(...) スケジュールや、呼び出しを分散させるフレキシブルタイムウィンドウも使えます。
よくある質問
- AWS が Cron 式を受け付けないのはなぜですか?
- よくある原因は、6 つではなく 5 つのフィールドしかない、年フィールドがない、日または曜日に「?」がない、のいずれかです。エラーメッセージが問題のフィールドを示します。
- Lambda を 5 分ごとに実行するには?
- cron(0/5 * * * ? *) を使います。単純な間隔なら EventBridge は rate(5 minutes) も受け付けます。
- AWS の Cron は UTC ですか?
- EventBridge ルールは UTC です。EventBridge Scheduler ではスケジュールごとにタイムゾーンを設定できます。
- 最短の間隔は?
- 1 分です。AWS の Cron には秒フィールドがないためです。