初始化代码在 lambda 中究竟应该放在哪里?即使用 Sentry 时

Exactly where should initialisation code go in a lambda? i.e. when using Sentry

提问人:Codek 提问时间:10/18/2023 更新时间:10/18/2023 访问量:27

问:

我们使用并喜欢 Sentry,但是,我注意到有时它不包含 CloudWatch Logs 链接。这是因为,lambda 处理程序从未被调用过,我们在它之前就崩溃了。

这样做的原因是,我们做了一些事情,例如定义一个客户:

lambda_client = boto3.client("lambda")

在调用处理程序之前。现在;我们为什么要这样做?有人告诉我,如果 lambda 再次被调用并且仍然活着,这对资源使用会更好?然而,现在我不确定。是否有任何资源可以了解这方面的信息?

然而;通常,其他崩溃的事情是当我们忘记在模板中设置它时获得 env 变量,或者其他连接无法初始化。

无论如何;我还觉得将我们所有的初始化代码/变量移动到处理程序函数中,仅仅因为哨兵的工作方式而这样做也是不好的。所以这就是为什么我想知道什么是正确的,然后考虑这是否是一个哨兵错误,或者其他?(他们确实说是这样,这很可能是 AWS API 的工作方式)

当然,如果你有一些终端构建失败,并且你缺少模块,那么哨兵无论如何都无法捕捉到它。但这没关系 - 当它无聊时,它通常很明显。您应该通过例如“sam local invoke”等来抓住它。

aws-lambda 哨兵

评论


答: 暂无答案