无法将AWS API Gateway查询参数传递至Python AWS Lambda的问题
问题排查与解决方法
1. 确认API Gateway是否启用Lambda代理集成
这是导致参数无法传递的最常见原因:
- 若API Gateway未配置Lambda代理集成,
queryStringParameters不会自动注入Lambda的event对象中。 - 检查方式:进入API Gateway控制台,找到对应endpoint的GET方法,查看「集成请求」设置,确认已勾选使用Lambda代理集成。
2. 检查API Gateway的部署状态
- 修改集成配置后,必须重新将API部署到对应阶段(如prod、dev),否则新配置不会生效。
- 操作步骤:在API Gateway控制台顶部点击「部署API」,选择目标阶段完成部署。
3. 验证Lambda接收的完整event结构
- 在Lambda代码中打印整个
event对象,确认参数实际所在路径:print('Full event:', json.dumps(event)) - 若使用非代理集成,参数可能位于
event['params']['querystring']或其他自定义路径下,需根据实际结构调整取值逻辑。
4. 确认请求参数名的一致性
- 检查实际请求的参数名是否与代码中的
City、State完全一致(注意大小写、拼写,避免出现city/state这类小写错误)。
修复后的示例代码(需确保代理集成已启用)
你的原代码逻辑无问题,可额外增加空字符串过滤处理:
import json def lambda_handler(event, context): # 提取查询参数 query_parameters = event.get('queryStringParameters', {}) city = query_parameters.get('City', '').strip() state = query_parameters.get('State', '').strip() # 打印参数值 print('City:', city) print('State:', state) if not city or not state: return { 'statusCode': 400, 'body': 'City and State parameters are required.' } # 后续业务逻辑示例 return { 'statusCode': 200, 'body': json.dumps({'City': city, 'State': state}) }
内容的提问来源于stack exchange,提问作者p0tta
相关产品推荐
相关产品推荐

