首页 > 解决方案 > 当 AWS Lambda 函数失败时,如何获得更具体的 CloudWatch 警报?

问题描述

我在 AWS Lambda 中有各种函数,全部在 Node.js 中。它们由某些事件触发,例如 S3 触发器、API 网关方法,或者有时只是手动调用。我通过在控制台中粘贴代码或上传我在本地构建的 zip 文件来创建它们。

在极少数情况下,函数会失败。为了检测故障,我设置了如下所示的 CloudWatch 警报:

CloudWatch 警报

这在一定程度上有效:当我帐户中任何地方的功能失败时,我会收到一封电子邮件。问题是电子邮件只是说警报被触发了。它没有说明Lambda 函数实际上失败了,所以我必须通过 Lambda 来查找实际导致警报的函数。

我考虑了以下几点:

  1. 为每个函数设置 CloudWatch 警报。这是最明显的解决方案,但也是最繁琐和维护最高的。
  2. 为我的 Lambda 函数构建 CI/CD 管道,而不是在控制台中输入代码或上传 zip。然后,我可以添加一个自动为该函数设置 CloudWatch 警报的步骤。这比第一个选项要好,但也需要为潜在的简单问题设置大量基础设施。
  3. 使用另一个 Lambda 函数来自定义处理警报。问题是,据我所知,CloudWatch 发布的 SNS 消息不包含比电子邮件更多的数据;它本质上只是说“您的名为 X 的警报触发了”,但没有说明原因。

关于如何实现这一目标的任何想法?

标签: amazon-web-servicesaws-lambda

解决方案


我们在内部处理它。当出现问题时,Lambda 会尝试处理它并发送警报。CloudWatch 指标仅适用于真正未处理的异常。请记住,如果函数出现错误,Lambda 会自动重试,这在某些情况下可能是不可取的。因此,最好处理 Lambda 函数内部的任何异常。


推荐阅读