ChatGPT解决这个技术问题 Extra ChatGPT

何时使用 Amazon Cloudfront 或 S3

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

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

S
Simon East

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

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

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

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

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

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

CloudFront also supports CORS 截至 2014 年(感谢 sergiopantoja)。

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


由于 CloudFront 不完全支持 CORS,因此 Web 字体存在差异。它在 S3 响应中缓存标头,但为了完全支持 CORS,某些标头应根据请求服务器(来源)而有所不同。解决方法:forums.aws.amazon.com/message.jspa?messageID=422504#422532
为了保持更新,CloudFront 现在支持 CORS:aws.amazon.com/about-aws/whats-new/2014/06/26/…
请注意,Cloudfront 会非常快速地驱逐内容。将 max-age 设置为超过一天并不意味着您的内容在 61 分钟内没有被触摸时不会被驱逐。用户特定的内容没有多大用处,因为这相当于不经常访问。
S3 还允许跨区域复制,所以你不能使用它吗?或者是不同区域的 CDN 剃除不同缓存内容的想法(即,英国最流行的视频可能与印度不同),这比在 S3 中完全复制要好?
m
mel3kings

https://i.stack.imgur.com/eEDGb.png


谢谢!该图清楚地显示了差异。
将 CloudFront 视为其获取源的动态前哨。
P
Patrick R

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


这是最好的答案
A
Anuj Kumar

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

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

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

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

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

r
rgubby

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


有了新的证书管理器,它变得更加简单!
S
Simon East

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

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

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

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

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

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

其他可能的用例:

直播游戏网站加速


假设 s3 存储了 10 亿张图像。有多少会被缓存在云端,这个缓存是如何管理的,不同用户的缓存是否不同?
i
idmean

这里遗漏的一个方面是:

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

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

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

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

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

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


A
Arun Vinoth - MVP

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

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


J
JStorage

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