AWS:如何为自定义域名配置 Cloudfront

AWS: How to configure Cloudfront for Custom Domain Names

我的设置:

API 网关 - 10 APIs (api1, api2,...), 全部映射到一个自定义域名 (api.xxx.com)

Route53 - api.xxx.com 指向我的 Cloudfront 分布

Cloudfront - 已创建分配,api.xxx.com 设置为 CNAME

我需要知道的 - 我想将这个 Cloudfront 的来源设置为这个自定义域名,这样我就可以调用 APIs 就像 api.xxx.com/api1/endpoint,api.xxx.com/api2/endpoint.但是怎么办?我使用 API 我的 api.xxx.com 自定义域名的网关名称 (xxxxxxx.execute-api.us-east-1.amazonaws.com) 作为默认行为源名称并假设请求到所有 10 API 都将被正确路由,但它没有发生,

有效方法: 我使用 api1 的调用 Url 创建了 Origin 名称并将其分配给默认行为。所以现在,当我调用“https://api.xxx.com/endpoint”时,会调用 api1。这是有道理的,但问题是 - 我需要 API 的路径成为 URL 的一部分,例如“https://api.xxx。 com/api1/endpoint" 这样我就可以区分它们了。

什么不起作用: 但是我需要在发行版中设置几个 API,这样我就可以像“https://api.xxx.com/api1/endpoint”等等。如果我使用 Invoke URL 作为 API 的原始名称,我无法将此 API 名称也附加到 URL,即 returns 403。我希望如果我使用“自定义域名”的“API网关域名”(毕竟它的格式是xxxxx.execute-api.us-east-1.amazonaws.com ),然后我可以在 URL 中使用 APIs,但这不起作用。我什至不能使用这个“API网关域名”通过邮递员调用个人api。有人可以告诉我该怎么做吗?我如何配置 Cloudfront 以便它可以调用各种 API 并在 URL 中使用它们的路由?

我的设置与你的略有不同,但我们似乎想要实现相同的目标。

我有四个通过云端服务的 S3 存储桶。 一桶是根网站;其他 3 个存储桶包含 3 个不同的管理面板

我为每个 s3 存储桶创建了一个单独的源;我相信你应该为每个单独的 api.

创建一个原点

我为每个起源组添加了两个路径模式;我相信对于您的 api,每个 api 可以有一个模式。路径模式可能看起来像 /api1/* 指向 api1

的原点

不确定您是否尝试为所有 api 添加来源。

终于找到了解决方案,在此讨论帖中有更详细的描述。我的问题是我试图使用 link 直接从 Cloudfront 自定义域名 (xxxxxxxxxxxx.execute-api.us-east-1.amazonaws.com),但我应该使用“nice ",可读地址作为源名称并在 Route53

中进行重定向

工作设置:

  1. 在API网关中,创建自定义域名regional-api.xxx.com,端点类型Regional (xxxxxxxxxxxx.execute-api.us-east-1.amazonaws.com) .
  2. 在 Route53 中,A 和 AAAA 记录将 regional-api.xxx.com 映射到 Regional 端点目标域名。
  3. 创建了 Cloudfront 分配,使用区域-api.xxx.com 作为源域名和 api.xxx.com 作为 CNAME。
  4. 在 Route53 中,A 和 AAAA 记录映射 api.xxx.com 到新创建的 CF 分配的域名。