因此,我正在开发一个为用户上传的视频提供服务的网站,所有基础设施都在亚马逊上。我正在努力寻找一个好的工作解决方案,这就是我的想法
首先你对此有何看法?是否有更简单的方法来实现相同或更好的目标?
其次我现在的主要问题是将文件传输到S3,我已经尝试过s3fs这样做,但它在大文件传输上有各种奇怪的问题,这让我放弃了s3fs。
响应Fastest / best way copy data between S3 to EC2?某人建议使用EBS卷,但我不确定是否可以安装EBS,然后还可以访问S3上的相同数据。
感谢任何帮助
答案 0 :(得分:4)
为了将文件传输到S3,由于您已经在PHP编码,因此您应该查看Amazon提供的PHP库以与其服务进行交互。使用基于文件系统的方法(它安装到您的实例)并不是最好的,因为与S3的连接比您希望的更频繁地关闭。我知道,我试过了。
但一般来说,你在实例上“捕获”文件然后将其推送到S3的方法是合理的。在到达S3之前,您需要小心不要保存对数据库中文件的引用,否则,如果您选择在Load Balancer后面运行多个实例,则会出现可伸缩性问题。
关于转码,亚马逊转码服务很新,所以我没有相关经验,但我强烈推荐使用Zencoder。顺便说一句,它在AWS上运行并且快速且便宜,并且按照您希望AET工作的方式运行:您给它一个S3文件,并告诉它在哪里编写转码变体,缩略图等。
希望这有帮助。
答案 1 :(得分:1)
您不需要EBS。
您可以将上传的数据写入EC2临时驱动器,然后将其推送到S3,或者您可以将数据直接流式传输到S3。
如果你采用短暂的驱动方法,那么如果你的virt死了你就会面临数据丢失的风险,但总的来说,更少的移动部件的简单性可能是值得的。
直接将数据流式传输到S3是我想要做的。它删除了写入磁盘(无论是本地磁盘还是EBS)的整个步骤,从而简化了应用程序。
如果我要设计这样的系统,那就是: