AWS Cloudwatch/Lambda - 计划事件触发太频繁

Posted

技术标签:

【中文标题】AWS Cloudwatch/Lambda - 计划事件触发太频繁【英文标题】:AWS Cloudwatch/Lambda - scheduled event is triggered too often 【发布时间】:2019-11-18 22:57:54 【问题描述】:

我创建了一个 AWS Lambda 函数,并在 Cloudwatch 中创建了一个预定事件 rule 以每 5 分钟触发一次: Schedule Cron expression : 0/5 * * * ? *

问题是在查看日志时,Lambda 似乎每 1~2 分钟执行一次。

我检查了 CRON 表达式,它似乎正确,因为 AWS 显示了下一个触发器的预览。我也尝试了速率表达式,但我仍然遇到同样的问题。

我查看了 cloudwatch 指标: - 预定的事件似乎很好,它每 10 分钟触发一次 - lambda 调用指标表明它被更频繁地调用

有什么帮助吗?

【问题讨论】:

会不会有其他东西触发了您的 lambda? @LouO。我只在 SQS 中使用了 1 个触发器。我通过禁用事件规则进行了验证,并且 lambda 停止了记录,所以我想这方面很好 您能否编辑您的问题以更好地解释您的配置?标题提到了 SQS,但您的问题提到了 cron 触发器。将 Lambda 与 Amazon SQS 队列关联的正确方法是创建一个触发器,该触发器将在消息进入 SQS 队列时调用 Lambda 函数。不需要 cron 表达式。请向我们提供有关您的设置的更多信息。 之前执行的 Lambda 函数是否成功完成(没有错误或超时)? 你能试试rate(5 minutes)的替代格式吗?见:Schedule Expressions Using Rate or Cron - AWS Lambda 【参考方案1】:

感谢@JohnRotenstein 的领导,

问题来自 NodeJS 承诺的返回结果。 如果 JS handler 在返回的 Promise 中没有返回任何结果,则 lambda 认为执行失败。

在我的例子中,我只需要返回一个值(甚至 null),以便成功完成执行。 否则 lambda 会在 1~2 分钟后重新执行代码

【讨论】:

同样的事情发生在我身上。我虽然最终增加了 Lambda 的超时时间

以上是关于AWS Cloudwatch/Lambda - 计划事件触发太频繁的主要内容,如果未能解决你的问题,请参考以下文章

AWS EMR实例组竞价实例扩展失败切换按需实例方法

获取存储桶中 AWS S3 密钥计数的快速方法

iOS新加速计事件(陀螺仪和加速计)

三十六计阅读手记

[机缘参悟-64]:《兵者,诡道也》-5-孙子兵法解读-混战计

12小时计时法跟24小时计时法有啥不同