AWS Cloudwatch规则计划Cron表达式每天跳过2个小时

时间:2019-12-27 06:06:07

标签: amazon-web-services cron amazon-cloudwatch

我想使用Cloudwatch Rules触发AWS Lambda函数,要求如下。

  • 条件1 :每天触发
  • 条件2 :每5分钟
  • 条件3 :它不应在晚上11点至 每天凌晨1点(维护窗口)。

我阅读了documentation on crons,无法提出Cron表达式来满足条件3 。我想出了以下表达式。

0/5 ## * * ? *

我如何满足上述的条件3 ?我在cron表达式上将其保留为##。我很清楚时区。

4 个答案:

答案 0 :(得分:2)

您可以使用cron在线工具,例如

https://crontab.guru/

http://www.cronmaker.com/

这是我根据您的要求创建的表达式

*/5 1-23 * * *

enter image description here

答案 1 :(得分:2)

我在回答自己的问题。正则cron表达式不适用于 AWS Cloudwatch规则。 AWS Cloudwatch规则的cron表达式为六个(6)必填字段。 (Link to Documentation)。这个问题的答案如下。我将介绍不同的情况,因为在某些情况下,时区很重要,我们可能不得不跳过不同的时间而不是午夜。

以下两种情况都可以使用,我已经在AWS Cloudwatch规则中进行了测试。

方案1:每天触发一次-每5分钟-将11PM跳到1AM。

0/5 1-22 * * ? *

说明:提及第一个字段,仅应在第0分钟和第5分钟触发。第二个字段提到应该从1小时到22小时触发。因此,在22:55之后,下一个触发条件将是1:00。它将从23:00跳到00:55。

方案2:每天触发一次-每5分钟-从5PM跳到7PM

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

说明:提及第一个字段,仅应在第0分钟和第5分钟触发。第二个字段提到应该从0小时到16小时以及从19小时到23小时触发。因此,在16:55之后,下一个触发条件将是19:00。它将从17:00跳到18:55。

答案 2 :(得分:1)

此命令可以为您提供帮助:

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

参考:crontab run every 15 minutes between certain hours

答案 3 :(得分:1)

已经给出了答案,但是我没什么可补充的,https://crontab.guru/引起了混乱,因为AWS cron表达式由6个数字组成,而crontab由5个组成,造成@keet提到的混乱

因此,首先,您可以忽略年份部分,并在crontab中检查您的cron表达,但是再次提到crontab,一周中的某几天都不了解?标记。

所以我的建议是使用AWS控制台进行表达式测试,该控制台将列出下一个10触发器。

enter image description here

因此希望它可以帮助其他人了解下一个触发器。

enter image description here

有关更多详细信息,请选中AWS CronExpressions