Posted at

Amazon CloudWatch Events で cron 式を使う場合は時差に気をつける


Amazon CloudWatch Events の cron 式で使うタイムゾーンは UTC

ルールのスケジュール式 - Amazon CloudWatch Events


cron または rate 式を使用して、CloudWatch イベント で自動化されたスケジュールに基づいて自己トリガーするルールを作成できます。すべてのスケジュールされたイベントは UTC タイムゾーンを使用し、スケジュールの最小精度は 1 分です。



日本とロンドンとの時差

日本標準時 (JST) と協定世界時 (UTC) との時差は、9時間。

Ruby で時差を求める - Qiita


東京が 0時のとき、ロンドンは前日の15時、ニューヨークは前日の10時、ライン諸島は同日の 5時

2018年 1月 1日 0時: 東京

2017年12月31日15時: ロンドン



フォーマットの違いを意識しておく


crontab のフィールド・フォーマット

分 時 日 月 曜 コマンド


Amazon CloudWatch Events の cron 式フォーマット

crontab とちがって「年」のフィールドがある。

cron(分 時 日 月 曜 年)

また、曜日のフィールドの「*」「?」の扱いにも気をつける。

ルールのスケジュール式 - Amazon CloudWatch Events


ワイルドカード * (アスタリスク) にはフィールドのすべての値が含まれます。時間フィールドの、* にはすべての時間が含まれています。[*] を日および曜日フィールドの両方に使用することはできません。一方に使用する場合は、もう一方に [?] を使用する必要があります。

? (疑問符) ワイルドカードはいずれかを意味します。[日] フィールドに 7 と入力し、7 日が何曜日であってもかまわない場合、[曜日] フィールドに ? を入力できます。



具体例

例えば毎日0時0分に cron で実行している処理があった場合は、

0 0 * * * /bin/sh /home/foo/bar.sh

以下のように、9時間前 (15時0分) の cron 式に置き換える。

cron(0 15 * * ? *)


参考資料