如何从远程调试 AWS Lambda 函数?

How is it possible to debug an AWS Lambda function from remote?

我们正在从另一家公司接管整个应用程序,他们已经构建了整个部署管道,但我们仍然无法访问它。我们知道,有一个 lambda 函数是由某些 SNS 消息触发的 运行,所有代码都在 Node.js 中,开发是在 VS Code 中。我们在本地调试也有问题,但这是一个更大的问题,我们需要远程调试它。

由于我是 AWS 服务的新手,如果有人可以帮助我,我将不胜感激。 有必要开端口吗?如何连接到 lambda?我们需要无服务器设置吗?许多未解决的问题。

我认为没有办法可以远程调试 lambda 函数。最好的办法是在本地计算机上下载代码,按照在 lambda 函数上设置的方式设置环境变量,然后从那里获取它。

请记住,归根结底,lambda 只是一个容器,它是 运行 适合您的代码。 AWS 不允许与这些容器进行任何 ssh 或连接。在您的情况下,您应该能够在本地调试它,直到您拥有相同的环境变量。还有其他特定于 lambda 的东西,但考虑到它是您获得的 运行 代码,因此您应该能够找出问题所在。

希望它有意义。

Thundra (https://www.thundra.io/aws-lambda-debugger) 通过其原生 IDE 插件(VSCode 和 IntelliJ IDEA)为 AWS Lambda 提供 live/remote 调试支持。

虽然远非理想,但任何控制台打印操作都可能会记录到 CloudWatch,然后您可以访问它来查看打印数据。

对于本地调试,有许多 Github 项目带有 Dockerfile,您可以在本地构建 docker 容器,就像调用 Lambda 时 AWS 所做的那样。

AWS 让您 'remote' 调试的方式是通过 Docker 在本地执行 lambda,因为它使用 AWS Toolkit 为您代理对云的请求。您通过 docker 在本地计算机上有一个 lambda 运行,它可以访问云上的资源,例如数据库、api 等。您可以使用 api 等编辑器逐步调试它们=25=].

我将 SAM 与 template.yaml 一起使用。这样,我可以将事件数据传递给处理程序、引用依赖层(共享代码库)并有一个部署清单来创建 Cloudformation 堆栈(具有历史记录和资源管理的发布实例)。

调试在编译、部署到 Docker 和调用时可能会有点慢,但允许逐步调试和变量检查。

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging.html