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

上次更新日期:2020 年 12 月 17 日

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

简短描述

默认情况下,使用平台版本 1.40 启动的 Fargate 任务包含 20GB 的任务存储大小作为单个临时卷。使用 Fargate 启动类型的任务包括 Amazon Elastic File System (Amazon EFS) 文件系统对平台版本 1.4.0 或更高版本的支持。有关更多信息,请参阅可用的 AWS Fargate 平台版本

如果底层容器主机用尽了磁盘存储空间,您会看到“设备上没有剩余空间”错误消息。这意味着,在容器内运行的应用程序工作负载需要大型存储或持久存储来处理大型数据集和文件。您可以通过集成 Fargate 任务与 Amazon EFS 卷来解决此错误。

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

解决方法

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。

5.    使用容器定义部分为容器内的卷创建挂载点。例如:

"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 中定义的卷的名称相同。

6.    使用更新的任务定义运行任务。

注意:对于与服务关联的任务,请通过选择新的任务定义修订来更新服务。</p


这篇文章对您有帮助吗?


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