来自不同地区的具有相同自定义名称和不同基本路径的多个API网关

问题描述

我在两个AWS区域(us-east-1,ca-central-1)中有10个不同的API。使用基本路径映射,us-east-1.example.com在美国提供5种API,而ca-central-1.example.com在提供其他5种API(API网关)。尽管后端运行相同的代码,但这是客户端要求的一部分。我们的客户是公立大学,他们希望在自己的国家/地区拥有自己的服务器。 例如,当前设置使用的是来自API网关的自定义名称和基本路径。

美国大学:

us-east-1.example.com/harvard
us-east-1.example.com/stanford
us-east-1.example.com/mit

加拿大大学:

ca-central-1.example.com/ubc
ca-central-1.example.com/bcit
ca-central-1.example.com/waterloo

是否可以使用Route 53将它们合并为一个自定义域,如下所示?

api.example.com/harvard
api.example.com/ubc

解决方法

您绝对可以为此使用CloudFront,并且可以使用Route53在自定义域下使其可用。将每所大学添加为一个来源,并使用大学名称的路径模式为每个大学添加缓存行为,而将目标作为相应来源。

您将有出身:

  • 哈佛=> us-east-1.example.com
  • stanford => us-east-1.example.com
  • ubc => ca-central-1.example.com
  • ...

和缓存行为:

  • / harvard =>哈佛(起源)
  • / stanford => stanford
  • / ubc => ubc

当请求进入时,CloudFront会检查路径模式并将响应路由到正确的API Gateway端点。不利的一面是,当有新的大学要转到时,您需要修改CloudFront分配。我已经写过some articles关于CloudFront中路由如何工作的信息。

要将其托管在您自己的域名下,您需要使用ACM为该域申请证书,然后将备用域名添加到CloudFront发行版中,最后将A(和AAAA)记录添加到托管的Route53中指向分布的区域。

,

我刚刚与AWS Professional交谈,并被告知这是不可能的架构。