首页 > 解决方案 > 适用于 aws fargate 的持久存储解决方案

问题描述

我在 ecs fargate 的容器上运行 apache webapp,但我需要能够持久化某些文件,以便所有用户可以通过所有版本的 webapp 对它们进行任何更改。不幸的是,fargate 对 EFS 的支持正在开发中,所以我需要一个持久存储解决方案,至少在它可用之前(或者直到该功能的发布日期宣布,所以我只能说我会处理这个问题)。

我尝试从 fargate 切换到 ec2,因为 EFS 据说与 ec2 兼容,但我无法找到解决“无法放置任务,因为没有容器实例满足其所有要求。原因:否在您的集群中找到了容器实例。” 错误。我在运行任务时尝试了 AWS ECS 错误中的所有解决方案:No Container Instances were found in your cluster ,以及我在一些谷歌搜索中可以找到的所有内容,但无济于事。

访问文件的方式本质上是:

  1. 一个php文件调用数据库
  2. database 指向 webapp 上存储应用程序数据的位置
  3. 数据被读/写到 webapp 中的文件

有人知道 ecs fargate 的持久存储解决方案吗?我将如何进行设置?

标签: amazon-web-servicesamazon-ec2amazon-ecsaws-fargate

解决方案


编辑:Fargate 现在支持 EFS 作为持久存储。因此,您不需要使用 S3FS 之类的东西或任何其他 hacky 解决方案:

https://aws.amazon.com/about-aws/whats-new/2020/04/amazon-ecs-aws-fargate-support-amazon-efs-filesystems-generally-available/


原始答案(不再相关):

Fargate 目前不支持持久存储,因为您无权访问底层基础架构,因此无法挂载 EFS 卷。而且它可能不会很快发生。

但一种解决方案是使用S3FS,它将S3存储桶作为文件系统直接安装在容器上,因此您无需访问基础架构。

你可以在这里找到它:https ://github.com/s3fs-fuse/s3fs-fuse

该项目很受欢迎并且维护良好。它应该可以工作,但请记住,它是一个hacky解决方案。它不是一个完全符合 POSIX 的解决方案,但它可以用于存储简单文件。与本地文件系统相比,性能也会下降。如果您要提供存储的文件,最好在顶部添加一个CDN ,并优化缓存。


推荐阅读