当我尝试使用sls create_domain
通过serverless-domain-manager设置域时,它失败了:
BadRequestException:您提供的域名已与现有CloudFront分配相关联。 从现有CloudFront分配中删除域名或使用其他域名。 如果您拥有此域名且未在现有CloudFront分配中使用该域名,请与支持部门联系。 api.example.com未创建。
我追踪了line where the library fails。
请注意,我的帐户在CloudFront中没有任何内容。这就是我打开它时所看到的:
在Associated Resources下,我可以看到cloudfront的条目:arn:aws:cloudfront:: ...
答案 0 :(得分:6)
答案 1 :(得分:2)
创建API网关时,它将代表您创建基础CloudFront分配。您可能无法在您的AWS账户中看到它,但它就在那里。
此外,用于CloudFront分配的域必须是全局唯一的。这意味着如果其他人已经拥有api.example.com
的CloudFront分配,那么您也无法使用它。
因此,您已经说过,您的AWS账户中没有可见的现有CloudFront分配。
如果您已经拥有api.example.com
的API网关,则无法创建第二个。如果是这种情况,您需要使用其他域,或删除原来的域。
如果您没有该域的API网关,那么其他人可能已经有了一个。如果是这种情况,那么您需要使用其他域名。
答案 2 :(得分:0)
这是我遇到和解决此问题的方式:
sls create_domain
serverless.yml
中是错误的地区create_domain
,但出现错误-尽管我已删除所有内容sls delete_domain
-这也引发了错误,但显然清除了一些“隐藏”的AWS内容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 发行版的关联已被删除,我能够删除旧证书 ??
不确定是否只执行一次,但由于我收到了不同的错误响应,因此在幕后肯定发生了一些不同的事情,所以尝试它没有坏处!