【问题标题】:Best way to host user uploaded videos on AWS在 AWS 上托管用户上传视频的最佳方式
【发布时间】:2013-02-16 12:29:05
【问题描述】:

所以我正在开发一个为用户上传视频提供服务的网站,所有基础设施都在亚马逊上。我正在尝试找到一个好的工作解决方案,这就是我的想法

  1. 有一个 EC2 Instant 处理文件上传到它的 EBS 卷, 使用 PHP
  2. 将视频文件传输到 S3
  3. 让 Amazon Elastic Transcoder 将视频文件从 S3 转换为适当的格式,然后将它们存储回 S3
  4. 使用 CloudFront 将转换后的视频文件提供给公众

首先,您对此有何看法?有没有更简单的方法可以达到相同或更好的效果?

其次,我现在的主要问题是将文件传输到S3,我尝试过s3fs来做这件事,但是它在传输大文件时出现了各种奇怪的问题,这让我放弃了s3fs。

在回复Fastest / best way copy data between S3 to EC2? 时,有人建议使用 EBS 卷,但我不确定是否可以挂载 EBS,然后还可以访问 S3 上的相同数据。

感谢任何帮助

【问题讨论】:

  • 我已经将 CloudFront 用于小/低容量的东西,效果很好。

标签: amazon-s3 amazon-cloudfront amazon-ebs


【解决方案1】:

为了将文件传输到 S3,由于您已经在使用 PHP 进行编码,因此您应该查看 Amazon 提供的 PHP 库以连接到他们的服务。使用基于文件系统的方法(将其安装到您的实例)并不是最好的方法,因为与 S3 的连接断开的频率比您希望的要高。我知道,我试过了。

但通常,您在实例上“捕获”文件然后将其推送到 S3 的方法是合理的。但是,您需要注意不要在数据库中保存对文件的引用,直到它到达 S3,否则如果您选择在负载均衡器后面运行多个实例,您将遇到可伸缩性问题。

关于转码,Amazon Transcoding 服务很新,所以我没有经验,但我强烈推荐 Zencoder。顺便说一句,它在 AWS 上运行,既快速又便宜,并且按照您期望 AET 工作的方式进行:您给它一个 S3 文件,然后告诉它在哪里编写转码变体、缩略图等。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您不需要 EBS。

    您可以将上传的数据写入 EC2 临时驱动器,然后将其推送到 S3,也可以将数据直接流式传输到 S3。

    如果您使用临时驱动器方法,如果您的 virt 死了,您可能会丢失数据,但总体而言,更少的移动部件的简单性可能是值得的。

    我会尝试将数据直接流式传输到 S3。它消除了写入磁盘(无论是本地还是 EBS)的整个步骤,从而简化了您的应用程序。

    如果我要设计这样的系统,它会是:

    1. 列表项
    2. Elastic Beanstalk 扩展前端
    3. 数据由您的应用程序直接流式传输到 S3
    4. RDS 或 DynamoDB 表跟踪已完成和正在进行的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多