问题描述
我正在构建一个用户可以上传图像的应用程序,为此,我正在使用S3作为文件存储。
在应用程序的其他区域,EC2上部署了一些过程,需要使用上载的图像。 此过程需要多次图像(并生成一些报告),并且是多个EC2的一部分-使用弹性beantalk。
该过程不需要一次所有的图像,但是它获得的每个工作都需要它的一些子集(取决于它获得的参数)。
每个ec2实例都在执行独立的工作-它们之间没有共享文件,但是可能需要相同的上传图像。
我现在要做的是将所有图像从s3下载到EC2计算机,因为它需要本地文件。 我已经读到可以将EFS挂载到EC2,然后可以像访问本地存储一样对其进行访问。
我没有找到任何使用nodejs(或其他lang)直接上传到EFS的示例,但是我找到了一种将文件从S3传输到EFS的方法-“ DataSync”。 https://docs.aws.amazon.com/efs/latest/ug/transfer-data-to-efs.html
所以我对此有3个问题:
- 确实不能从应用程序直接上传到EFS吗? (nodesjs + express)
- 将文件移到EFS之后,是否可以像在ec2的本地存储中一样使用它?
- 将文件始终从s3移到efs是个好主意,还是我描述的问题有其他解决方案?
解决方法
对于这种具体情况,我们使用 https://github.com/kahing/goofys
它非常可靠,此外,它还能够将 S3 存储桶作为文件夹安装在任何设备上 - Windows、Mac 以及 Linux。
也可以在 AWS 云“边界”之外工作 - 非常适合开发人员的笔记本电脑。
缺点是它 /not/ 在 Lambda 上下文中工作,但你不能拥有一切!