无需SAM CLI,在VS Code本地调试容器化AWS Lambda(Python)
无需SAM CLI调试容器化AWS Lambda Python函数的方法
步骤1:修改Dockerfile添加调试配置
在你的Lambda容器镜像Dockerfile中,加入debugpy依赖安装,并调整启动命令以启用调试:
# 基于官方Lambda Python镜像构建 FROM public.ecr.aws/lambda/python:3.11 # 安装debugpy调试工具 RUN pip install debugpy -t /var/task # 复制Lambda代码到容器指定目录 COPY app.py ${LAMBDA_TASK_ROOT} # 修改启动命令:先启动debugpy监听端口,再加载Lambda运行时 CMD ["python", "-m", "debugpy", "--listen", "0.0.0.0:5678", "--wait-for-client", "-m", "awslambdaric", "app.handler"]
注意:将
app.handler替换为你实际的Lambda处理程序路径(比如代码文件是lambda_function.py,处理函数是handler,则写lambda_function.handler)
步骤2:构建并运行调试容器
执行以下命令构建镜像并启动容器,同时映射Lambda调用端口和调试端口:
# 构建镜像 docker build -t lambda-debug-image . # 启动容器:映射本地9000端口到容器8080(Lambda调用端口),本地5678端口到容器5678(调试端口) docker run -p 9000:8080 -p 5678:5678 lambda-debug-image
步骤3:配置VS Code调试会话
打开VS Code的调试面板,创建launch.json文件,添加以下配置:
{ "version": "0.2.0", "configurations": [ { "name": "Attach to Lambda Container", "type": "python", "request": "attach", "connect": { "host": "localhost", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/var/task" } ], "justMyCode": false } ] }
说明:
pathMappings确保本地代码目录与容器内Lambda代码目录/var/task对应,保证断点能正确映射;justMyCode设为false可调试依赖包代码(按需开启)
步骤4:启动调试并触发函数
- 在VS Code中给Lambda代码设置断点
- 启动调试会话(点击调试面板的启动按钮)
- 用以下命令触发本地Lambda函数,触发后代码会停在断点处:
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"key": "value"}'
内容的提问来源于stack exchange,提问作者Bells2025
相关产品推荐
相关产品推荐

