如何在本地调试基于Python的AWS Amplify Lambda函数
本地逐行调试AWS Amplify Python Lambda函数的方案
步骤1:确认基础环境
- 确保VS Code已安装Python官方插件
- 本地Amplify项目已完成初始化,Lambda函数代码位于
amplify/backend/function/[你的函数名]/src目录下 - 本地Python环境版本与Lambda运行时一致(比如Python 3.9/3.10,匹配Amplify配置的Lambda runtime)
步骤2:配置VS Code调试文件
打开VS Code调试面板(Ctrl+Shift+D),点击「创建launch.json文件」选择Python环境后,替换为以下配置:
{ "version": "0.2.0", "configurations": [ { "name": "Lambda 本地调试", "type": "python", "request": "launch", "program": "${workspaceFolder}/amplify/backend/function/YourFunctionName/src/app.py", "env": { "AWS_REGION": "us-east-1", "AMPLIFY_ENV_NAME": "dev", "FUNCTION_NAME": "YourFunctionName" }, "args": ["--event", "${workspaceFolder}/amplify/backend/function/YourFunctionName/src/event.json"], "console": "integratedTerminal", "justMyCode": true } ] }
- 替换
YourFunctionName为实际的Lambda函数名 env中可补充Amplify或Lambda所需的其他环境变量,比如AMPLIFY_PROJECT_NAME
步骤3:准备测试事件
在Lambda函数的src目录下创建event.json,模拟触发Lambda的事件(比如API Gateway请求、S3事件)。示例API Gateway事件:
{ "httpMethod": "GET", "path": "/api/test", "queryStringParameters": { "userId": "12345" }, "headers": { "Content-Type": "application/json" } }
步骤4:调整Lambda函数代码
在函数入口文件(如app.py)末尾添加本地运行入口,直接调用handler函数:
import json def handler(event, context): # 你的Lambda业务代码 return { "statusCode": 200, "body": json.dumps({"message": "Success"}) } # 本地调试入口 if __name__ == "__main__": with open("event.json", "r") as f: test_event = json.load(f) # 简单模拟上下文,复杂场景可使用lambda-local库生成 test_context = None result = handler(test_event, test_context) print("Lambda返回结果:", json.dumps(result, indent=2))
步骤5:启动调试
- 在需要调试的代码行左侧点击添加断点(红色圆点)
- 点击调试面板的绿色启动按钮,程序会停在断点处
- 使用快捷键控制调试流程:
- F10:逐行执行(跳过函数调用)
- F11:步入函数内部
- Shift+F11:步出当前函数
- F5:继续执行到下一个断点
注意事项
- 如果函数依赖Amplify其他资源(如DynamoDB、Cognito),先运行
amplify mock storage或amplify mock auth启动本地模拟服务 - 函数依赖的第三方包(如boto3、requests)需安装到本地:进入
src目录执行pip install -t . [包名],确保依赖与Lambda运行时一致 - 调试时若遇权限问题,检查环境变量配置是否正确,或模拟Lambda的IAM权限
内容的提问来源于stack exchange,提问作者Alvaro
相关产品推荐
相关产品推荐

