Node.js AWS Lambda对接ALB返回LambdaInvalidResponse 502错误求助
问题原因
你的代码返回的响应不符合ALB对Lambda后端的格式要求,问题出在body字段的类型上:
- AWS ALB对接Lambda作为目标组时,强制要求响应中的
body字段必须为字符串类型,不支持数字、对象等其他类型。 - 你代码中
result可能返回数字类型(比如注释中提到的123),此时body字段为数字类型,ALB无法解析该响应,就会抛出LambdaInvalidResponse错误,返回502 Bad Gateway。 - 你通过CLI或控制台直接调用Lambda时,平台没有严格的响应格式校验,因此不会报错,只有对接ALB时才会触发该校验规则。
修复方案
将返回的body字段强制转为字符串即可,如果你返回的Content-Type为application/json,推荐使用JSON.stringify()做序列化,保证返回内容符合JSON格式要求:
return { isBase64Encoded: false, statusCode: 200, statusDescription: '200 OK', headers: { 'Set-Cookie': 'cookies', // 建议按HTTP标准调整首字母大写,避免潜在兼容问题 'Content-Type': 'application/json', }, body: JSON.stringify(result), // 修改此处,将result序列化为JSON字符串 };
内容的提问来源于stack exchange,提问作者heap1
相关产品推荐
相关产品推荐

