AWS Lambda的isBase64Encoded不生效,API Gateway未解码返回的base64图片
排查配置错误点
- 高频踩坑:修改完API Gateway所有配置后未重新部署到对应阶段,配置不会生效,优先确认这一点。
- 二进制媒体类型规则不匹配:你当前仅配置了
image/jpeg作为二进制类型,但API Gateway默认需要请求的Accept头和配置的二进制类型完全匹配才会触发解码,你无法控制浏览器的Accept参数时,这个规则无法覆盖所有场景。 - 集成响应的内容处理配置错误:如果使用的是REST API非Lambda代理集成,你需要手动将集成响应的「内容处理」选项设置为
转换为二进制(按需),否则即使标记了isBase64Encoded也不会执行解码。 - 返回参数格式错误:确认Lambda返回的
isBase64Encoded是布尔类型True,不是字符串格式的"True";同时body字段的base64内容不要带data:image/jpeg;base64,这类URI前缀,必须为纯编码内容。
兼容所有浏览器的最终配置方案
- 第一步:进入API Gateway的二进制媒体类型设置页,将原有
image/jpeg替换为*/*,该配置会匹配所有请求/响应的媒体类型,无需依赖客户端的Accept头即可触发二进制解码。 - 第二步:如果使用REST API,进入对应资源的集成响应配置,确认内容处理设置为
转换为二进制(按需);如果使用HTTP API无需额外配置该选项。 - 第三步:确认Lambda返回结构符合要求,示例正确代码如下:
return { "statusCode": 200, "body": image_in_base64, # 仅保留纯base64编码内容,不要加前缀 "headers": {"Content-Type": "image/jpeg"}, "isBase64Encoded" : True # 严格为布尔值,不要加引号 }
- 第四步:保存所有配置,重新部署API到对应访问阶段,等待1分钟后测试即可。
内容的提问来源于stack exchange,提问作者Darren Oakey
相关产品推荐
相关产品推荐

