首页 > 解决方案 > 即时将文件从 S3 移动到 AWS EFS

问题描述

我正在构建一个用户可以上传图像的应用程序,为此我使用 S3 作为文件存储。

在应用程序的其他区域,有一些进程部署在 EC2 上,需要使用上传的图像。这个过程需要多次图像(它会生成一些报告)并且它是多个 EC2 的一部分 - 使用弹性 beanstalk。

该过程不需要一次所有图像,但需要它获得的每个作业的某个子集(取决于它获得的参数)。

每个 ec2 实例都在做一项独立的工作——它们不会在它们之间共享文件,但它们可能需要相同的上传图像。

我现在正在做的是将所有图像从 s3 下载到 EC2 机器,因为它需要本地文件。我读过 EFS 可以安装到 EC2 上,然后我可以像访问本地存储一样访问它。

我没有找到任何使用 nodejs(或其他语言)直接上传到 EFS 的示例,但我找到了一种将文件从 S3 传输到 EFS 的方法 - “DataSync”。 https://docs.aws.amazon.com/efs/latest/ug/transfer-data-to-efs.html

所以我有3个问题:

  1. 我不能从我的应用程序直接上传到 EFS 是真的吗?(nodesjs + 快递)
  2. 将文件移动到 EFS 后,我能否像在 ec2 的本地存储中一样使用它?
  3. 始终将文件从 s3 移动到 efs 是一个好主意,还是对我描述的问题有其他解决方案?

标签: node.jsamazon-web-servicesamazon-s3storageamazon-efs

解决方案


文件上传到 s3 时触发 Lambda 调用 ECS 任务。ECS 任务启动并挂载 EFS 卷并将文件从 s3 复制到 EFS。对于 Lambda 超时的非常大的文件,这不会遇到问题。我没有代码,但如果有人已经对此解决方案进行了编码,我会很感兴趣。


推荐阅读