基于地理定位的多个s3桶的一个域

时间:2016-04-19 12:44:42

标签: amazon-web-services amazon-s3 amazon-ec2 dns

我们希望尽快在我们的应用程序中托管图像。由于我们已经拥有AWS设置,因此我们更愿意在S3存储桶上托管我们的图像(但是对于备选方案是开放的)。

挑战是将请求路由到最近的S3存储桶。 现在我们使用带有地理位置路由策略的Amazon Route 53到关闭的EC2实例,该实例重定向到相应的存储桶。我们发现这个要求无效: origin-> DNS-> EC2-> S3并且更喜欢 成份,其中> DNS-> S3。是否可以将两个静态网站S3存储桶绑定到基于地理位置路由请求的同一域?

Ps:我们已经研究过云端,但由于许多图像都是动态的,只有一次我们希望原点尽可能接近用户。

2 个答案:

答案 0 :(得分:4)

不可能这样做。

为了使S3存储桶作为静态网站提供文件,存储桶名称必须与正在浏览的域匹配。由于此限制,不可能为同一个域提供多个存储桶服务文件,因为即使在不同的区域中也无法创建多个具有相同名称的存储桶。

CloudFront可用于提供S3存储桶中的文件,而这些S3存储桶不需要使其名称与域匹配。所以乍一看,这可能是一种解决方法。但是,CloudFront不允许您为同一个域创建多个分发。

所以不幸的是,在撰写本文时,S3存储桶无法进行地理定位。

编辑以获得更深入的解释:

您的域的DNS条目是CNAME,A记录还是ALIAS是无关紧要的。限制在S3方面,与DNS无关。

CNAME记录会将example.com解析为s3.amazonaws.comx.x.x.x,并且将与S3建立连接。但是,您的浏览器仍会在example.com标题中发送Host

当S3为网页提供文件时,它使用HTTP请求中的Host标头来确定应该从哪个存储桶提供文件。这是因为S3有一个HTTP端点。因此,就像您自己的Web服务器托管来自同一服务器的多个网站一样,它使用Host标头来确定您真正想要的网站。

S3拥有您想要的Host后,会将其与可用的存储桶进行比较。它决定使用存储桶名称来匹配Host标头。

答案 1 :(得分:1)

经过大量研究后,我们找不到问题的答案。但我们更新了我们的设置。场景是用户单击按钮并将在IOS应用程序中查看一些图像。当用户按下按钮时的请求被地理重新路由到最近的EC2实例以获得更快的性能。我们更新了它,而不是在欧盟和美国返回相同的图像链接,因此当点击美国时,您可以获得美国S3桶的链接,欧洲也是如此。我们还提出了两个云前端发行版,一个位于每个S3存储桶前面,以提高速度。