基本路径映射是否会创建 CloudFront 分布

基本路径映射是否会创建 CloudFront 分布

API 网关中 API 上的基本路径映射是否使用“隐藏”云端分布?

我在 API 网关上有一个 API,其基本路径映射在域上。但是,这不会通过 cloudfront,因此没有 https,只有 http。

当我尝试为同一个域创建云端分发时,它会提示“CNAME 已在使用中”,并且无法为其创建云端分发,即使我没有与该域关联的任何云端分发,并且在 route53 上也没有任何内容。

如果 API 网关上的基本路径映射创建了一个“隐藏”的云端分发,我无法在 CloudFront 分发控制台页面上看到它——那么这是有道理的。我一次只能将一个分发与一个 CNAME 关联。

但这使得 API Gateway 中的基本路径映射变得毫无用处——它们不允许我通过 cloudfront 进行分发,因此也不能使用 https 来保护自定义域。为 cloudfront 创建一个源(为 API 创建一个源),然后以此方式分配它似乎更直接。

但想确认是否确实如此——API 网关中 API 上的基准路径映射是否会创建“隐藏”的云端分发并锁定 CNAME 域以防止被其他云端分发使用。

答案1

我对此学到了很多东西,认为值得分享。

API Gateway 允许您创建边缘优化分发,甚至允许您使用来自 ACM 的证书来实现它。一旦您将 CNAME 绑定到边缘优化域,就无法为其创建云端分发 — 您不需要它,因为您的 APi 已经在 CloudFront 上。

我更倾向于完全不使用基本路径映射。但使用 API 作为 Cloudfront 发行版的源,然后使用行为(例如 /api/v1/*)将流量从发行版转移到 API。

非常重要的一点:如果您的行为设置为/api/v1确保您的 API 网关资源也以此开头,/api/v1否则您将收到可怕的缺少身份验证令牌错误,这是人类已知的最神秘、最令人沮丧的错误消息。

这个单独的 CloudFront 分布允许您通过常规方式修改其他行为(如静态站点和文件)。BasePath 映射方法仅在您的 API 位于其自己的域(例如 api.example.com)上时才有效,并且如果您使用基本路径映射,则通过控制台管理该用例的 api 版本/阶段会容易得多。

CloudFront 部署需要近 40 分钟才能完全部署,这通常很麻烦你知道在哪。没有完美的选择,但了解其中的复杂性总是好的。

相关内容