我应该使用S3或S3 + Cloudfront作为照片共享网站吗?

时间:2013-10-28 01:24:17

标签: amazon-web-services amazon-cloudfront

我正在构建一个照片共享应用程序,并试图弄清楚我是否应该使用s3或s3 + cloudfront来托管我的用户照片。由于我的用户共享的照片可能不会被访问很多(平均大概是5次),云端是明智的选择吗?此外,当cloudfront收到访问者时,是否会导致我的s3存储桶上的put / get结果?

如果我错了,请纠正我:

使用cloudfront + s3的定价是:S3存储+ Cloudfront带宽。

2 个答案:

答案 0 :(得分:2)

您支付每个请求的价格,这些请求可以访问Cloudfront,从Cloudfront到浏览器的带宽以及Cloudfront和S3之间的带宽(降低的速率)。当Cloudfront在请求到达的边缘位置没有对象的副本时,您还需要从S3支付每个GET的费用。

Cloudfront在全球拥有数十个系统,他们使用基于位置的DNS服务将请求路由到这些系统。当您从cloudfront请求对象时,您的请求将根据您的IP地址建议您所在的位置(理论上)进入最佳位置,具体取决于分发配置的云端定价包(您可以选择不发送请求)到成本较高的地方,这会让你的用户变慢,但成本更低。)

对于cloudfront中的每个位置,如果从那里请求了一个对象,并且由于先前的请求而没有缓存该位置,则必须从S3获取该对象。 Cloudfront不是预测性的整体实体 - 在该系统具有该对象的副本之前,似乎必须从其各个系统位置请求对象。与AWS区域相比,云端边缘位置更多......例如,南本德,印第安纳,亚特兰大,达拉斯和圣路易斯都有Cloudfront边缘位置,但是路过圣路易斯的请求并不意味着您的对象的副本也将缓存在South Bend中,直到请求同一个对象到达那里。

对于每次请求每个图像的网站,cloudfront没有多大意义,因为缓存图像的几率很小,这就是cloudfront的重点 - 缓存对象的地理位置更接近给最终用户。如果对象不在那里,它就不会更快,而且可能会慢一些因为必须通过cloudfront从S3获取对象,然后将其送回浏览器...所以你需要额外支付一些不能提供的东西在那种情况下你很多。

Cloudfront只会对您的存储桶“GET”。您仍然会将对象直接“插入”S3。

如果您的用户是美国用户,则S3的“美国标准”区域会根据用户的明显位置在地理位置上将请求路由到美国东部或西部的服务器。其他区域中的存储区仅满足该区域服务器的所有请求。

如果您的用户是全球用户,您的系统可以根据用户的注册位置动态选择您在每个区域中提供的最适合位置的存储桶,并根据大多数观众的理论存储该用户的图像如果这些图像是由远程位置的某人共享的话,那么来自世界其他地方的用户将不会因从另一个大陆获取图像所需的额外页面加载时间而感到不便。 / p>

答案 1 :(得分:0)

检查AWS定价计算器 - http://calculator.s3.amazonaws.com/index.html。 Cloudfront的使用通常非常便宜,您可以随时打开/关闭它。