1

几年来,我已经成功地使用 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-代码部分 2/

这个教程看起来真的和我调试 node.js 的一样。但是,当我点击“运行和调试”时,我收到了这个错误。

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

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

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

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

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

4

1 回答 1

2

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

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

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

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

尝试从您的 requirements.txt 中删除 ==XXX 并让 pip 尝试获取最新的 - 我知道这并不好,但它会让您知道该潜在库是否由于某种原因无法将 pip 安装到 docker 容器中.

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

于 2021-10-09T16:10:15.487 回答