1

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

如果我有这个错误,请纠正我:

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

4

2 回答 2

2

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

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

对于云端的每个位置,如果从那里请求一个对象,并且该位置由于先前的请求而没有缓存它,则必须从 S3 获取它。Cloudfront 不是一个可预测的整体实体——在该系统拥有该对象的副本之前,似乎必须从其单独的系统位置之一请求对象。Cloudfront 边缘站点的数量多于 AWS 区域……例如,在 South Bend、印第安纳州、亚特兰大、达拉斯和圣路易斯有 Cloudfront 边缘站点,但通过圣路易斯路由的请求并不意味着您的对象的副本也将缓存在 South Bend,直到对同一对象的请求到达那里。

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

Cloudfront 将只是针对您的存储桶“获取”。您仍然可以将对象直接“PUT”到 S3 中。

如果您的用户位于美国,则 S3 的“美国标准”区域会根据用户的明显位置将请求路由到美国东部或西部的服务器。其他区域中的存储桶仅提供来自该区域中服务器的所有请求。

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

于 2013-10-28T02:22:13.653 回答
0

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

于 2014-03-05T20:24:20.637 回答