如何在於 Amazon EC2 上執行的 ECS 容器或任務上掛載 EFS 檔案系統?

2 分的閱讀內容
0

我想將 Amazon Elastic File System (Amazon EFS) 掛載到 Amazon Elastic Container Service (Amazon ECS) 容器或任務上。容器或任務使用 Amazon Elastic Compute Cloud (Amazon EC2) 啟動類型。

解決方法

建立任務定義,並在該定義的磁碟區任務定義參數中提供檔案系統 ID。如此一來,EFS 檔案系統就能自動掛載至您於任務定義中指定的任務。

網路需求

請確認您擁有以下組態:

  • Amazon EC2 啟動類型的 EFS 檔案系統和 ECS 叢集必須位於同一個虛擬私有雲端 (VPC)。
  • EFS 檔案系統的安全群組必須允許 2049 連接埠上來自 ECS 容器執行個體和 ECS 任務的輸入連線。
  • ECS 執行個體或任務的安全群組必須允許 2049 連接埠上連往 EFS 檔案系統安全群組的輸出連線。

建立任務定義

請完成下列步驟:

  1. 開啟 Amazon ECS 主控台,然後依序選擇任務定義建立新任務定義
  2. 針對啟動類型,選擇 EC2,然後選擇下一步
  3. 設定任務和容器定義中,請輸入任務定義名稱。
  4. 磁碟區區段中,選擇新增磁碟區
  5. 請輸入磁碟區名稱,然後從磁碟區類型下拉式清單中選擇 EFS
  6. 針對檔案系統 ID,請選取要與 ECS 任務一起使用的檔案系統 ID。
  7. (選用) 請指定根目錄傳輸中加密EFS IAM 授權。如果您沒有指定任何內容,則會使用預設的根目錄 "/"。
  8. 選擇新增
  9. 建立容器時,在容器定義下,請選擇新增容器以使用新的磁碟區。然後,在儲存和日誌下的掛載點子區段中,選取該磁碟區。
  10. 針對容器路徑,請選擇應用程式在容器中的目錄路徑,然後選擇新增
  11. 填寫任務定義精靈中的必要欄位,然後選擇建立
    在下列範例中,任務定義會建立名為 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 官方已更新 10 個月前