关于Route 53跨不同API Gateway自定义域名实现地理定位路由的咨询
可行解决方案说明
你的需求并非完全无法实现,只是不能直接通过Route53地理定位路由指向自定义域名不匹配的API Gateway。以下是两种可行的实现方式:
方案一:通过CloudFront作为流量中转层
- 配置CloudFront分发,将自定义域名
us.api.example.com关联到该分发(需在us-east-1区域申请对应的ACM证书)。 - 在CloudFront中设置基于地理位置的路由规则:
- 针对北美区域的请求,将流量转发至
APIGateway1.execute-api.us-west-2.amazonaws.com; - 针对欧盟区域的请求,将流量转发至
APIGateway2.execute-api.eu-west-2.amazonaws.com。
- 针对北美区域的请求,将流量转发至
- 确保CloudFront具备访问两个API Gateway的权限(公开API Gateway默认允许访问),也可在API Gateway侧配置白名单限制仅CloudFront IP段访问。
方案二:为两个API Gateway绑定相同的自定义域名
- 在
us-west-2区域,为APIGateway1绑定us.api.example.com,配置对应区域的ACM证书(或导入已有的有效证书)。 - 在
eu-west-2区域,为APIGateway2绑定us.api.example.com,同样配置该区域的ACM证书(需确保证书覆盖此域名)。 - 在Route53中创建地理定位类型的A记录,记录名为
us.api.example.com:- 北美区域的路由目标设置为
APIGateway1.execute-api.us-west-2.amazonaws.com; - 欧盟区域的路由目标设置为
APIGateway2.execute-api.eu-west-2.amazonaws.com。
- 北美区域的路由目标设置为
- 此方案完全符合AWS文档的要求,因为两个API Gateway都绑定了
us.api.example.com,请求的Host头会被API Gateway正常校验通过。
原思路不可行的核心原因
当你尝试让us.api.example.com的路由指向仅绑定了eu.api.example.com的APIGateway2时,API Gateway会校验请求的Host头(即us.api.example.com)是否与自身绑定的自定义域名匹配,不匹配则直接拒绝请求,这就是文档中该限制的本质逻辑。
内容的提问来源于stack exchange,提问作者XU NANSU
相关产品推荐
相关产品推荐

