😊

EventBridge Schedulerの細かい話

2022/11/21に公開

2022/11/10に、Amazon EventBridge Schedulerという新機能が追加されました。個人的によく使うので嬉しいです。

使い方は他のブログを見ていただくことして、ここでは以下について小ネタを書きます。

  • Timezone
  • Time Frame
  • Flexible time windows

タイムゾーンがAsia/Tokyoになっている

これまでは、TimezoneはUTCが基本でしたが、デフォルトでAsia/Tokyoになっていました。リージョン設定がTokyoでなくても、デフォルトリージョンや言語設定を変えても変わらずで、OSのタイムゾーン設定(=ブラウザ)で決まるようです。

タイムフレーム

cronを指定したあと、期間を設定して有効にできます。

  • 時刻だけ入力すると動作しません(エラーにはならない)
  • 日付だけ入力すると0:00扱い 日付、時刻ともに入力が必要です。
  • 開始時刻を過去にするとエラーが出ます。5分前までは可能。

やってみる

cronを毎分動作するようにして、Start 20:35 End 20:40 にしてみます。EventBridge から SNS でemailを送ります。

Next 5 trigger dates という、次のトリガー時間が表示されています。UTCになるので11:36から11:40ですが、この画面では時刻表示が間違っています。正しくは11:35(20:35)からの毎分で、11:39(20:30)が最後のトリガーです。

実際の動作時刻を確認します。以下はメールボックス(Gmail)のスナップショットで、本文の冒頭が見えているのですが、Payloadに設定したスケジュール時刻({"ScheduledTime": "<aws.scheduler.scheduled-time>"})が表示されています。スケジュール時刻も、右側の受信時刻35分から39分になっていますね。

Flexible time windows

Amazon EventBridge スケジューラは柔軟な時間枠をサポートするため、ターゲットを正確にスケジュールして呼び出す必要のないユースケースでは、スケジュールを分散させて、トリガーの信頼性を向上させることができます。

  • 指定した範囲で、実行時間が分散されます
    • ただし、一度設定するとオフセットは同じ(例えば、毎回5分25秒ずれるとか)
    • 設定しなおすと、オフセットが変わる
  • 「トリガーの信頼性を向上」とはいえ、リトライ機能があるのであまり意味がないのでは?
  • 英語だとFlexible time windowsなのに、日本語だとフレックスタイムウィンドウです。私はコンソールを英語で使っているのもあり、なにかと話が通じにくくなるので(window"s"はともかく)そのままカナにしたほうが良かったのでは、と思っています。

使いどころ?

  • Flexible time windows、使いどころがよく分からないです(信頼性がそもそも高いと思っているので)。
  • 想像でしかありませんが、AWSは「00分のようなキリのいいタイミング」での実行が多すぎて困っていて、EventBridge実行の偏りを緩和したいのでは?

・・・割引があったら使う人もいるのかな、と思ってつぶやいたらEventBridgeのPMの方からリプライきました(たぶん意図は伝わってないのだけど。見てるんだな、、と。)

まとめ

  • いつもお世話になっているEventBridgeの新機能Schedulerを使ってみました。良さそうです。
  • Flexible time windowsは気になることがあるのでいろいろ試してみたいです。

Discussion