跳至內容

如何增加 AWS Fargate 上 Amazon ECS 容器的磁碟空間?

2 分的閱讀內容
0

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

簡短描述

預設情況下,使用平台版本 1.40 啟動的 Fargate 任務包含一個大小為 20 GiB 的任務儲存空間,作為單一暫時性磁碟區。如果您需要超過 20 GiB 的儲存空間,請使用以下其中一種選項來設定更多儲存空間:

**重要:**建立 Amazon EFS 磁碟區時,請使用指派給 Fargate 服務的相同 Amazon Virtual Private Cloud (Amazon VPC) 和子網路。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

若要為 Fargate 上的 Amazon ECS 容器增加磁碟空間,請根據您的使用案例完成相關任務。

設定暫時性儲存空間

請完成下列步驟:

  1. 建立更新任務定義,以設定任務的暫時性儲存空間。例如:

    "containerDefinitions": [ {
       "memory": 128,
         "essential": true,  
          "name": "nginx",
          "image": "nginx"
       }
    ]
    "ephemeralStorage": {
        "sizeInGiB": 30
        }
  2. 使用更新後的任務定義來執行任務。
    **注意:**對於與服務關聯的任務,選取新的任務定義修訂來更新服務。

如需詳細資訊,請參閱將繫結掛接與 Amazon ECS 結合使用

使用 Amazon EFS 磁碟區設定儲存空間

請完成下列步驟:

  1. 為您的 Amazon EFS 掛接目標建立一個安全群組。然後,新增傳入規則以接受來自來源任務安全群組,連接埠 2049 上的 NFS 流量。
  2. 建立 Amazon EFS 檔案系統,然後將安全群組附加到您的掛接目標。
    **注意:**預設情況下,系統會在指定 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 是您磁碟區的名稱。
  6. 使用更新後的任務定義來執行該任務。
    **注意:**對於與服務關聯的任務,選取新的任務定義修訂來更新服務。

將 EBS 磁碟區附加到 Fargate

請完成下列步驟:

  1. 建立或更新任務定義,以設定在啟動時要設定的 EBS 磁碟區。使用設定為 true 的 "configuredAtLaunch" 選項。例如:

    "containerDefinitions": [
            {
                "name": "nginx",
                "image": "public.ecr.aws/nginx/nginx:latest",
                "networkMode": "awsvpc",
                "portMappings": [
                    {
                        "name": "nginx-80-tcp",
                        "containerPort": 80,
                        "hostPort": 80,
                        "protocol": "tcp",
                        "appProtocol": "http"
                    }
                ],
                "mountPoints": [
                    {
                        "sourceVolume": "myEBSVolume",
                        "containerPath": "/mount/ebs",
                        "readOnly": true
                        }
                    ]
                }
            ],
            "volumes": [
            {
                "name": "myEBSVolume",
                "configuredAtLaunch": true
            }
        ]
  2. 啟動獨立任務。或者,將任務作為服務的一部分啟動,並將磁碟區組態作為 JSON 的一部分。
    獨立任務 JSON 範例:

    {
      "cluster": "mycluster",
      "taskDefinition": "mytaskdef",
      "volumeConfigurations": [
        {
          "name": "datadir",
          "managedEBSVolume": {
            "volumeType": "gp3",
            "sizeInGiB": 100,
            "roleArn": "arn:aws:iam:1111222333:role/ecsInfrastructureRole",
            "encrypted": true,
            "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
          }
        }
      ]
    }

    **注意:**如上例所示,啟動任務不需要快照。
    服務 JSON 範例:

    {
        "cluster": "mycluster",
        "taskDefinition": "mytaskdef",
        "serviceName": "mysvc",
        "desiredCount": 2,
        "volumeConfigurations": [
            {
                "name": "myEbsVolume",
                "managedEBSVolume": {
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "snapshotId": "snap-12345"
                }
            }
        ]
    }

    **注意:**將 roleArn 替換為您的帳戶 ecsInfrastructureRole。將 snapshotId 替換為您要從中建立磁碟區的快照 ID。

AWS 官方已更新 2 年前