2

我在两个 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 Gateway 中的自定义名称和基本路径。

美国大学:

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
4

2 回答 2

2

我刚刚与 AWS 专业人士交谈,并被告知这不是一种可能的架构。

于 2020-10-06T00:22:03.057 回答
1

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

你会有起源:

  • 哈佛 => us-east-1.example.com
  • 斯坦福 => us-east-1.example.com
  • ubc => ca-central-1.example.com
  • ...

和缓存行为:

  • /harvard => 哈佛(原籍)
  • /斯坦福 => 斯坦福
  • /ubc => ubc

收到请求时,CloudFront 会检查路径模式并将响应路由到正确的 API Gateway 终端节点。不利的一面是,当您要路由到一所新大学时,您需要修改 CloudFront 分配。我写了一些关于 CloudFront 中的路由如何工作的文章。

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

于 2020-08-31T17:53:51.283 回答