LoginSignup
0
0

Amazon EventBridgeをCfnで作成するときのcron式

Posted at

はじめに

EC2の夜間停止設定を行うときにCloudFormationを使いました。
その時にややこしかったcron式についてまとめます。

問題

EC2を起動しておきたい時間帯は8:00~19:30の間で、それ以外の平日夜間と土日は
EC2を停止させる設定をAWS EventBridgeのルールで実現します。

その設定でcron式を用いるのですが、これが少しややこしく、
慣れていない方にとっては理解に少々時間がかかるかもしれません。

実際、私は10分ほどかかりました。

最初に作成したCloudformationテンプレート以下のとおりです。

Cloudformationの内容抜粋
Parameters:
  ScheduleStartTime:
    Type: String
    Default: "cron(0 8 ? * MON-FRI *)"
  ScheduleStopTime:
    Type: String
    Default: "cron(30 19 ? * MON-FRI *)"
--------------------------
(省略)

ぱっと見、上記のコードでうまく設定できているような気がします。

ですが、このままでは17時から起動し、夜中の4時30分に停止するのような設定になってしまいます。

解決方法

EventBridgeのルールでcron式を用いる場合、UTC時間で考える必要があります。
詳しくは「UTC」と「JST」 - Linux技術者認定 LinuC | LPI-Japanを参考にしてほしいのですが、簡単にまとめると以下の通りです。

  • UTCは協定世界時
  • 経度0度の場所の時間
  • JST(日本標準時)との時差は9時間

上記を加味すると、EventBridgeでのcron式の設定は以下のようにする必要がるのです。

Cloudformationの内容抜粋
Parameters:
  ScheduleStartTime:
    Type: String
    Default: "cron(0 23 ? * MON-FRI *)"
  ScheduleStopTime:
    Type: String
    Default: "cron(30 10 ? * MON-FRI *)"
--------------------------
(省略)

おわりに

EventBridge ルールのcron式もEventBridge スケジュールのcron式のように
JSTで設定できれば早いのに。。。

参考

「UTC」と「JST」 - Linux技術者認定 LinuC | LPI-Japan

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0