AWS Lambda代理集成函数执行成功却返回502错误求助
AWS Lambda代理集成返回502错误排查方案
- 检查响应头格式:代理集成要求
headers必须是纯字符串键值对,不能包含null/undefined值,键名不能有特殊字符(如中文)。哪怕是可选头,只要存在就必须是有效字符串,否则会触发API Gateway解析失败。 - 验证响应体编码:
body字段必须是字符串类型,若返回JSON对象需用JSON.stringify()转换;如果是二进制数据,需将isBase64Encoded设为true,不能直接传递原始二进制内容。 - 确认状态码合法性:
statusCode必须是100-599之间的整数,不能是字符串(如"200")或超出范围的数值。 - 排查Lambda执行角色权限:确保Lambda角色拥有
logs:CreateLogStream和logs:PutLogEvents权限——部分场景下,日志未生成是因为权限不足,导致API Gateway无法确认Lambda执行状态,进而返回502。 - 核对API Gateway集成配置:确认已开启「Lambda代理集成」选项,Lambda函数名称/ARN拼写正确,且API Gateway与Lambda处于同一AWS区域。
- 测试最小化响应:先返回最简合法代理响应定位问题,示例代码:
exports.handler = async (event) => { return { statusCode: 200, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ success: true }), isBase64Encoded: false }; };
若此代码能正常返回200,再逐步还原业务逻辑排查具体触发点。
内容的提问来源于stack exchange,提问作者Barathkumar
相关产品推荐
相关产品推荐

