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

Multiple API Gateways from different regions with the same Custom Name and different base path

我在两个 AWS 区域(us-east-1、ca-central-1)有 10 个不同的 API。使用基本路径映射,us-east-1.example.com 在美国服务 5 APIs,ca-central-1.example.com 在其他 5APIs 服务(API 网关)。虽然后端是 运行 相同的代码,但它是客户要求的一部分。我们的客户是 public 所大学,他们希望在自己的国家/地区拥有自己的服务器。 例如,当前设置使用来自 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
  • 斯坦福 => us-east-1.example.com
  • ubc => ca-central-1.example.com
  • ...

和缓存行为:

  • /哈佛 => 哈佛(原产地)
  • /斯坦福 => 斯坦福
  • /ubc => ubc

收到请求时,CloudFront 检查路径模式并将响应路由到正确的 API 网关端点。不利之处在于,当您想要路由到一所新大学时,您需要修改 CloudFront 分配。我已经写了 some articles 关于 CloudFront 中的路由如何工作的文章。

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

我刚刚与一位 AWS 专家交谈,被告知这不是一个可行的架构。