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

如何为两个不同AWS账户中的API Gateway配置同一自定义子域名?

解决方案:多AWS账户API Gateway统一子域名(api.example.com)

针对你在多账户无服务器架构中,希望将所有API Gateway统一到单个子域名下的需求,以下是两种比中间映射账户更轻量化、低运维开销的实现方案:

方案1:CloudFront + Lambda@Edge 路由转发

这是完全解耦各服务账户的方案,不需要中间聚合API账户:

  • 配置CloudFront分发:将api.example.com作为自定义域名,关联AWS ACM(必须部署在us-east-1区域)签发的SSL证书。
  • 编写Lambda@Edge路由函数:在us-east-1区域创建Lambda函数,绑定到CloudFront的Viewer Request触发阶段。函数逻辑根据请求路径(如/service1/*)匹配对应服务账户的API Gateway endpoint,修改请求的origin和host头,将请求转发到目标API。
  • 服务账户API权限配置:每个服务的API Gateway添加资源策略,允许CloudFront分发的ARN调用;同时确保API Gateway的IAM权限允许跨账户访问。
  • CDK自动化:每个服务的CDK栈可以输出自身API的endpoint到AWS SSM参数存储,主CloudFront栈读取这些参数自动生成Lambda@Edge的路由规则,无需手动跟踪服务添加状态。

优缺点:

  • ✅ 各服务账户完全独立,无集中单点依赖
  • ✅ 路由规则集中管理,支持复杂路径匹配
  • ❌ Lambda@Edge调试需注意区域限制,日志分散在CloudFront边缘节点

方案2:主账户API Gateway跨账户聚合

基于API Gateway原生功能实现聚合,优化你之前的映射方案:

  • 主账户创建聚合API:在绑定api.example.com的主账户中创建REST API作为入口层。
  • 跨账户权限配置:每个服务账户的API Gateway添加资源策略,允许主账户的聚合API调用;主账户创建IAM角色,赋予调用服务账户API的权限。
  • 自动集成服务API:每个服务的CDK栈部署时,将自身API的endpoint写入SSM参数;主账户的CDK栈读取这些参数,自动在聚合API中创建对应路径的HTTP集成(如/service2指向服务2的API endpoint)。
  • 自定义域名绑定:主账户的聚合API绑定api.example.com,所有请求通过路径转发到对应服务的API。

优缺点:

  • ✅ 基于API Gateway原生能力,调试、监控更方便
  • ✅ 路由逻辑可视化,可在API Gateway控制台直接管理
  • ❌ 主账户聚合API是集中管理点,但通过CDK自动化可大幅降低运维开销

总结

如果追求完全解耦、无集中依赖,优先选方案1;如果更倾向于使用AWS原生API管理工具,方案2是更轻量化的优化选择。两者都能通过CDK实现自动化运维,避免手动跟踪服务API的添加状态。

内容的提问来源于stack exchange,提问作者Mohamad Bachar Hassan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:20:21