【发布时间】:2021-04-06 09:53:56
【问题描述】:
我的目标是定期运行 AWS Lambda 函数。但是,该计划与 CRON 不兼容,因此 CloudWatch 计划事件规则不是一个选项(据我了解)。
具体来说,我试图让它在第 5 个工作日运行。这需要考虑到周末、节假日和每月不同的自定义计划停机时间。
在不实际使用 CRON 表达式的情况下定期运行 Lambda 函数的推荐方法是什么?
我能想到几种解决方法,我将在下面列出。
- 创建在每个工作日运行的 CloudWatch 事件。让它触发一个 Lambda,它将检查它是否不是假期或计划的停机时间。如果它是有效的一天,它会将一个值推送到 SQS 队列。一旦该队列达到队列中的 5 个值,它将清空队列并触发我上面描述的 Lambda。如果 Lambda 失败,它将推送到 DLQ。
- 为简单起见,使用与上述完全相同的内容,但每天而不是每个工作日都运行它,并在那里执行相同的检查。
【问题讨论】:
-
假期和自定义停机时间的规则从何而来?
-
IMO 你的解决方法对我来说听起来不错。您可以通过每天运行您的 lambda 来避免第二个 lambda/SNS 队列,并且只有在满足您的调度标准时才执行此操作。如果您只是将上次执行日期存储在 dynamodb 表之类的某个地方,那么您的 lambda 函数应该具有确定是否应该执行其操作所需的所有信息
-
我同意,只需使用解决方法 2。
标签: amazon-web-services aws-lambda cron amazon-cloudwatch