web-dev-qa-db-ja.com

AWS Cloudwatchルールは、cron式をスケジュールして1日2時間スキップする

Cloudwatchルールを使用してAWS Lambda関数をトリガーしたいのですが、要件は次のとおりです。

  • 条件1:毎日トリガー
  • 条件2:5分ごと
  • 条件3:毎日午後11時から午前1時の間はトリガーされません(メンテナンスウィンドウ)。

cronに関するドキュメント を読み、条件3を満たすCron式を作成できません。次のような表現を思いつきました。

0/5 ## * * ? *

上記の条件3)をどのように満たすことができますか?cron式で##として残しました。タイムゾーン。

3

私は自分の質問に答えています。正規のcron式は、AWS Cloudwatchルールには適用されません。 AWS Cloudwatchルールには、SIX(6)必須フィールドのcron式があります。 ( ドキュメントへのリンク )。この質問に対する答えは次のとおりです。いくつかのケースではタイムゾーンが重要であり、真夜中の代わりに異なる時間をスキップしなければならない場合があるため、さまざまなシナリオを紹介します。

以下のシナリオはどちらも機能しており、AWS Cloudwatchルールでテストしました。

シナリオ1:毎日トリガー-5分ごと-午後11時から午前1時までスキップ

0/5 1-22 * * ? *

説明:最初のフィールドは0分と5分でのみトリガーされます。 2番目のフィールドでは、1時間目から22時間目までトリガーする必要があると述べています。したがって、22:55以降、次のトリガーは1:00になります。 23:00から00:55にスキップします。

シナリオ2:毎日トリガー-5分ごと-午後5時から午後7時までスキップ

0/5 0-16,19-23 * * ? *

説明:最初のフィールドは0分と5分でのみトリガーされます。 2番目のフィールドでは、0時間から16時間、および19時間から23時間にトリガーする必要があると述べています。したがって、16:55以降、次のトリガーは19:00になります。 17:00から18:55までスキップします。

1

次のようなcronオンラインツールを利用できます。

https://crontab.guru/

http://www.cronmaker.com/

これは私があなたの要件に従って作成した表現です

*/5 1-23 * * *

enter image description here

2
Juned Ahsan

このコマンドはあなたを助けることができます:

*/5 1-23* * * * /usr/bin/php /home/username/public_html/cron.ph >/dev/null 2>&1

参照: crontabは特定の時間の間15分ごとに実行されます

1
aviboy2006

答えはすでに示されていますが、追加できるものはほとんどありません。 https://crontab.guru/ AWSのcron式は6の数字で構成され、crontabは5で構成されているため、混乱を招きます。 @keetが言及する混乱

したがって、最初に年セクションを無視してcrontabでcronエクスプレスを確認できますが、crontabは曜日に関しては?マークを理解しません。

したがって、私の提案は、次の10トリガーをリストする式のテストにAWSコンソールを使用することです。

enter image description here

ですから、次のトリガーについて他の誰かが知るのに役立つことを願っています。

enter image description here

詳細については、 AWS CronExpressions を確認してください

1
Adiii