本地调试AWS Lambda时VSCode Debugger无法解析不存在文件的问题求助
问题根源
你的问题核心是VSCode Python调试器的路径映射逻辑导致的:
- 你使用容器镜像模式部署Lambda时,所有pip安装的第三方依赖(elasticsearch、urllib3、dateutil等)都被安装到了容器内的
/var/task目录下,该目录是AWS Lambda容器的默认工作目录 - VSCode调试时默认会将容器内的代码路径映射到你本地的工作区路径,但你本地的
lambdacode目录下只有自己编写的业务代码,没有执行pip install -r requirements.txt -t .安装的第三方依赖包,所以调试器尝试步进第三方库源码时,就会在本地路径找不到对应文件报错
解决方案
可以根据你的需求选择以下任意一种方案:
方案1:跳过第三方库调试(最推荐,无需改动代码结构)
如果你不需要调试第三方依赖的源码,只需要调试自己写的业务代码,直接在launch.json的配置中添加justMyCode参数即可,调试器会自动忽略第三方库的源码跳转,不会触发报错:
{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "MyLambdaFunction", "invokeTarget": { "target": "template", "templatePath": "${workspaceFolder}/path/to/template.yaml", "logicalId": "MyLambdaFunction" }, "lambda": { "runtime": "python3.8", "payload": { "path": "${workspaceFolder}/path/to/input.json" }, "environmentVariables": {} }, // 新增以下配置 "python": { "justMyCode": true } } ] }
方案2:本地同步安装依赖到工作目录
如果你需要偶尔查看第三方库的源码,就在本地的lambdacode目录下执行和Dockerfile中完全一致的依赖安装命令,把依赖包也安装到本地工作目录:
cd /Users/me/path/to/app/dir/lambdacode python3.8 -m pip install -r requirements.txt -t .
执行后本地目录会出现所有第三方依赖包,调试器就可以找到对应文件。注意可以把这些依赖目录加入.gitignore避免提交到代码仓库。
方案3:配置路径映射(无需本地装依赖,可查看容器内依赖源码)
如果不想在本地装依赖,也可以通过pathMappings配置告诉调试器容器路径和本地路径的对应关系,调试器会自动从容器内拉取对应源码:
{ "configurations": [ { // 其余原有配置保持不变 "python": { "pathMappings": [ { "localRoot": "${workspaceFolder}/lambdacode", "remoteRoot": "/var/task" } ] } } ] }
以上三种方案都可以解决你遇到的报错,优先选择方案1即可,不改动任何代码结构也没有冗余文件。
内容的提问来源于stack exchange,提问作者greeksalad
相关产品推荐
相关产品推荐

