如何增加 Fargate 上的 Amazon ECS 容器的磁盘空间?

上次更新时间:2022 年 1 月 29 日

我想为 AWS Fargate 上的 Amazon Elastic Container Service(Amazon ECS)容器增加磁盘空间。

简短描述

默认情况下,使用平台版本 1.40 启动的 Fargate 任务包含 20 GiB 的任务存储大小作为单个临时卷。如果您需要超过 20 GiB 的存储空间,可以使用两个选项配置更多存储空间:

  • 使用 Fargate 的短暂存储选项可存储高达 200 GiB 的存储空间。短暂存储是非持久性存储。
  • 使用 Amazon Elastic File System(Amazon EFS)卷进行可扩展的文件存储。Amazon EFS 卷提供持久性存储。

重要提示:在创建 Amazon EFS 卷时,请使用分配给您的 Fargate 服务的 Amazon Virtual Private Cloud(Amazon VPC)和子网。

解决方法

配置短暂存储

  1. 访问 Amazon ECS 控制台
  2. 创建新的任务定义或编辑现有任务定义
  3. Volumes(卷)项下,选择 Configure via JSON(通过 JSON 配置)。
  4. 在任务定义 JSON 中,定义一个 ephemeralStorage 对象。sizeInGiB 必须是介于 21200 之间的整数。例如:
"ephemeralStorage": {    "sizeInGiB": integer}

注意:将整数替换为所需的 GiB 存储数量。有关配置短暂存储的更多示例,请参阅绑定挂载示例

使用 Amazon EFS 卷配置存储

  1. 为您的 Amazon EFS 挂载目标创建一个安全组。然后,添加入站规则以接受来自源任务安全组的端口 2049 上的 NFS 流量。
  2. 创建 Amazon EFS 文件系统,然后将步骤 1 中的安全组附加到挂载目标。
    注意:默认情况下,在给定 AWS 区域的每个可用区中配置挂载目标。选择 Fargate 服务的 VPC 子网所在的所有可用区。
  3. 记下您的文件系统的文件系统 ID(例如 fs-12345678)。
  4. 创建更新任务定义,从而为具有 Amazon EFS 文件系统的 Amazon ECS 任务配置。例如:
>"volumes": [ 
   {
      "name": "efs-test-volume",
      "efsVolumeConfiguration": {
           "fileSystemId": "fs-12345678", 
           "transitEncryption": "ENABLED" 
      }
   } 
 ]

注意:fs-12345678 替换为您的文件系统 ID。

  • 使用容器定义部分为容器内的卷创建挂载点。例如:
  • "containerDefinitions": [ 
    {
       "memory": 128, 
        "portMappings": [ 
           {
              "hostPort": 80, 
              "containerPort": 80, 
               "protocol": "tcp" 
            } 
         ], 
         "essential": true, 
         "mountPoints": [ 
            {
            "containerPath": "/mount/path/inside/container", 
            "sourceVolume": "efs-test-volume" 
            } 
          ], 
          "name": "nginx", 
          "image": "nginx" 
       }
    ]
    注意: containerPath 是您挂载卷所在的容器内的路径。 sourceVolume 应该与步骤 4 中定义的卷的名称相同。
  • 使用更新的任务定义运行任务。注意:对于与服务关联的任务,请通过选择新的任务定义修订来更新服务。

  • 这篇文章对您有帮助吗?


    您是否需要账单或技术支持?