Amazon S3:静态网站:自定义域或子域


79

Amazon.com刚刚宣布可以在S3存储桶中托管静态网站。我去了他们的设置页面http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?WebsiteHosting.html并为我的静态网站创建了一个存储桶,它运行良好。我的网址格式为http:// [我的存储桶名称] .s3-website-us-east-1.amazonaws.com /。

但是,我想将我拥有的一个子域(例如static.mydomain.com)指向我在Amazon S3上的静态网站。有人知道该怎么做吗?

感谢您能给我的任何帮助。

Answers:


182

事实证明,要使其工作,您不能仅将任意子域映射到任意存储桶。完全限定的子域名必须与S3存储桶名称相同

  1. 假设您的站点名称为static.mydomain.com。然后,您需要创建一个具有相同名称的S3存储桶,名称为static.mydomain.com
  2. 一旦将该存储桶配置为S3静态网站,它将为其分配一个URL,该URL看起来像http://static.mydomain.com.s3-website-us-east-1.amazonaws.com
  3. 转到您的域主机,然后将您的子域映射到步骤2中的URL。在enom.com中,这意味着将主机“ static ”映射到地址“ static.mydomain.com.s3-website-us-east-1.amazonaws” .com ”作为CNAME记录。

感谢UriahDavid的建议。我最终在Amazon AWS论坛上得到了答案。


我不知道。您必须尝试一下。另外,您可能会背负Amazon的SSL证书,而不是您自己的SSL证书。
杰伊·戈德斯

2
您实际上可以将您的cname指向 s3-website-us-east-1.amazonaws.com,它似乎忽略了子域,并使用HOST http标头指定存储桶。两者是否匹配,或者是否存在子域似乎都没有关系。
lynks 2012年

@lynks-您甚至可以放下该区域,然后仅需使用s3.amazonaws.com
plyawn

@hnprashanth是正确的(仅使用S3),尽管有CloudFront分布,您最多可以有10个子域指向相同的资源位置...请查阅docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide / ...
plyawn

这可行。AWS在Intro的早期部分对此进行了说明,但是当您完成所有步骤时,它很容易/可能会忘记它。这是比lynks cname解决方案更好的解决方案,因为AWS现在对每个用户收取cname查找的交易费用。
Mike_Laird '16

5

创建存储桶时,请确保遵循S3 DNS存储桶命名约定

然后:

  1. 使用属性->网站上的AWS管理控制台为存储桶启用S3网站支持

  2. 确保存储桶中的文件具有公共读取权限

  3. 使用管理控制台中列出的端点尝试网站

  4. 使用列出的端点设置您的CNAME(例如www.example.com CNAME www.example.com.s3-website-us-east-1.amazonaws.com


我完成了所有4个步骤。第3步有效。第4步中的cname进行了配置(使用enom.com,它可以在其他子域中成功完成此操作),但是既没有用浏览器访问我的s3子域,也没有对其进行ping操作。使用heroku.com和blogger.com,您必须告诉他们哪个子域将命中哪个heroku-app或blogger-blog。S3静态网站似乎没有此功能。
杰伊·戈德斯

2
@Jay Godse您启用网站的存储桶的名称是什么?它是区域?
乌里亚·卡彭特

4
  1. 创建一个托管区域,例如mydomain.com。您可以使用基于Web的UI DNS30
  2. 现在,为此托管区域创建一个CNAME条目。
  3. 添加具有以下详细信息的资源记录名称为“ mydomain.com”,类型为“ CNAME”,值为“ mydomain.com.s3.amazonaws.com”,TTl为“在您所需的配置上”

希望这也适用于static.mydomain.com

问候-

乌迪特



3

如何使用DNS服务,例如Amazon提供的Route 53。使用您的子域中的CNAME设置它到公共存储桶URL。当然,如果您的域名公司提供CNAME配置,则可以直接使用。


1

更新2019:S3中的AWS自定义子域托管

到目前为止,以下步骤对我来说已经很有效,以便为AWS S3托管静态网站提供一个有效的子域:

  1. 使用子域名创建存储桶。在此示例中,www。子测试.mysite.com

bucket斗

注意:请确保在存储桶的“权限”选项卡上:-阻止公共访问(存储桶设置)-适当设置访问控制列表和-存储桶策略以确保存储桶是公共的。(假设您已经为根域存储桶执行了此操作,那么这些设置可以镜像到该子域存储桶上)

AWS存储桶权限

  1. 在存储桶中上传index.html文件

s3存储桶中的索引文件

  1. 与您的域名提供商一起 创建CNAME记录名称便宜的CNAME记录
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.