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

2 分钟阅读
0

我想在 Amazon Elastic Container Service (Amazon ECS) 容器或任务上挂载 Amazon Elastic File System (Amazon EFS)。容器或任务使用 Amazon Elastic Compute Cloud (Amazon EC2) 启动类型。

解决方法

创建任务定义,在卷任务定义参数中提供文件系统 ID。这样,EFS 文件系统就能自动挂载到您在任务定义中指定的任务。

网络要求

确认您已完成如下配置:

  • EFS 文件系统和使用 Amazon EC2 启动类型的 ECS 集群必须位于同一个虚拟私有云 (VPC) 中。
  • EFS 文件系统的安全组必须允许 ECS 容器实例和 ECS 任务通过 2049 端口的入站连接。
  • ECS 实例或任务的安全组必须允许通过 2049 端口向 EFS 文件系统的安全组发送出站连接。

创建任务定义

完成以下步骤:

  1. 打开 Amazon ECS 控制台,然后选择任务定义 (Task Definitions)新建任务定义 (Create new Task Definition)
  2. 对于启动类型 (Launch type),选择 EC2,然后选择下一步 (Next step)
  3. 配置任务和容器定义 (Configure task and container definitions) 中,输入任务定义的名称。
  4. 卷 (Volume) 部分中,选择添加卷 (Add volume)
  5. 输入卷的名称,然后从卷类型 (Volume types) 下拉列表中选择 EFS
  6. 对于文件系统 ID (File system ID),选择要用于 ECS 任务的文件系统的 ID。
  7. (可选)指定根目录 (Root directory)传输中加密 (Encryption in transit)EFS IAM 授权 (EFS IAM authorization)。如果您未指定任何内容,则会使用默认根目录“/”。
  8. 选择添加 (Add)
  9. 创建容器时,在容器定义 (Container definitions) 下,选择添加容器 (Add container) 以使用新添加的卷。然后,在挂载点 (Mount points) 子部分的存储和日志 (Storage and Logging) 下,选择新添加的卷。
  10. 对于容器路径 (Container path),选择应用程序容器中的目录路径,然后选择添加 (Add)
  11. 在任务定义向导中填写必填字段,然后选择创建 (Create)
    在以下示例中,任务定义创建了一个名为 efs-ec2-test 的数据卷。nginx 容器将主机数据卷挂载到 /usr/share/nginx/html 路径上:
{  "containerDefinitions": [
    {
      "memory": 128,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "mountPoints": [
        {
          "containerPath": "/usr/share/nginx/html",
          "sourceVolume": "efs-ec2-test"
        }
      ],
      "name": "nginx",
      "image": "nginx"
    }
  ],
  "volumes": [
    {
      "name": "efs-ec2-test",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-1324abcd",
        "transitEncryption": "ENABLED"
      }
    }
  ],
  "family": "efs-test"
}

**注意:**将 fileSystemidcontainerPath 和其他任务定义参数替换为您自己的值。
在前面的示例中,您可以在文件系统的根目录中创建 index.html 示例文件,内容类似于如下所示:

<html>  <body>
    <h1>You are using an Amazon EFS file system for persistent container storage.</h1>
  </body>
</html>

运行 Amazon ECS 任务

完成以下步骤:

  1. 运行 ECS 任务,请使用任务定义。
  2. 要验证 EFS 文件系统是否已挂载到 ECS 容器上,请使用实例的 IP 地址来访问网站。
AWS 官方
AWS 官方已更新 1 年前