You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby编写的AWS Lambda经ALB返回二进制内容时报502 Bad Gateway

问题成因

  1. 核心原因是Ruby标准库中Base64.encode64方法的输出格式不符合AWS应用负载均衡器(ALB)的要求:该方法会默认每60个字符插入一个换行符\n,而ALB校验Lambda返回的base64编码body时,不允许内容中存在换行符,校验失败就会抛出LambdaInvalidResponse错误,返回502状态码。
  2. 直接调用aws lambda invoke时,AWS Lambda服务端不会对base64格式做严格校验,所以可以正常返回结果。

解决方法

将代码中的Base64.encode64替换为Base64.strict_encode64即可,后者生成的base64字符串不会插入任何换行符,完全符合ALB的格式规范。

修改后的代码示例:

{
  statusCode: 200,
  headers: {
    'Content-Type' => 'image/x-icon'
  },
  isBase64Encoded: true,
  body: Base64.strict_encode64(IO.binread("favicon.ico"))
}

额外排查点

如果修改后仍存在问题,可以确认两个配置:

  • 返回结构中的isBase64Encoded为布尔值类型,不要写成字符串形式的"true"
  • statusCode为整数类型的标准HTTP状态码,不要使用字符串类型的状态码

内容的提问来源于stack exchange,提问作者terrywb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:39:03