在AWS上托管用户上传视频的最佳方法

Yas*_*984 5 amazon-s3 amazon-ebs amazon-cloudfront

因此,我正在一个网站上提供用户上传的视频,所有基础架构都在亚马逊上。我正在寻找一个好的工作解决方案,这就是我的想法

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

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

其次,我现在的主要问题是将文件传输到S3,我已经尝试过s3fs来做到这一点,但是在大型文件传输中却遇到了各种奇怪的问题,这使我放弃了s3fs。

为了响应最快/最佳方式,将数据从S3复制到EC2?有人建议使用EBS卷,但是我不确定是否可以挂载EBS,然后也可以访问S3上的相同数据。

任何帮助表示赞赏

tom*_*omo 4

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

但一般来说,“捕获”实例上的文件然后将其推送到 S3 的方法是合理的。但是,您需要小心,在文件到达 S3 之前不要在数据库中保存对该文件的引用,否则,如果您选择在负载均衡器后面运行多个实例,则会遇到可扩展性问题。

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

希望这可以帮助。