何时使用Amazon Cloudfront或S3

Kam*_*amo 209 cloud amazon-s3 amazon-ec2 amazon-web-services

是否存在通过s3或其他方式更好地适应亚马逊云端的用例?我试图理解2到例子之间的区别.

eil*_*rra 344

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

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

当最终用户使用此域名请求对象时,它们会自动路由到最近的边缘位置,以便高性能地传送内容.(亚马逊)

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

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

两个S3和CloudFront的允许域别名,然而CloudFront的允许多个别名,这样d1.mystatics.com,d2.mystatics.comd3.mystatics.com可能都指向相同的位置增加了并行下载的能力(这用于通过被推荐谷歌,但在引入SPDY和HTTP/2是不太重要).

截至2014年,CloudFront 还支持CORS(感谢sergiopantoja).

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

  • 为了保持更新,CloudFront现在支持CORS:http://aws.amazon.com/about-aws/whats-new/2014/06/26/amazon-cloudfront-device-detection-geo-targeting-host-header- CORS / (11认同)
  • 谢谢,很好的答案. (10认同)
  • 由于CloudFront不完全支持CORS,因此Web字体存在差异.它在S3响应中缓存标头,但是对于完整的CORS支持,某些标头应根据请求服务器(源)而有所不同.解决方法:https://forums.aws.amazon.com/message.jspa?messageID = 422504#422532 (3认同)

mel*_*ngs 39

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


dwe*_*aus 27

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

与使用Amazon S3时相比,这可以节省您复制资产的时间.

但是,在文件过期后,CloudFront将从您的实际站点再次获取它(按成本).因此,对于经常访问的文件,云前端最佳,对于不经常访问的文件,云前端最少.

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

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


Pat*_*k R 16

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月的当前边缘位置列表: -

美国

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

欧洲

  • 荷兰阿姆斯特丹(2)

  • 爱尔兰都柏林

  • 德国法兰克福(3)

  • 英格兰伦敦(3)

  • 西班牙马德里

  • 法国马赛

  • 米兰,意大利

  • 法国巴黎(2)

  • 瑞典斯德哥尔摩

  • 华沙,波兰

亚洲

  • 印度钦奈

  • 香港(2)

  • 孟买,印度

  • 菲律宾马尼拉

  • 印度新德里

  • 日本大阪

  • 韩国首尔(3)

  • 新加坡(2)

  • 台北,台湾

  • 日本东京(2)

澳大利亚

  • 澳大利亚墨尔本

  • 悉尼,澳大利亚

南美洲

  • 巴西圣保罗

  • 巴西里约热内卢

由此可以得出结论,如果用户受限于来自您托管的S3的同一区域,那么您不需要使用CloudFront,如果在全局级别上增加了用户数,那么您肯定应该使用CloudFront以获得更好的延迟和流量控制.

  • 这是最好的答案 (2认同)

小智 13

使用CloudFront而不是S3的另一种情况是,您可以在CloudFront中使用SSL证书到自定义域,而在S3中则不能.非常好的理由imho!

  • 有了新的证书管理器,一切就变得简单了! (3认同)

小智 7

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

CloudFront是一个内容交付网络,更接近最终用户,用于在最短的时间内在Amazon S3上提供信息.

示例用例是视频点播.

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

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

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

其他可能的用例:

  1. 直播
  2. 赌博
  3. 网站加速


Abs*_*Abs 6

这里遗漏的一个方面是:

在较高的使用级别上,Amazon Cloudfront 的价格也低于 Amazon S3。

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

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

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

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

例如:在 Heroku Slugs 上(可以通过使用 s3 来减小编译后的应用程序大小,并使用云前端 CDN 对其进行包装,从而提高吞吐量)