タグから探す
国/地域
その他
カテゴリから探す
タグから探す
国/地域
UAE (2) イタリア (9) オーストリア (31) カンボジア (14) キプロス (19) クロアチア (5) ジブラルタル (4) スウェーデン (2) スペイン (24) スロバキア (14) スロベニア (3) チェコ (16) デンマーク (6) ドイツ (29) ハンガリー (15) ベトナム (3) ポルトガル (15) ポーランド (2) マルタ (20) マレーシア (1) 中国・香港 (7) 台湾 (35) 日本 (263) 韓国 (3)
その他
Cocoon (5) SIM (9) SWELL (4) テック (36) バス (21) マイクロツーリズム (23) ライフ (68) 予約手配 (20) 商品レビュー (25) 旅行記 (395) 映画アニメ聖地 (11) 温泉 (25) 船 (35) 電車 (158) 飛行機 (45)
カテゴリから探す
EventBridgeのCron設定でハマったところと解決方法をメモしておきます。
EC2を定期的に実行させたいときに起動、それ以外シャットダウンという運用をしており、AWSサービスの1つである、EventBridgeを利用しています。
EventBridgeでは、Cron式を設定してスケジュールを決めているのですが、設定するのにはまったところをメモしておきます。
cron(分 時間 日付 月 曜日 年)
書式は上記の通りです。
crontabであれば設定できるようですが、EventBridgeではそのような指定はできないようです。(少なくともコンソールでの登録では)。そして少しクセもあります。
例えば「毎日の12:00」とするケース、
×:間違い
cron(00 12 * * * *)
〇:正解
cron(00 12 * * ? *)
これはAWSのルールスケジュール式の定義に、
cron 式の日フィールドと曜日フィールドを同時に指定することはできません。一方のフィールドに値 (または *) を指定する場合、もう一方のフィールドで ? (疑問符) を使用する必要があります。
引用:ルールのスケジュール式/AWS
と記載があります。
日付、時刻については「ローカルタイム」の表示にできるのでイメージしやすいので間違うことはないでしょう。問題は曜日指定です。
前提として、曜日は値として日曜日を基準に、「1~7」あるいは「SUN~SAT」のどちらかの値を利用可能です。
例えば「日曜日の朝3時」
×:間違い
cron(00 18 * * 1 *)
〇:正解
cron(00 18 * * 7 *)
日曜日(1)のはずなのに、土曜日(7)を指定?
これは日本とUTC、つまり世界標準時の時差が原因です。よって曜日を指定する際は下記のような考慮が必要です。
UTC | JST | ||||
---|---|---|---|---|---|
FROM | TO | 曜日 | FROM | TO | 曜日 |
00:00 | 14:59 | N | 09:00 | 23:59 | N |
15:00 | 23:59 | N | 00:00 | 08:59 | N+1 |
日本時間はUTC+9なので、数値は-9すればOK。これはまあわかりやすい。
そして曜日ですが、上図のように日本時間の「00:00~08:59」というのは微妙なゾーンであり、この間の時間帯というのはまだUTC的には前日です。
つまり日本の日曜日のつもりで指定したのに、UTC基準なので実は火曜日になっていることになります。
ややこしいのですが、日本時間00:00~08:59の間を指定する際は、下記のようにすればOKです。
JST | 日本時間 | ||
---|---|---|---|
曜日 | From | To | Cron |
日 | 00:00 | 08:59 | 7 |
日 | 09:00 | 23:59 | 1 |
月 | 00:00 | 08:59 | 1 |
月 | 09:00 | 23:59 | 2 |
火 | 00:00 | 08:59 | 2 |
火 | 09:00 | 23:59 | 3 |
水 | 00:00 | 08:59 | 3 |
水 | 09:00 | 23:59 | 4 |
木 | 00:00 | 08:59 | 4 |
木 | 09:00 | 23:59 | 5 |
金 | 00:00 | 08:59 | 5 |
金 | 09:00 | 23:59 | 6 |
土 | 00:00 | 08:59 | 6 |
土 | 09:00 | 23:59 | 7 |
例えば「月曜から金曜の朝3時」と指定する場合は
×:間違い
cron(00 18 ? * 2-6 *)
〇:正解
cron(00 18 ? * 1-5 *)
となります。
これで基本的なAWSにおけるCron式は設定できます。
式はレビューできますので、いろいろ試してみるのも手です。
また設定で引っかかった所があれば更新します。
この記事が気に入ったら
いいね または フォローしてね!
コメント