如何通过AWS Lambda与API Gateway在GoLang中上传下载二进制文件?
用AWS Lambda+API Gateway代理集成处理API调用的关键限制与注意事项
核心限制与常见坑点
1. 有效负载大小硬限制
API Gateway代理集成对请求和响应的负载有严格上限:
- 请求负载最大6MB
- 响应负载最大6MB
一旦超出,直接返回413(请求过大)或502(网关错误),必须提前做分片传输或者压缩处理,别等报错才想起这事。
2. 有效负载编码的棘手问题
代理集成会自动根据内容类型处理编码,但很容易踩坑:
- 文本/JSON类型:默认用UTF-8编码传递,Lambda里拿到的
body就是直接可用的字符串,不用额外解码 - 二进制数据:这是最容易出问题的地方,主要有两种处理路径:
- 二进制blob(bytes)方式:得先在API Gateway里配置二进制媒体类型,把你要处理的Content-Type(比如
image/png、application/octet-stream)加进白名单。这时Lambda收到的body是base64编码的字符串,同时isBase64Encoded字段为true,需要手动把它解码成bytes才能用。 - base64编码字符串方式:如果没配置二进制媒体类型,API Gateway会自动把二进制数据转成base64字符串传给Lambda。虽然不用配置网关,但这种方式会让负载体积凭空增加约33%,更容易触发上面说的大小限制,尽量少用。
- 二进制blob(bytes)方式:得先在API Gateway里配置二进制媒体类型,把你要处理的Content-Type(比如
内容的提问来源于stack exchange,提问作者fIwJlxSzApHEZIl
相关产品推荐
相关产品推荐

