👻

AWS EventBridge で日を跨ぐスケジュールを設定する

2024/12/20に公開

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

注意点

  1. タイムゾーン:
    EventBridge の cron 式は UTC ベースです。そのため、日本時間でのスケジュール(例: 08:00 から 18:00)を実現するには、UTC に変換して設定する必要があります(例: JST 08:00 = UTC 23:00)。

  2. EventBridge Scheduler を使用する場合:
    新しい EventBridge Scheduler を使用すれば、タイムゾーンを指定できます。ただし、既存の EventBridge ルールとの整合性を考慮する場合は、引き続き cron 式を使う方法が有効です。


まとめ

AWS EventBridge で日を跨ぐスケジュールを設定する場合、cron 式を工夫することで柔軟に対応できます。本記事では、日本時間で 08:00 から 18:00(UTC 23:00 から翌日の 09:00)までを 10 分おきに実行する設定を紹介しました。

新しい EventBridge Scheduler を使えばタイムゾーンを指定できますが、既存のルールとの整合性を保つために cron 式で実装する方法は今後も活用されるでしょう。

ぜひ、実際のユースケースに合わせてこの方法を試してみてください!

Discussion