我已经成功地使用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-build";失败:C:\path_to_user/AppData/Local/Temp/aws toolkit vscode/vsctkYP3zOS/app___vsctk___template.yaml
很明显,它说它不能解决debugpy,但我刚刚开始使用python,我不确定这是什么,也不知道如何解决它。谷歌搜索没有找到任何解决问题的东西。如果有人能启发我,我真的很感激
Python最大的优点之一是lambda_handler函数只是Python文件中的另一个函数。您可以像使用任何其他函数一样,使用Pytest等对实际处理程序进行单元测试,而无需担心lambda的Docker/SAM设置。
现在,这并不完美。如果你完全依赖上下文对象(如果你不依赖它,将空dict{}
传递给第二个参数就可以了),而且它显然不是完全相同的环境,那么模拟上下文对象可能会很困难。导入可能不同,日志记录也可能很奇怪。
如果你已经有了SAM和Docker,那么mocking库moto可以帮助你做到这一点,尽管它也不完美(老实说,它更适合于嘲笑其他函数中的lambda调用,而不是嘲笑实际的lambda)
至于您的实际错误和问题。。
尝试从requirements.txt中删除==X.X.X,并让pip尝试获取最新信息-我知道这并不好,但它会让你知道潜在的库是否因某种原因在将pip安装到docker容器中时遇到问题。
如果这样做有效,那么你的docker设置和pypy之间很可能存在连接问题——你可能必须修改你的pip连接数据,才能知道在哪里查找或查找特定的地方。