域名已经与"现有" CloudFront分发

时间:2017-10-04 15:09:26

标签: amazon-web-services amazon-cloudfront amazon-route53 serverless-framework

当我尝试使用sls create_domain通过serverless-domain-manager设置域时,它失败了:

  

BadRequestException:您提供的域名已与现有CloudFront分配相关联。   从现有CloudFront分配中删除域名或使用其他域名。   如果您拥有此域名且未在现有CloudFront分配中使用该域名,请与支持部门联系。 api.example.com未创建。

我追踪了line where the library fails

请注意,我的帐户在CloudFront中没有任何内容。这就是我打开它时所看到的:

enter image description here

在证书管理器中,它表示证书正在使用中,这也很有趣: enter image description here

在Associated Resources下,我可以看到cloudfront的条目:arn:aws:cloudfront:: ...

4 个答案:

答案 0 :(得分:6)

Thanx到Matt's guidance我发现是什么导致幻影CloudFront发行版。在AWS控制台中,转到:

亚马逊API网关>自定义域名

删除那里的所有冲突域并再次重做部署步骤。

答案 1 :(得分:2)

创建API网关时,它将代表您创建基础CloudFront分配。您可能无法在您的AWS账户中看到它,但它就在那里。

此外,用于CloudFront分配的域必须是全局唯一的。这意味着如果其他人已经拥有api.example.com的CloudFront分配,那么您也无法使用它。

因此,您已经说过,您的AWS账户中没有可见的现有CloudFront分配。

如果您已经拥有api.example.com的API网关,则无法创建第二个。如果是这种情况,您需要使用其他域,或删除原来的域。

如果您没有该域的API网关,那么其他人可能已经有了一个。如果是这种情况,那么您需要使用其他域名。

答案 2 :(得分:0)

这是我遇到和解决此问题的方式:

  1. 创建了一个无服务器应用并运行sls create_domain
  2. 为时已晚,我是否发现我所在的地区在serverless.yml中是错误的地区
  3. 从AWS手动删除CloudFormation堆栈,以及Route53记录。
  4. 更改了区域,再次尝试create_domain,但出现错误-尽管我已删除所有内容
  5. Ran sls delete_domain-这也引发了错误,但显然清除了一些“隐藏”的AWS内容
  6. 再次运行sls create_domain。瞧,工作了。

答案 3 :(得分:0)

“幻影”云前端发行版不可见,因为它位于 AWS 自己拥有的账户中,用于部署边缘优化的 API 网关实例使用的发行版。

正如@Daniel 在上面的回答中提到的,在控制台中删除与证书关联的任何自定义域名,但如果它们不可见(例如,如果它们已经被删除),请尝试使用删除它们AWS CLI,因为它似乎在完全清理到那些 AWS Cloudfront 发行版的链接方面做得更好:

aws apigateway delete-domain-name --region "<INSERT REGION>" --domain-name "<INSERT DOMAIN NAME>"

当@CGreg 遇到 sls_delete_domain 命令时,您可能会遇到错误。我试图通过我已经删除的自定义域名删除 ACM 中与这些发行版之一相关联的旧证书。我为每个自定义域名运行了两次上述命令(在我认为我最初可能部署到的任何区域)。第一次出现“未找到域名”错误,第二次出现“操作超时:最大重试次数”错误,但与 Cloudfront 发行版的关联已被删除,我能够删除旧证书 ??

不确定是否只执行一次,但由于我收到了不同的错误响应,因此在幕后肯定发生了一些不同的事情,所以尝试它没有坏处!