AWS Cloudwatch规则计划Cron表达式以在一天中跳过2小时

4
我想要使用Cloudwatch Rules触发AWS Lambda函数,需满足以下条件:
  • 条件1:每天触发
  • 条件2:每5分钟触发
  • 条件3:每天晚上11点到第二天凌晨1点之间不应触发(维护时间窗口)。
我阅读了关于cron的文档,但无法想出一个符合条件3的Cron表达式。我想出了以下表达式。 0/5 ## * * ? * 如何满足上述条件3?我在cron表达式中将其留作##。我很清楚时区。

这篇文章可以帮助你:https://dev59.com/vGoy5IYBdhLWcg3wHabt - Avinash Dalvi
如果有人回答了你的问题,请通过投票和接受答案来帮助他们。 - Avinash Dalvi
1
请查看Cloudwatch Cron表达式和常规Cron表达式之间的区别。@aviboy2006. 这里给出的答案不适用于Cloudwatch Rules。此Cron表达式有6个字段。https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html - Keet Sugathadasa
4个回答

4

这是一个非常好的网站,可以帮助创建cron作业。我也做了同样的事情。 - Avinash Dalvi
1
这些 cron 表达式不适用于 AWS Cloudwatch。这就是为什么我在问题中分享了一个参考。请参阅 https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html 上的文档。 - Keet Sugathadasa

3
我在回答自己的问题。常规的cron表达式不适用于AWS Cloudwatch Rules。AWS Cloudwatch Rules有一个包含SIX (6) Required Fields的cron表达式。(文档链接)。这个问题的答案如下。我将提供不同的场景,因为在某些情况下,时区很重要,我们可能需要跳过午夜而不是不同的小时。
以下两种方案都可以在AWS Cloudwatch Rules中运行并经过测试。 方案1:每天触发-每5分钟-跳过晚上11点到1点。
0/5 1-22 * * ? *

解释:第一个字段指定只在0和5分钟触发。第二个字段指定应该在1小时到22小时之间触发。因此,在22:55之后,下一个触发将是1:00。它会跳过23:00到00:55。

场景2:每天触发 - 每5分钟 - 跳过下午5点到7点

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

解释:第一个字段表示,应该仅在0和5分钟触发。第二个字段指定它应该从0小时到16小时以及从19小时到23小时触发。因此,在16:55之后,下一次触发将是19:00。它将跳过从17:00到18:55的时间段。


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接