AWS EventBridge で日を跨ぐスケジュールを設定する
AWS EventBridge を使用して日本時間で日を跨ぐスケジュールを設定したい場合、特定の工夫が必要です。本記事では、特に「日本時間で 08:00 から 18:00」を 10 分おきにトリガーする設定を例に解説します。
EventBridge の cron 式の仕組み
EventBridge の cron
式は以下の形式で記述します:
cron(Minute Hour Day-of-Month Month Day-of-Week Year)
- Minute: 0–59
- Hour: 0–23(UTC 時間)
- Day-of-Month: 1–31
- Month: 1–12
- Day-of-Week: MON–SUN
- Year: オプション
ただし、1 つの cron
式で時間範囲(例: 日本時間 08:00–18:00)を直接表現することはできません。EventBridge の cron
式は UTC ベースで動作するため、日本時間を考慮するには UTC に変換して設定する必要があります。
日を跨ぐスケジュールの設定方法
目標
- 範囲: 日本時間では 08:00 から 18:00(UTC で 23:00 から翌日の 09:00)。
- 間隔: 10 分おきにトリガー。
cron
式
正しい 以下の式を使用します:
cron(0/10 0-9,23 * * ? *)
式の詳細
-
0/10
: 毎時 0 分から 10 分おきに実行(例: 0, 10, 20, ..., 50 分)。 -
0-9,23
: 午前 0 時から午前 9 時、および 23 時(UTC)に実行。 -
* * ? *
: 他のフィールド(日、月、曜日)はすべての日を対象。
この式の動作(UTC と JST)
UTC
- 実行時間: 23:00, 23:10, ..., 23:50
- 翌日の 00:00, 00:10, ..., 09:50
日本時間(JST)
- 実行時間: 08:00, 08:10, ..., 08:50
- 09:00, 09:10, ..., 18:50
注意点
-
タイムゾーン:
EventBridge のcron
式は UTC ベースです。そのため、日本時間でのスケジュール(例: 08:00 から 18:00)を実現するには、UTC に変換して設定する必要があります(例: JST 08:00 = UTC 23:00)。 -
EventBridge Scheduler を使用する場合:
新しい EventBridge Scheduler を使用すれば、タイムゾーンを指定できます。ただし、既存の EventBridge ルールとの整合性を考慮する場合は、引き続きcron
式を使う方法が有効です。
まとめ
AWS EventBridge で日を跨ぐスケジュールを設定する場合、cron
式を工夫することで柔軟に対応できます。本記事では、日本時間で 08:00 から 18:00(UTC 23:00 から翌日の 09:00)までを 10 分おきに実行する設定を紹介しました。
新しい EventBridge Scheduler を使えばタイムゾーンを指定できますが、既存のルールとの整合性を保つために cron
式で実装する方法は今後も活用されるでしょう。
ぜひ、実際のユースケースに合わせてこの方法を試してみてください!
Discussion