单HTTP API按路径路由访问AWS ECS多服务返回404排查
架构可行性结论
你设计的这套架构完全可行。单个API Gateway HTTP API原生支持基于请求路径的路由转发,可将不同路径的流量路由到多个独立的私有后端服务,配合VPC Link + Cloud Map实现私有子网ECS服务的暴露是官方推荐的标准方案。
404问题排查与修复
你当前配置后返回404,是三个典型配置疏漏导致的,按以下步骤修复即可:
1. 修正路由路径匹配规则
HTTP API默认采用精确路径匹配,仅配置/serviceA、/serviceB路由无法匹配该前缀下的多级子路径请求。
需要将两个路由的路径修改为贪婪匹配模式:
- Service A绑定的路由:请求方法选
ANY,路径填/serviceA/{proxy+} - Service B绑定的路由:请求方法选
ANY,路径填/serviceB/{proxy+}{proxy+}参数会匹配对应前缀下的所有子路径,覆盖你需要的/serviceA/*、/serviceB/*场景。
2. 配置集成路径重写规则
这是最高发的问题点:配置前缀路由后,API Gateway默认会将包含/serviceA、/serviceB前缀的完整请求路径转发给后端,但你的Spring Boot服务的业务接口本身不带这两个前缀,比如后端实际存在的接口是/user/list,API Gateway转发的路径会变成/serviceA/user/list,后端找不到对应映射自然返回404。
修复方式是在每个服务对应的私有资源集成中配置路径覆盖:
- 进入对应集成的「请求参数」配置页
- 添加路径重写规则,将转发给后端的最终路径设置为
/{proxy} - 对Service A、Service B的集成分别做上述配置
配置后API Gateway会自动剔除路径前缀,仅将后缀的实际业务路径转发给对应后端服务。
3. 校验VPC Link连通性
你当前仅创建了关联Service A安全组的VPC Link,需要确认Service B的连通性配置:
- 若Service B和Service A部署在相同私有子网、且安全组入站规则放通了VPC Link关联安全组的访问,现有VPC Link可直接复用,无需新建
- 若Service B安全组未放通对应权限,需添加入站规则:允许VPC Link使用的安全组访问Service B的业务监听端口
额外提示:使用SRV类型Cloud Map服务发现记录时,API Gateway集成的端口配置需选择「从SRV记录自动获取」,不要手动指定固定端口,否则会出现后端连接失败问题。
验证流程
配置完成后按顺序验证即可:
- 访问
/serviceA/actuator/health(需Spring Boot服务开启actuator依赖),确认Service A正常响应 - 访问
/serviceB/actuator/health,确认Service B正常响应 - 调用两个服务下的多级业务路径,确认转发规则正常生效
内容的提问来源于stack exchange,提问作者Loui
相关产品推荐
相关产品推荐

