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 - 计划事件触发太频繁的主要内容,如果未能解决你的问题,请参考以下文章