Amazon Elastic File System (Amazon EFS) 提供简单、可扩展的文件存储,用于您的 Amazon ECS 任务。借助 Amazon EFS,存储容量具有弹性,可在您添加和删除文件时自动增长和缩减。您的应用程序可以在需要时拥有所需的存储空间。

您可以将 Amazon EFS 文件系统与 Amazon ECS 结合使用,以访问您的 Amazon ECS 任务队列中的文件系统数据。这样一来,您的任务就可以访问相同的持久存储,无论它们所在的基础设施或容器实例如何。当您在 Amazon ECS 任务定义中引用您的 Amazon EFS 文件系统和容器挂载点时,Amazon ECS 会负责将文件系统挂载到您的容器中。以下部分可帮助您开始将 Amazon EFS 与 Amazon ECS 结合使用。

使用 EC2 和 Fargate 启动类型的任务支持此功能,但是本教程将使用使用 Fargate 启动类型的 Amazon ECS 任务。本教程也旨在逐步进行,但是如果您已经在您的帐户上创建了其中一些资源,那么您可以跳过一些步骤。

以下解决方案适用于 Fargate 平台版本 1.4.0 或更高版本,它具有您可以在 Amazon ECS 中的任务和容器级别定义的持久存储。 Fargate 平台版本 1.3.0 或更早版本不支持使用 Amazon EFS 的持久存储。

Amazon EFS 可能并非在所有区域都可用。有关哪些区域支持 Amazon EFS 的更多信息,请参阅 AWS 一般参考中的 Amazon Elastic File System 终端节点和配额。

在完成这些步骤之前,您必须具备以下条件:

  • Amazon ECS 集群

  • 亚马逊虚拟私有云 (Amazon VPC)

  • Amazon EFS 文件系统

创建和配置 Amazon EFS 文件系统

1.创建 Amazon EFS 文件系统,然后记下 EFS ID 和安全组 ID。

注意:您的 Amazon EFS 文件系统、Amazon ECS 集群和 Fargate 任务必须都在同一个 VPC 中。

  1. 要允许来自与 Fargate 任务或服务关联的安全组的端口 2049(网络文件系统或 NFS)上的入站连接,编辑 EFS 文件系统的安全组规则。

  2. 更新您的 Amazon ECS 服务的安全组,以允许端口 2049 上的出站连接到您的 Amazon EFS 文件系统的安全组。

创建任务定义

  1. 打开Amazon ECS 控制台。

  2. 从导航窗格中,选择任务定义,然后选择创建新任务定义。

  3. 在选择启动类型兼容性部分,选择 FARGATE,然后选择下一步。

  4. 在配置任务和容器定义部分,对于任务定义名称,输入任务定义的名称。

  5. 在卷部分,选择添加卷。

  6. 对于名称,输入卷的名称。

  7. 对于卷类型,输入 EFS。

  8. 对于文件系统 ID,输入您的 Amazon EFS 文件系统的 ID。

注意:您可以为根目录、传输中的加密和 EFS IAM 授权指定自定义选项。或者,您可以接受默认值,其中“/”是根目录。

  1. 选择添加。

任务定义中的卷部分

  1. 在容器定义部分,选择添加容器。

  2. 在 STORAGE AND LOGGING 部分的 Mount points 子部分中,选择您在步骤 5 中为 Source volume 创建的卷。

  3. 对于容器路径,选择您的容器路径。

在任务定义中设置挂载点

  1. (可选)在环境部分,对于入口点,输入您的入口点。

  2. 对于命令,输入 [df ,-h] 命令以显示已安装的文件系统。

注意:您可以使用入口点和命令来测试您的 Amazon EFS 文件系统是否已成功挂载。默认情况下,df -h 命令执行成功后容器会退出。

  1. 选择添加。

  2. 填写任务定义向导中的剩余字段,然后选择创建。

运行 Fargate 任务并检查您的任务日志

  1. 使用您之前创建的任务定义运行 Fargate 任务。

重要提示:确保在Fargate 平台版本 1.4.0上运行您的任务。

  1. 要验证您的 Amazon EFS 文件系统是否已成功挂载到您的 Fargate 容器,检查您的任务日志。

df-h 的输出类似于以下内容:

来自 cloudwatch 的输出截图

参考:

  • 如何在 Fargate 上运行的 Amazon ECS 容器或任务上挂载 Amazon EFS 文件系统?

  • 安装问题疑难解答

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐