繁体   English   中英

如何为我的AWS S3存储桶分配子域?

[英]How can I assign a subdomain to my AWS S3 Bucket?

我的AWS存储桶中有一个文件: https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg : https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg

目前,我正在访问我的index.html文件www.my-company.com文件。 我将my-company.com作为AWS Route 53中的托管区域。

但是,在那个index.html ,我不希望此资产明显位于AWS存储桶中。 我希望它看起来像是托管在我自己域的服务器上。 因此,而不是https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg ,我希望它被称呼为https://static.my-company.com/media/my-file.jpg 我怎样才能做到这一点?

我尝试在Route 53中插入CNAME记录,该记录会将static.my-company.com s3.amazonaws.com/static.my-company.com 但这没有用。 这就是杰伊·戈德斯(Jay Godse) 在这里推荐的

您需要将S3存储桶设置为静态网站 (在S3中可以选择将存储桶设置为静态网站 )。 域名将更改为http://static.my-company.com.s3-website-us-east-1.amazonaws.com. ,这就是您要在Route 53中将CNAME记录设置为的记录。

请注意,您不能像当前一样将CNAME记录设置到目录中,它必须是可解析的域。

因此,而不是https://s3.amazonaws.com/static.my-company.com/media/my-file.jpg ,我希望它被称呼为https://static.my-company.com/media/my-file.jpg 我怎样才能做到这一点?

这里有三个独立的问题。

如果您为存储桶启用了网站托管功能(如@Deif在此处的另一个答案所示),则可以使用别名或CNAME将Route 53中的主机名指向存储桶的网站端点。 但是它不支持HTTPS。

HTTPS要求Web服务器使用SSL(TLS)证书向浏览器标识自己,该证书包含与浏览器地址框中的主机名匹配的主机名。 REST端点上的S3证书匹配s3.amazonaws.com各种排列-它们与您的域不匹配。

因此,您需要一个SSL证书。 如果您已有一个,则将其上传到us-east-1区域中的Amazon Certificate Manager(ACM)。¹如果没有,则ACM可以免费为您创建一个。

接下来,使用您的子域作为备用域名,使用上面的ACM证书以及将网站端点主机名用作原始服务器,创建一个新的CloudFront发行版。

然后,将您的子域在Route 53中指向CloudFront分配。

现在, https://subdomain.example.com/pics/funny/cat.jpg //subdomain.example.com/pics/funny/cat.jpg转到CloudFront,后者提供SSL并从相应的存储桶中获取内容。

为什么需要CloudFront? 这是使用通过S3启用SSL的自定义域名的官方解决方案。 S3本身不支持该功能。 使用CloudFront会带来相应的成本,但会大大降低S3本身的成本。 通过CloudFront进行下载时,S3对用于下载的带宽收取$ 0的费用,而CloudFront则对带宽收费。 在许多情况下,CloudFront的带宽价格较低(大概是因为CloudFront可以水平扩展以减轻拥塞,而S3只能垂直扩展-这是受设计限制的)。


¹在ACM中,无论存储桶位置在哪里, us-east-1区域始终用于此处描述的设置,因为CloudFront是从us-east-1之外管理的,并且我们需要此证书才能供CloudFront访问。

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

遵循以下步骤对我起作用,以使子域在AWS S3托管的静态网站上运行:

  1. 创建具有子域名的存储桶。 在下面的示例中,它将是www。 子测试 .mysite.com

bucket斗

注意:请确保在以下存储分区的“权限”标签上进行了设置:

1.阻止公共访问(存储桶设置)2.访问控制列表3.适当设置存储桶策略以确保存储桶是公共的。 (假设您已经为根域存储桶执行了此操作,那么这些设置可以镜像到该子域存储桶上)

S3存储桶权限

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

索引aws桶

  1. 与您的域名提供商一起创建CNAME记录 名称便宜的CNAME记录

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM