【问题标题】:Domain name already associated with an "existing" CloudFront distribution已与“现有”CloudFront 分配关联的域名
【发布时间】:2018-03-16 01:10:26
【问题描述】:

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

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

我找到了line where the library fails

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

有趣的是,在证书管理器中,它说证书正在使用中:

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

【问题讨论】:

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


    【解决方案1】:

    感谢Matt's guidance 我找到了导致幻影 CloudFront 发行版的原因。在 AWS 控制台中,转到:

    Amazon API Gateway > 自定义域名

    删除那里的所有冲突域并重新执行部署步骤。

    【讨论】:

    • 但是如果没有冲突的域呢?
    • @Infiltrator 不知道。对不起。
    • 如果没有冲突的域,请尝试切换区域。 Serverless 默认使用us-east-1,所以那里可能有一些剩菜。上帝 AWS 好混乱
    【解决方案2】:

    以下是我遇到并解决此问题的方法:

    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】:

      当您创建 API 网关时,它将代表您创建底层 CloudFront 分配。您可能在您的 AWS 账户中看不到它,但它就在那里。

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

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

      如果您已经有一个用于api.example.com 的 API 网关,那么您无法创建第二个。如果是这种情况,您需要使用不同的域,或者删除原来的域。

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

      【讨论】:

      • CloudFront 发行版即使在 aws cli 中也不会出现。我看不到其他任何人都可以为该域分配 CloudFront。我没有任何 api 网关。我看不出任何人会有该域的 api 网关。该域在 Route53 中注册。我是第一个所有者。
      • 如果 CloudFront 发行版是由 API Gateway 创建的,您将永远不会通过 UI 或 CLI 看到它。如果 AWS 说它已经存在,那么它已经存在于某个地方。 53 号公路在这个问题上毫无意义。您应该联系 AWS 支持以确定它存在的位置以及如何解决它。
      • “如果 CloudFront 发行版是由 API Gateway 创建的,您将永远不会通过 UI 或 CLI 看到它。”你能提供一些关于这个的参考吗?我想了解为什么会这样。不然我已经reached out to them
      • 来自forums.aws.amazon.com/thread.jspa?threadID=195290,“API Gateway 在后台与 CloudFront 集成。我们会自动为您的 API 创建一个全球 CloudFront 分配,以减少最终用户感知的延迟。”
      【解决方案4】:

      “幻影”云端发行版不可见,因为它位于 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 分发的关联,我能够删除旧证书??

      不确定是否只有一次会这样做,但由于我得到了不同的错误响应,引擎盖下肯定发生了一些不同的事情,所以尝试它没有害处!

      【讨论】:

        猜你喜欢
        • 2019-07-04
        • 2018-08-17
        • 2022-01-09
        • 2021-06-11
        • 1970-01-01
        • 2021-02-10
        • 2021-12-02
        • 2017-08-21
        • 2021-03-11
        相关资源
        最近更新 更多