AWS API Gateway写入S3后如何全量透传响应至客户端
APIGW对接S3全量响应透传通用配置方案
不需要针对每类响应场景单独创建自定义integration response与integration method,通过通配规则配置即可实现HTTP响应状态码、响应头、响应体的全量透传,具体配置根据使用的APIGW类型有所区别:
REST API(传统版APIGW,AWS服务集成模式对接S3)
- 状态码透传:进入
Integration Response配置页,删除所有预先配置的单状态码匹配规则,新增一条正则匹配规则,匹配表达式填.*以覆盖所有状态码,将方法响应的状态码直接映射为集成端返回的integration.response.statuscode,无需逐个枚举200、403、404、500等具体状态码。 - 响应头透传:先在
Method Response的响应头配置项中添加通配头*,无需逐个声明Content-Type、ETag、x-amz-*等S3可能返回的头字段;再回到Integration Response的头映射规则中,将方法响应的*头映射为integration.response.header.*,即可自动透传S3返回的所有响应头。 - 响应体透传:不配置任何响应体转换模板,Content-Type匹配规则填
*,选择无匹配模板时直接透传原始响应体的选项,S3返回的原始内容就会原样返回给客户端,不会被网关做结构修改或转码。
配置提示:APIGW自身生成的错误(比如权限不足、限流、参数校验失败)不属于S3集成端返回的响应,如果需要连这类响应也按原始格式透传,可以在网关响应配置页同样用通配规则配置默认映射即可。
HTTP API(新版APIGW)
配置逻辑更简单,创建S3集成时直接选择「透传所有响应」的默认选项即可,HTTP API默认原生支持后端响应全量透传,不需要额外配置状态码、头、体的映射规则,配置成本远低于REST API。
配置避坑项
- 不要开启APIGW自带的响应体转换、自动响应压缩、响应头重写类功能,否则会修改S3返回的原始响应内容。
- 如果配置了CORS规则,允许的请求头、暴露的响应头都配置为
*,避免跨域场景下部分响应头被浏览器拦截。
内容的提问来源于stack exchange,提问作者JTAN
相关产品推荐
相关产品推荐

