我正在构建一个用户可以上传图像的应用程序,为此我使用S3作为文件存储。
在应用程序的其他区域中,EC2上部署了一些需要使用上传的映像的进程。这个过程需要图像多次(它生成一些报告),它是多个EC2的一部分-使用弹性豆茎。
该过程并不需要一次处理所有图像,而是需要在每个任务中处理其中的某个子集(取决于所获得的参数)。
每个ec2示例都在做一个独立的工作-它们之间不共享文件,但它们可能需要相同的上传图像。
我现在要做的是从s3下载所有的镜像到EC2机器上,因为它需要本地的文件。我已经读到EFS可以挂载到EC2,然后我可以像访问本地存储一样访问它。
我没有找到任何使用nodejs(或其他lang)直接上传到EFS的例子,但我找到了一种将文件从S3传输到EFS的方法-“DataSync”。https://docs.aws.amazon.com/efs/latest/ug/transfer-data-to-efs.html
所以我有三个问题:
1.我不能从我的应用程序直接上传到EFS是真的吗?(nodesjs + express)
1.在我将文件移动到EFS之后,我能像在ec2的本地存储中一样使用它吗?
1.将文件从s3一直移动到efs是个好主意吗?或者我描述的问题有其他解决方案?
2条答案
按热度按时间flmtquvp1#
对于这种情况,我们使用https://github.com/kahing/goofys
它非常可靠,此外,还提供了将S3存储桶作为文件夹安装在任何设备上的能力- Windows,Mac当然还有Linux。
在AWS云“边界”之外工作-非常适合开发人员笔记本电脑。
缺点是它在Lambda上下文中不工作,但你不能拥有一切!
slsn1g292#
当文件上传到s3时,触发Lambda调用ECS任务。ECS任务启动并装载EFS卷,并将文件从s3复制到EFS。这不会遇到Lambda超时的超大文件的问题。我没有代码,但如果有人已经编码了这个解决方案,我会很感兴趣。