何时使用Amazon Cloudfront或S3


232

是否有比s3或其他方法更适合Amazon Cloudfront的用例?我试图通过示例来理解这两个之间的区别。


1
如果您要提供文件,则只有CloudFront允许您在自定义域上使用HTTPS。那为我们密封了。
mlissner,

Answers:


373

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

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

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

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

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

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

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

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


10
谢谢,很好的答案。
卡莫

3
由于CloudFront不完全支持CORS,因此网络字体有所不同。它在S3响应中缓存标头,但是为了获得完整的CORS支持,某些标头应根据发出请求的服务器(来源)而有所不同。解决方法:forums.aws.amazon.com/message.jspa?messageID=422504#422532
Cymen 2014年

11
为了保持更新,CloudFront的现在支持CORS:aws.amazon.com/about-aws/whats-new/2014/06/26/...
sergiopantoja

请注意,Cloudfront很快将内容逐出。将最大年龄设置为一天以上并不意味着您的内容如果没有被触摸61分钟就不会被驱逐。用户专用内容使用不多,因为这很少访问。
BobB

53

CloudFront和S3 Bucket不同。用外行的话来说:CloudFront使您可以通过边缘位置的Content Delivery Network(CDN)加速Web内容的内容传递,而S3存储桶是您存储实际文件的位置。CloudFront来源不一定来自S3,而是为了更轻松地可视化S3与CloudFront的集成: 在此处输入图片说明


谢谢!该图清楚地表明了差异。
Rajan Sharma

28

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

这样一来,您就不必像使用Amazon S3那样重复资产。

但是,文件过期后,CloudFront将再次从您的活动站点中获取它(需要付费)。因此,云前沿最适合经常访问的文件,而对于不经常访问的文件则更是如此。

设置apache文件过期的一种方法是.htaccess。例如

<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>

20

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

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

CSS,图片,JavaScript,视频等...

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

您可以通过以下示例更好地理解它:

例如,您的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以获得更好的延迟和流量控制。


1
这是最好的答案
若昂·奥特罗

14

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


2
有了新的证书管理器,它甚至变得非常容易!
phatmann '16

7

Amazon S3是一项简单存储服务,可以使用大量信息,例如视频,图像,PDF等。

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

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

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

使用CloudFront进行正确使用的一些优势:

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

其他可能的用例:

  1. 即时串流
  2. 赌博
  3. 网站加速

4

这里错过的一个方面是:

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

  • Cloudfront CDN用于在地理上分布的多个服务器(CSS,JS)之间分布内容

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

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

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

例:在Heroku Slugs上(通过使用s3可以减小复杂的应用程序大小,并用云前CDN封装它可以提高吞吐量)


2

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

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



1

如果您正在寻找全球分布的存储系统来防止区域/区域崩溃,那么Amazon S3是一个很棒的对象存储平台。对于非事务性和固定的静态/固定内容(例如图片,视频,图像,备份等),它也非常有用。希望对您有所帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.