【发布时间】:2020-02-25 03:41:00
【问题描述】:
我在 ecs fargate 的容器上运行 apache webapp,但我需要能够保留某些文件,以便所有用户可以通过所有版本的 webapp 对它们进行任何更改。不幸的是,fargate 对 EFS 的支持正在开发中,所以我需要一个持久存储解决方案,至少在它可用之前(或者直到该功能的发布日期宣布,所以我只能说我会处理这个问题)。
我尝试从 Fargate 切换到 ec2,因为 EFS 据说与 ec2 兼容,但我无法找到解决“无法放置任务,因为没有容器实例满足其所有要求”的方法。原因:在您的集群中未找到任何容器实例。”错误。我尝试了 AWS ECS Error when running task: No Container Instances were found in your cluster 中的所有解决方案,以及在一些谷歌搜索中可以找到的所有解决方案,但无济于事。
文件的访问方式本质上是:
- 一个php文件调用数据库
- 数据库指向 webapp 上存储应用程序数据的位置
- 数据被读取/写入到 webapp 中的文件
有人知道 ecs fargate 的持久存储解决方案吗?我将如何进行设置?
【问题讨论】:
-
将文件存储在 S3 中而不是本地如何?
-
我对 S3(以及 aws. 和 docker.)不太熟悉,所以我不确定。我可以将文件上传到 S3,并让多个用户读取/写入它们吗?我能否将用户请求从 webapp 重定向到 S3?我将如何设置它?等等
-
这完全取决于您的用例。如果多个用户需要同时读/写,例如Google Docs 类型的协作,它可能需要在内存中。如果您能够一次锁定文件以供一个用户编辑,我可能会将文件保存到 S3 并使用 dynamodb 锁来控制访问。
-
Fargate 是无状态的,就像 Lambda;任何存储都是短暂的。如果可能,您可能希望重新考虑将您的应用程序重新架构为无状态,并能够在 Fargate 上运行。如果它不可能或不实用,您将不得不使用 EFS 可以很好地配合使用的 ECS。使用 EFS 和 ECS-EC2 有很好的文档记录,这里有一个很棒的教程docs.aws.amazon.com/AmazonECS/latest/developerguide/…。
标签: amazon-web-services amazon-ec2 amazon-ecs aws-fargate