EC2 AutoScaling の予定されたアクションで "L" を利用した cron 式は有効か教えてください
困っていること
EC2 AutoScaling の予定されたアクションを利用して、特定の日時にスケーリングするよう cron 式で設定したいと考えています。
月の最後の日から数えて 5 日前 「0 18 L-5 * * 」といった記述が可能か教えてください。
どう対応すればいいの?
cron 式に "L" を設定頂いた場合、想定通り月末にアクションが実行されるものの、"L-x" を設定頂いても想定通りのアクションは実行されない結果となります。
現時点において AWS では "L-x" の形式はサポートされていないため、月末の X 日前を設定される場合、複数のスケジュールアクションを設定頂く対応をご検討ください。。
例えば、月末の 7 日前にアクションを実行されたい場合、以下の cron 式が考えられます。
-
0 8 24 1,3,5,7,8,10,12 *
31 日までの月は 24 日が 7 日前 -
0 8 23 4,6,9,11 *
30 日までの月は 23 日が 7 日前 -
0 8 21 2 *
2 月は 28 日が最終日と仮定して 21 日が 7 日前(うるう年を考慮しない場合) -
0 8 22 2 *
うるう年の 2 月のみ 22 日が 7 日前
ドキュメントに記載はないものの、可能です。
このサポートされた cron 式は、スペースで区切られた 5 つのフィールド ([分] [時間] [日] [月] [曜日]) で構成されます。例えば、cron 式 30 6 * * 2 は毎週火曜日の午前 6:30 に繰り返されるスケジュールされたアクションを設定します。アスタリスクは、フィールドのすべての値を照合するワイルドカードとして使用されます。cron 式の他の例については、(https://crontab.guru/examples.html) を参照してください。この形式で独自の cron 式を記述する方法については、クロンタブを参照してください。
確認してみた
AutoScaling グループを作成。
"L" を利用した cron 式で予定されたアクションを設定。
検証では、「15 18 L-29 * * 」 のタイムゾーンは Asia/Tokyo で設定を行い、希望容量 2 ⇒ 4 といったアクションなどを設定。
参考資料
Amazon EC2 Auto Scaling のスケジュールされたスケーリング - Amazon EC2 Auto Scaling