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

如何让AWS API Gateway透传集成请求的响应状态码?

让AWS API Gateway直接返回ECS RunTask的原生状态码

有两种可行的方式实现你要的效果,不用挨个定义400、403这类状态码:

1. 用代理集成(最省心的方案)

直接把API Gateway配置成代理模式,这种模式下,API Gateway会完全透传后端ECS RunTask API的响应——包括状态码、响应头和响应体,不需要你手动配置任何集成响应映射。

配置步骤大概是:

  • 在API Gateway的方法集成设置里,选择「AWS服务代理」,然后开启代理集成选项
  • 目标服务选ECS,填写正确的服务ARN,动作指定为ecs:RunTask
  • 确保集成请求的设置里,允许传递所有请求参数和头信息,不需要自定义映射规则

这种方式下,ECS返回什么状态码,API Gateway就直接给用户返回什么状态码,完全不用额外配置。

2. 用VTL模板动态映射状态码(适合需要部分自定义的场景)

如果不想用代理集成,也可以通过VTL映射模板实现动态状态码传递:

  • 在方法响应里,添加一个匹配所有4xx/5xx状态码的正则规则(比如4\d{2}|5\d{2})
  • 在集成响应里,把这个正则规则和默认响应关联,然后用VTL模板把响应状态码设置为集成请求返回的原生状态码,示例模板如下:
#set($context.responseOverride.status = $context.integration.status)
$input.json('$')
  • 同时保留默认的200响应,这样正常情况返回200,异常情况自动映射对应的状态码

注意事项

  • 不管用哪种方式,都要确保API Gateway的IAM角色有调用ECS RunTask的权限,避免因为权限问题导致的额外异常
  • 代理集成虽然省心,但如果需要对响应做一些自定义处理(比如修改响应体),就不太适合,这时候用VTL的方式更灵活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:57:13