278

是否存在比 s3 更适合 Amazon cloudfront 的用例或其他用例?我试图通过示例了解两者之间的区别。

4

9 回答 9

421

Amazon S3专为某一特定地理区域的大容量、低成本文件存储而设计。* 存储和带宽成本非常低。

Amazon CloudFront是一个内容分发网络 (CDN),它在尽可能靠近用户的边缘位置代理和缓存 Web 数据。

当最终用户使用此域名请求对象时,他们会自动路由到最近的边缘位置,以实现您的内容的高性能交付。(亚马逊

CloudFront 提供的数据可能来自也可能不来自 S3。由于它针对传输速度进行了更优化,因此带宽成本更高。

如果您的用户群是本地化的,您不会发现使用 S3 或 CloudFront 有太大差异(但您必须为您的 S3 存储桶选择正确的位置:美国、欧盟、亚太地区)。如果您的用户群遍布全球并且速度很重要,那么 CloudFront 可能是更好的选择。

S3 和 CloudFront 都允许使用域别名,但是 CloudFront 允许使用多个别名,因此d1.mystatics.com,d2.mystatics.com并且d3.mystatics.com都可以指向同一个位置,从而增加并行下载的容量(这曾经是Google推荐的,但随着 SPDY 和 HTTP/2 的引入重要性较低)。

自 2014 年起, CloudFront还支持 CORS(感谢 sergiopantoja)。

* 注意:自 2015 年起,S3 现在可以自动复制到其他区域。

于 2010-07-25T10:39:42.423 回答
78

CloudFront 和 S3 Bucket 不一样。通俗地说:CloudFront 使您能够通过边缘位置的内容交付网络 (CDN) 加速 Web 内容的内容交付,而 S3 存储桶是您存储实际文件的地方。CloudFront 源可能不一定来自 S3,但为了更轻松地可视化 S3 与 CloudFront 的集成: 在此处输入图像描述

于 2017-01-31T09:00:36.223 回答
33

Amazon CLOUDFRONT 和 S3 是 Amazon Web Services 提供的两种不同的服务。

Amazon S3是一种存储服务,我们可以在其中存储静态文件,例如:

CSS,图像,javascripts,视频等...

Amazon CloudFront是一个中间件,介于用户从 AWS 请求文件和特定区域的 S3 数据中心之间,CloudFront 用于加快将静态和动态 Web 内容从 S3 分发给用户的速度。

你可以通过一个例子更好地理解它:-

例如,您的 S3 位于 AWS 区域美国东部(弗吉尼亚北部),其中一个数据中心位置用于存储您的文件。

如果来自印度的用户尝试从弗吉尼亚州的 AWS 服务器访问文件,则用户需要带着请求前往该特定位置,这将花费大量时间。

CloudFront 所做的是它充当用户和 AWS S3 之间的中间件。


最常用的文件可以缓存在 CloudFront 上,它的作用是将这些文件复制到边缘站点(为了以较低的延迟向最终用户交付内容,Amazon CloudFront 使用边缘站点的全球网络进行内容交付)。

如果内容已经在具有最低延迟的边缘位置,CloudFront 会立即交付它。如果内容当前不在该边缘站点,CloudFront 会从 Amazon S3 存储桶中检索它,并尽快将其提供给用户。

每个请求都会从 CloudFront 到 S3 获得一个新的 DNS,因此这将导致更低的流量以及更多的并行请求处理。

以下是截至 2016 年 7 月的当前边缘位置列表:-

美国

  • 弗吉尼亚州阿什本 (3)
  • 佐治亚州亚特兰大
  • 伊利诺伊州芝加哥
  • 德克萨斯州达拉斯/沃思堡 (2)
  • 加利福尼亚州海沃德
  • 佛罗里达州杰克逊维尔
  • 加利福尼亚州洛杉矶 (2)
  • 佛罗里达州迈阿密
  • 纽约州纽约 (3)
  • 新泽西州纽瓦克
  • 加利福尼亚州帕洛阿尔托
  • 加利福尼亚州圣何塞
  • 华盛顿州西雅图市
  • 印第安纳州南本德
  • 密苏里州圣路易斯

欧洲

  • 荷兰阿姆斯特丹 (2)

  • 爱尔兰都柏林

  • 德国法兰克福 (3)

  • 英国伦敦 (3)

  • 西班牙马德里

  • 法国马赛

  • 意大利米兰

  • 法国巴黎 (2)

  • 瑞典斯德哥尔摩

  • 波兰华沙

亚洲

  • 印度钦奈

  • 香港 (2)

  • 印度孟买

  • 菲律宾马尼拉

  • 印度新德里

  • 日本大阪

  • 韩国首尔 (3)

  • 新加坡 (2)

  • 台北,台湾

  • 日本东京 (2)

澳大利亚

  • 澳大利亚墨尔本

  • 悉尼,澳大利亚

南美洲

  • 巴西圣保罗

  • 巴西里约热内卢

由此您可以得出结论,如果限制的用户来自与您的 S3 托管所在的同一区域,那么您不需要使用 CloudFront,如果用户数量在全球范围内增加,那么您绝对应该使用 CloudFront以获得更好的延迟和流量控制。

于 2016-07-22T13:40:47.850 回答
29

另一个主要区别是 CloudFront 允许您在服务器上镜像站点。Cloudfront 然后使用其内容交付网络缓存图像、mp3 或视频等文件。

这使您不必像使用 Amazon S3 时那样复制您的资产。

但是,文件过期后,CloudFront 将再次从您的活动站点获取它(收费)。所以云前端最适合经常访问的文件,而不是不经常访问的文件。

为 apache 设置文件到期的一种方法是在 .htaccess 中。例如

<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>
于 2011-08-17T20:56:34.993 回答
20

在 S3 上使用 CloudFront 的另一种情况是,您可以在 CloudFront 中将 SSL 证书用于自定义域,而在 S3 中则不能。一个很好的理由恕我直言!

于 2015-12-16T21:07:13.697 回答
7

Amazon S3 是一个简单的存储服务,它可以用于大量信息,例如视频、图像、PDF 等。

CloudFront 是一个内容交付网络,它更靠近最终用户,用于在尽可能短的时间内在 Amazon S3 上提供信息。

一个示例用例是视频点播。

  1. 您将视频存储在一个地方。S3 以不同格式存储所有预先录制的视频。
  2. 您有全球用户案例
  3. CloudFront 用于将视频缓存到边缘站点。这可用于向最终用户提供内容。根据最近的物理边缘位置自动拾取位置。目前大约有 51 个边缘站点。

将 CloudFront 用于正确用例的一些优势:

  1. 改进的延迟 - 更好的最终用户体验。
  2. 可能降低数据传输成本。由于数据并非每次都从特定 AWS 区域的同一个 S3 存储桶传输。

其他可能的用例:

  1. 直播
  2. 赌博
  3. 网站加速
于 2014-04-07T11:28:45.020 回答
4

这里遗漏的一个方面是:

Amazon Cloudfront 还提供比 Amazon S3 更高的使用级别更低的价格。

  • Cloudfront CDN 用于跨地理分布的多个服务器(CSS、JS)分发内容

  • 而 s3 更多的是每个用户较少使用的资源存储(用户图像、PDF)。

您可以完全绕过 Web 服务器从 s3 存储桶提供 Cloudfront 资源。

在您的 Web 服务器预编译和存储图像和 java 脚本的情况下很有用。将它们存储在 s3 上意味着您的服务器内存占用减少了

例如:在 Heroku Slugs 上(通过使用 s3 可以减少编译的应用程序大小,并用云前端 CDN 包装它会提高吞吐量)

于 2014-10-15T07:01:39.610 回答
4

首先,我想解释一下 Amazon S3 是云存储,Cloud Front 是内容交付网络 (CDN)。

因此,您可以使用将文件存储在 S3 上,并可以创建分发以通过 Internet 提供内容。您还可以为特定区域创建分布。

于 2017-11-03T13:26:00.123 回答
1

如果您正在寻找一个全球分布式存储系统来防止区域/区域出现故障,那么 Amazon S3 是一个出色的对象存储平台。它也适用于非事务性和变化的静态/固定内容,例如图片、视频、图像、备份等。希望对您有所帮助!

于 2016-02-17T01:21:42.523 回答