amazon-web-services - 当 AWS Lambda 函数失败时,如何获得更具体的 CloudWatch 警报?
问题描述
我在 AWS Lambda 中有各种函数,全部在 Node.js 中。它们由某些事件触发,例如 S3 触发器、API 网关方法,或者有时只是手动调用。我通过在控制台中粘贴代码或上传我在本地构建的 zip 文件来创建它们。
在极少数情况下,函数会失败。为了检测故障,我设置了如下所示的 CloudWatch 警报:
这在一定程度上有效:当我帐户中任何地方的功能失败时,我会收到一封电子邮件。问题是电子邮件只是说警报被触发了。它没有说明Lambda 函数实际上失败了,所以我必须通过 Lambda 来查找实际导致警报的函数。
我考虑了以下几点:
- 为每个函数设置 CloudWatch 警报。这是最明显的解决方案,但也是最繁琐和维护最高的。
- 为我的 Lambda 函数构建 CI/CD 管道,而不是在控制台中输入代码或上传 zip。然后,我可以添加一个自动为该函数设置 CloudWatch 警报的步骤。这比第一个选项要好,但也需要为潜在的简单问题设置大量基础设施。
- 使用另一个 Lambda 函数来自定义处理警报。问题是,据我所知,CloudWatch 发布的 SNS 消息不包含比电子邮件更多的数据;它本质上只是说“您的名为 X 的警报触发了”,但没有说明原因。
关于如何实现这一目标的任何想法?
解决方案
我们在内部处理它。当出现问题时,Lambda 会尝试处理它并发送警报。CloudWatch 指标仅适用于真正未处理的异常。请记住,如果函数出现错误,Lambda 会自动重试,这在某些情况下可能是不可取的。因此,最好处理 Lambda 函数内部的任何异常。
推荐阅读
- multi-tenant - 取消订阅功能在 SAP 云平台 CF 上不适用于多租户 SAAS 应用程序
- python - Selenium 从服务器获取 url 地址响应
- javascript - 与 @babel/env 和 @babel/preset-env 之间的 babel 预设配置混淆
- nginx - 设置两个单独的配置但具有相同的域
- pointers - 当 i := &b 时,'&i' 是什么意思
- python - 在python中,如何将数据从excel复制到网站?
- asp.net-core - 针对第三方 API 的 OAuth 2 三足身份验证
- c# - 我怎样才能用 linq 改进这个?
- java - 我创建了一个没有任何表和数据的空数据库
- ignite - java.lang.IllegalArgumentException:无效的对象类型:0