在 VSCode 中调试 Python Lambda 函数

Debugging Python Lambda Functions in VSCode

几年来,我一直在成功地使用 AWS Toolkit 调试 node.js lambda 函数。对于我的最新项目,我想在 python 中编写我的 lambda 函数。我已按照以下教程中的说明进行操作。

https://codeolives.com/2020/01/02/vs-code-with-python-aws-lambda-a-complete-tutorial-to-develop-and-deploy-python-lambda-functions-using-vs-code-part-2/

本教程看起来确实与我一直在进行的调试相同node.js。但是,当我点击“运行 并调试”时,出现此错误。

2021-10-08 17:04:00 [信息]: 运行 PythonPipBuilder:ResolveDependencies

2021-10-08 17:04:03 [信息]: 构建失败

2021-10-08 17:04:04 [信息]:错误:PythonPipBuilder:ResolveDependencies - {debugpy==1.5.0(wheel)}

2021-10-08 17:04:04 [警告]:“sam 构建”失败:C:/path_to_user/AppData/Local/Temp/aws-toolkit-vscode/vsctkYP3zOS/app___vsctk___template.yaml

显然是说它无法解析 debugpy,但我才刚刚开始使用 python,我不确定这是什么或如何解决它。 google 搜索没有找到任何解决问题的方法。如果有人能赐教我,我将不胜感激

Python 的最大优点之一是 lambda_handler 函数只是 python 文件中的另一个函数。您可以像使用任何其他函数一样使用 Pytest 等对实际处理程序进行单元测试,而不必担心 lambda 的 Docker/SAM 设置。

现在,这并不完美。如果您完全依赖上下文对象,那么模拟上下文对象可能会很困难(如果您不依赖它,将空字典 {} 传递给第二个参数就可以了),而且它显然不是完全相同的环境。导入可能不同,日志记录也可能很奇怪。

如果你已经有 SAM 和 Docker,模拟库 moto 可以帮助解决这个问题,尽管它也不完美(老实说,更多的是从其他函数中模拟 lambda 调用而不是嘲笑实际的 lambda)

至于你的实际错误和问题。..

尝试从你的 requirements.txt 中删除 ==X.X.X 并让 pip 尝试获取最新的 - 我知道这不是很好但它会让你知道是否有一些潜在的图书馆原因是无法将 pip 安装到 docker 容器中。

如果可行,则可能是您的 docker 设置和 pypy 之间的连接问题 - 您可能必须修改 pip 连接数据才能知道在哪里查看或查看特定的地方。