【问题标题】:Using AWS S3 alone or S3 & Cloudfront for video download单独使用 AWS S3 或 S3 和 Cloudfront 进行视频下载
【发布时间】:2016-08-18 14:02:44
【问题描述】:

我构建了一个 Ruby on Rails 应用程序,其核心涉及用户视频

有一些具有管理员权限的用户可以上传视频(每个大约 5 分钟,高清)。网站上的其他用户只能观看视频;他们自己没有上传的能力。我预计每周将上传大约 20 个视频。观看视频的用户不超过 2 或 3000 人(全部在北美)。

我有两个 S3 Bucket,我们称它们为 Bucket X 和 Bucket Y。 我已经内置了 Carrierwave 来将视频上传到 S3 Bucket X,并内置了 AWS Elastic Transcoder 来从 Bucket X 中获取视频,将其转码为 Mp4,然后将其放置在 Bucket Y 中。

在 Bucket Y 中生成的视频文件正是我想要的:Web 优化、压缩的 MP4 格式。如有必要,我可以直接从 Bucket Y 中的 url 提供视频。

不过,与此同时,我正在使用 AWS Cloudfront CDN 将资产和用户上传的个人资料图片快速交付给每个用户。

对于像我这样的网站,每周上传大约 20 个 5 分钟长的视频,使用 Cloudfront 是否有意义?

我遇到过像 thisthat 这样的文章,这些文章表明 Cloudfront 适合投放视频。我也遇到过其他人,比如this stack overflow answer by Wayne Koorts,这表明 Cloudfront 主要只在交付较小的文件方面具有优势,而且可能成本很高。

考虑到每周只会上传大约 20 个视频,其余都是 get 请求,我不关心使用 Cloudfront 的价格。 但是,在这种情况下,Cloudfront 是否值得使用?如果我们谈论的是 5 分钟长的视频,它真的会加快加载时间吗?

感谢任何帮助。非常感谢您。

【问题讨论】:

  • 您的应用程序是在全球范围内服务还是仅限于某些地理或国家?
  • 只有美国。但是我认为 Cloudfront 在美国有多个地点,这会有所作为,对吧?与单个 S3 存储桶相反。
  • 是的@Parker CloudFront 在美国有几个位置,是的,将 CloudFront 与 S3 一起使用通常比不使用它更有意义,即使您不期望有很多流量或很多缓存命中......事实上,几乎是不费吹灰之力。如果它与 S3 一起使用,它将与 CloudFront+S3 一起使用,但需要注意的是 CloudFront 的下载文件大小限制为 20 GB,而 S3 支持高达 5 TB 的文件。由于 CloudFront 边缘和 S3 之间的网络经过优化,除非浏览器在地理位置上靠近存储桶,否则未缓存的内容通常仍会通过 CloudFront 更快地下载。

标签: amazon-web-services amazon-s3 html5-video amazon-cloudfront aws-sdk


【解决方案1】:

这太宽泛了,但正如您所说,最初您的视频将只为北美的用户提供,目前还没有理由使用 CloudFront。等到您需要为不同的地理位置提供服务时,再将其包含在您的架构中。

请记住 AWS says,CloudFront 的主要功能是“通过使用世界各地的边缘站点网络为请求提供服务,以低延迟和高数据传输率分发内容。”

【讨论】:

  • 抱歉,我试图避免过于宽泛。我的问题基本上归结为 Cloudfront 是否值得提供 5 分钟长的视频。
  • CloudFront 绝对值得为您的 5 分钟视频提供服务如果您遇到的用户服务速度非常低。您希望使用 CloudFront 以较低的延迟向最终用户交付内容。我的建议:等到您的业务真正需要它,否则您会产生一些不必要的优化成本。 :)
  • 我的荣幸。随时:)
  • 请注意,使用 CloudFront “Price Class 100”(基本上是美国+加拿大+欧洲),这似乎完全适合您的目标受众,您可能会看到延迟减少(并且,因此,增加了最大理论吞吐量!)并降低了成本:S3(到互联网)的数据传输成本在前 1GB 和高达 10TB 之后为 0.09 美元/GB;另一方面,对于 CloudFront,它是 0.085 美元/GB,因此节省了大约 6%。 CloudFront 上的请求成本比 S3 贵一点,但由于您拥有更大的视频,因此您更有可能花费 [...]
  • [...] 更多关于数据传输而不是请求数量(对于小文件,推理会有所不同)。如果您认为额外的复杂性不是那么大,我肯定会使用 CF!
【解决方案2】:

通过在AWS Monthly Calculator 中输入适当的数字,您可以大致了解 CloudFront 与 S3 的成本。请记住,无论如何您都可能将视频存储在 S3 中,可能最重要的是分别来自每个服务的“数据传出”。

【讨论】:

  • 感谢您的提示,我会检查一下。我不太关心成本。您是否知道从 Cloudfront 加载视频的速度比直接从 S3 加载的速度快多少?考虑到我们谈论的是 5 分钟长的视频,而不是图像和样式表,它们甚至会加载得更快吗?
  • @Parker 抱歉,我没有任何数据。我想如果它是一个流应用程序,那么从请求到第一帧可见的加载时间很重要,剩下的 5 分钟将是 5 分钟。更重要的是,您的用户的带宽可能会设置限制。我建议你做一个 PoC(在你提供的链接中有一些很好的建议),看看什么最有效。
【解决方案3】:

如果成本对您来说不是问题,那么即使您的应用仅限于美国,使用 Cloud Front 也将是有益的。与直接从 S3 相比,如果您使用 Cloud Front,视频加载速度肯定会更快。由于 Cloud Front 将视频缓存到边缘位置,因此可以提高视频的加载速度。

【讨论】:

    猜你喜欢
    • 2017-07-24
    • 2014-10-14
    • 2011-11-19
    • 2021-01-29
    • 2011-09-18
    • 2017-04-24
    • 1970-01-01
    • 2018-08-26
    • 2019-08-22
    相关资源
    最近更新 更多