服务网站从S3使用Cloud Front& 53号公路

时间:2016-10-05 16:05:52

标签: amazon-web-services amazon-s3 amazon-cloudfront amazon-route53

我最近刚将我的域名从托管服务提供商转移到亚马逊。我想使用S3存储桶托管我的网站,我最初尝试将我的存储桶设置为domain.comwww.domain.com,但我认为我之前的托管服务提供商采用了这些存储桶名称,因为我无法创建它们。 / p>

所以我现在正在研究一项工作......
- 创建了一个具有唯一名称的新存储桶,并将我的网站文件放入其中 - 我设置Cloud Front从该存储桶中提取文件 - 最后是一个Route 53托管区域,其中domain.comwww.domain.com的CNAMES指向该云端。

以下是我的问题所在。我无法将www.domain.com添加到Cloud Front中的CNAME中。我收到以下错误:

com.amazonaws.services.cloudfront.model.CNAMEAlreadyExistsException: One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: 19a9a141-8b15-11e6-aa8f-87e12f4b3abf)

但是,它接受domain.com ...所以当我访问domain.com时,我会获得正确的网站,但当我访问www.domain.com时,我会收到旧网站。

我认为这是因为我无法在我的Cloud Front中添加该CNAME。我该如何解决这个错误?

谢谢

3 个答案:

答案 0 :(得分:2)

  

如果备用域名已存在于另一个CloudFront分配中,则无法将备用域名添加到CloudFront分配,即使您的AWS账户拥有其他分配。

     

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-restrictions

这是导致您看到的错误的条件。如果您已经使用此配置了另一个CloudFront分配,那么显然需要将其删除,然后这将有效。

否则,旧的提供商可能仍然在他们的 CloudFront发行版之一上配置了您的域 - 因此您需要说服他们删除它,或者您需要获得AWS支持协助你。如果已在另一个帐户的CloudFront中配置了域,则无法通过您的操作修复此问题。

AWS Support有一个特殊的流程来处理这种情况:https://aws.amazon.com/premiumsupport/knowledge-center/resolve-cnamealreadyexists-error/

答案 1 :(得分:1)

如果你们中的任何人在发生CNAMEAlreadyExistsException之前一直在使用Zappa和/或AWS API Gateway,那么

只需通过AWS CLI确保想要使用的域不再在AWS API Gateway中列出,如下所示:

aws apigateway get-domain-names

如果您在此处找到它:

aws apigateway delete-domain-name --domain-name <your-domain>

这为我解决了这个问题。一块!

顺便说一句,我没有找到通过Web列出或删除它的方法,只是随处可见AWS API Gateway的欢迎屏幕。

答案 2 :(得分:0)

就我而言,我忘记了过去使用我想使用的CNAME使用AWS Amplify部署应用程序。

这就是为什么我在Cloudfront控制台上找不到Cloudfront发行版的原因。检查是否有使用所需名称的AWS Amplify应用。