AWS API Gateway 自定义域:您提供的域已与现有 CloudFront 分发相关联

AWS API Gateway 自定义域:您提供的域已与现有 CloudFront 分发相关联

我只是试图在 API Gateway 中设置自定义域。我有 ACM 证书“*.mysite.com.au”,目前正用于通过 CloudFront 在“beta.mysite.com.au”上提供静态 S3 网站。我希望使用此证书为“api.mysite.com.au”创建一个自定义域。

但是,我在 AWS API Gateway 控制台中收到以下错误:

您提供的域名已与现有 CloudFront 分配关联。请从现有 CloudFront 分配中删除该域名或使用其他域名。如果您拥有此域名但未在现有 CloudFront 分配上使用它,请联系支持人员。

我目前没有在 CloudFront 发行版中使用“api.mysite.com.au”。所以我很困惑。有人遇到过这个问题吗?如果遇到过,我该如何解决?

提前致谢,

紧张

答案1

有三到四种可能性:

  • 事实上,您已将此域名配置为 CloudFront 中的备用域名(在此 AWS 账户或其他账户中),但您忘记了它,或者

  • 其他人在 CloudFront 分配上意外或故意配置了此域,或者

  • 您已在 API Gateway 中配置了此项,但在不同的 AWS 区域中,或者

  • 这是 API Gateway 和 CloudFront 集成中的一个错误。

故障排除:

转到 CloudFront 并创建一个新的分发。

尝试将此主机名设置为备用域名。

如果可行,那么这似乎是 API Gateway/CloudFront 集成中的一个错误。从该新分发的备用域名中删除主机名,等待几分钟让分发恢复Deployed状态,然后在 API Gateway 中重试。(稍后,删除分发 - 不需要它)。

但是,我假设上述方法不起作用。您应该会收到来自 CloudFront 的错误CNAMEAlreadyExists。(它实际上不是 CNAME,但不幸的是他们就是这么称呼它的。)

所以,按照官方流程证明您对域名的所有权和控制权,并将其与新的 CloudFront 分发关联。

此过程应从声明该主机名的任何 CloudFront 分发中释放该主机名。

完成后,从新分发的备用域名设置中删除此主机名,保存更改,等待其返回状态Deployed,然后返回 API 网关并重试。(稍后,删除未使用的分发。)

这里的问题是——就像 S3 存储桶命名空间一样——CloudFront 前端Host:标头命名空间是全局的。主机名不能与多个 CloudFront 分发版相关联,包括 API Gateway 使用的“隐身”分发版。该错误意味着您尝试使用的那个由于某种原因已经存在。

这应该与您从 ACM 获得的通配符无关。

答案2

我找到了导致我遇到此问题并得出相关解决方案的真正极端情况原因。

  1. 拥有一个包含自定义域相关资源的现有 AWS 帐户(例如 ABC-123)。在我的例子中是在 API 网关中。
  2. 取消/暂停 AWS 账户,天真地期望它会删除所有资源,但实际上它会保留大多数(如果不是全部)资源。
  3. 打开另一个 AWS 账户 (DEF-456) 并尝试指向 (ABC-123) 上使用的自定义域。

解决上述情况的方法是联系 AWS,让他们重新启用帐户 ABC-123。登录后,删除自定义域条目,这样就可以释放该自定义域。

相关内容