使用主控台為 Amazon ECS 設定 Amazon EFS 檔案系統 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用主控台為 Amazon ECS 設定 Amazon EFS 檔案系統

瞭解如何將 Amazon Elastic File System (Amazon EFS) 檔案系統與 Amazon ECS 搭配使用。

步驟 1:建立 Amazon ECS 叢集。

使用下列步驟來建立 Amazon ECS 叢集。

建立新叢集 (Amazon ECS 主控台)

在開始之前,請指派適當的 IAM 許可。如需詳細資訊,請參閱 Amazon ECS 集群示例

  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. 從導覽列中選取要使用的「區域」。

  3. 在導覽窗格中,選擇叢集

  4. Clusters (叢集) 頁面上,選擇 Create cluster (建立叢集)。

  5. 叢集組態下的叢集名稱中,輸入叢集名稱的 EFS-tutorial

  6. (選用) 若要變更任務和服務啟動所在的 VPC 和子網路,請在 Networking (聯網) 下,執行下列任一操作:

    • 若要移除子網路,請在 Subnets (子網路) 下,對您要移除之每一個子網路選擇 X

    • 若要變更為非 default (預設) VPC,請在 VPC 下,選擇現有的 VPC,然後在 Subnets (子網路) 下選擇各個子網路。

  7. 若要將 Amazon EC2 執行個體新增至叢集,展開 Infrastructure (基礎設施),然後選取 Amazon EC2 執行個體。接下來,設定作為容量提供者的 Auto Scaling 群組:

    1. 若要建立 Auto Scaling 群組,請從 Auto Scaling group (ASG) (Auto Scaling 群組 (ASG)) 中選取 Create new group (建立新群組),然後提供有關該群組的下列詳細資訊:

      • 作業系統/架構中,選擇 Amazon Linux 2。

      • 對於 EC2 instance type (EC2 執行個體類型),選擇 t2.micro

        對於 SSH key pair (SSH 金鑰對),選擇在連線到執行個體時證明您身分的金鑰對。

      • 容量中,輸入 1

  8. 選擇建立

步驟 2:為 Amazon EC2 執行個體和 Amazon EFS 檔案系統建立安全群組

在此步驟中,您將為 Amazon EC2 執行個體建立安全群組,以允許連接埠 80 上的入站網路流量,並為 Amazon EFS 檔案系統建立一個允許從容器執行個體進行入站存取的安全群組。

使用下列選項為 Amazon EC2 執行個體建立安全群組:

  • 安全群組名稱 - 為您的安全群組輸入唯一的名稱。

  • VPC - 選擇您先前為叢集所確認的 VPC。

  • 傳入規則

    • 類型 - HTTP

    • 資源來源 - 0.0.0.0/0

使用下列選項為 Amazon EFS 檔案系統建立安全群組:

  • 安全群組名稱 - 為您的安全群組輸入唯一的名稱。例如 EFS-access-for-sg-dc025fa2

  • VPC - 選擇您先前為叢集所確認的 VPC。

  • 傳入規則

    • 類型 - NFS

    • 來源 - 使用您為執行個體建立的安全群組 ID 進行自訂

如需如何建立安全群組的詳細資訊,請參閱 Amazon EC2 使用者指南中的建立安全群組

步驟 3:建立 Amazon EFS 檔案系統

在此步驟中,您將建立一個 Amazon EFS 檔案系統。

建立 Amazon ECS 任務的 Amazon EFS 檔案系統。
  1. 開啟 Amazon Elastic File System 主控台,網址為 https://console.aws.amazon.com/efs/

  2. 選擇 Create file system (建立檔案系統)

  3. 輸入檔案系統的名稱,然後選擇容器執行個體所託管的 VPC。根據預設,指定之 VPC 中的每個子網路,都會收到一個使用該 VPC 之預設安全群組的掛載目標。然後,選擇自訂

    注意

    本教學假設您的 Amazon EFS 檔案系統、Amazon ECS 叢集、容器執行個體和任務都位於同一個 VPC 中。如需有關從不同 VPC 掛接檔案系統的詳細資訊,請參閱 Amazon EFS 使用者指南中的逐步解說:從不同 VPC 掛接檔案系統

  4. 檔案系統設定頁面上,設定選用設定,然後在效能設定下,為您的檔案系統選擇高載輸送量模式。設定完設定之後,請選取下一步

    1. (選用) 為您的檔案系統新增標籤。例如,您可以在 Name (名稱) 鍵旁的 Value (值) 欄中輸入名稱,藉此為檔案系統指定不會重複的一名稱。

    2. (選用) 啟用生命週期管理,以避免在不常存取的儲存體上浪費成本。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的 EFS 生命週期管理

    3. (選用) 啟用加密。選取此核取方塊以啟用靜態 Amazon EFS 檔案系統的加密。

  5. 網路存取頁面的掛載目標下,將每個可用區域的現有安全群組組態替換為您為 步驟 2:為 Amazon EC2 執行個體和 Amazon EFS 檔案系統建立安全群組 中的檔案系統建立的安全群組,然後選擇下一步

  6. 您不需要為本教學課程設定檔案系統政策,因此您可以選擇下一步略過此區段。

  7. 檢閱您的檔案系統選項,然後選擇建立以完成程序。

  8. 檔案系統畫面中,記錄檔案系統 ID。在下一個步驟中,您將會在 Amazon ECS 任務定義中參考這個值。

步驟 4:將內容新增至 Amazon EFS 檔案系統

在此步驟中,您會將 Amazon EFS 檔案系統掛載到 Amazon EC2 執行個體,並將內容新增到其中。這是為了在本教學課程中進行測試,以說明資料的持久性。使用此功能時,通常會將應用程式或其他方法的資料寫入 Amazon EFS 檔案系統。

建立 Amazon EC2 執行個體並掛載 Amazon EFS 檔案系統
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 選擇 Launch Instance (啟動執行個體)

  3. 應用程式和作業系統映像 (Amazon Machine Image) 下,選取 Amazon Linux 2 AMI (HVM)

  4. 執行個體類型中,保留預設執行個體類型 t2.micro

  5. 金鑰對 (登入) 下,選取用於 SSH 存取執行個體的金鑰對。

  6. 網路設定下,選取為 Amazon EFS 檔案系統和 Amazon ECS 叢集指定的 VPC。選取子網路和在 步驟 2:為 Amazon EC2 執行個體和 Amazon EFS 檔案系統建立安全群組 中建立的執行個體安全群組。設定執行個體的安全群組。確認已啟用自動指派公有 IP

  7. 設定儲存下,選擇檔案系統的編輯按鈕,然後選擇 EFS。選取您在 步驟 3:建立 Amazon EFS 檔案系統 中建立的檔案系統。您可以選擇性地變更掛載點,或保留預設值。

    重要

    您必須先選擇子網路,然後才能將檔案系統新增至執行個體。

  8. 清除自動建立並連接安全群組。保持選取另一個核取方塊。選擇 Add shared file system (新增共用檔案系統)

  9. Advanced Details (進階詳細資訊) 下,確保透過 Amazon EFS 檔案系統掛載步驟自動填入使用者資料指令碼。

  10. 摘要下,確定執行個體數量1。選擇啟動執行個體

  11. 啟動執行個體頁面上,選擇檢視所有執行個體以查看執行個體的狀態。初始時,您的執行個體狀態PENDING。當狀態變更為 RUNNING 且執行個體通過所有狀態檢查之後,執行個體即可供使用。

現在,您可以連線到 Amazon EC2 執行個體,並將內容新增至 Amazon EFS 檔案系統。

連線到 Amazon EC2 執行個體,並將內容新增至 Amazon EFS 檔案系統。
  1. 您建立之 Amazon EC2 執行個體的 SSH。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Connect 到 Linux 執行個體。

  2. 從終端機視窗,執行 df -T 命令,確認 Amazon EFS 檔案系統已掛載。在下列輸出中,我們已反白顯示 Amazon EFS 檔案系統掛載。

    $ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on devtmpfs devtmpfs 485468 0 485468 0% /dev tmpfs tmpfs 503480 0 503480 0% /dev/shm tmpfs tmpfs 503480 424 503056 1% /run tmpfs tmpfs 503480 0 503480 0% /sys/fs/cgroup /dev/xvda1 xfs 8376300 1310952 7065348 16% / 127.0.0.1:/ nfs4 9007199254739968 0 9007199254739968 0% /mnt/efs/fs1 tmpfs tmpfs 100700 0 100700 0% /run/user/1000
  3. 導覽至掛載 Amazon EFS 檔案系統所在的目錄。在上述範例中,即為 /mnt/efs/fs1

  4. 建立名為 index.html 且具有下列內容的檔案:

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

步驟 5:建立任務定義

以下任務定義會建立名稱為 efs-html 的資料磁碟區。nginx 容器會將主機資料磁碟區掛載於 NGINX 根目錄 /usr/share/nginx/html

使用 Amazon ECS 主控台建立新的任務定義
  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. 在導覽窗格中,選擇 Task Definitions (任務定義)。

  3. 選擇 Create new task definitio (建立新任務定義)、Create new task definition with JSON (使用 JSON 建立新的任務定義)。

  4. 在 JSON 編輯器方塊中,複製並貼上以下 JSON 文字,以 Amazon EFS 檔案系統的 ID 取代 fileSystemId

    { "containerDefinitions": [ { "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "mountPoints": [ { "containerPath": "/usr/share/nginx/html", "sourceVolume": "efs-html" } ], "name": "nginx", "image": "nginx" } ], "volumes": [ { "name": "efs-html", "efsVolumeConfiguration": { "fileSystemId": "fs-1324abcd", "transitEncryption": "ENABLED" } } ], "family": "efs-tutorial", "executionRoleArn":"arn:aws::iam::111122223333:role/ecsTaskExecutionRole" }
    注意

    您可以將下列許可新增至 Amazon ECS 任務執行 IAM 角色,以允許 Amazon ECS 代理程式在啟動時找到 Amazon EFS 檔案系統並將其掛接到任務。

    • elasticfilesystem:ClientMount

    • elasticfilesystem:ClientWrite

    • elasticfilesystem:DescribeMountTargets

    • elasticfilesystem:DescribeFileSystems

  5. 選擇建立

步驟 6:執行任務並檢視結果

現在,已建立您的 Amazon EFS 檔案系統,並且提供 NGINX 容器的 Web 內容,您可以使用建立的任務定義來執行任務。NGINX Web 伺服器會隨即提供您簡單的 HTML 頁面。如果您在 Amazon EFS 檔案系統中更新了內容,這些變更也會傳播至所有也掛載該檔案系統的容器。

任務會在您為叢集定義的子網路中執行。

使用主控台執行任務並檢視結果
  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. Clusters (叢集) 頁面上,選取要在哪個叢集中執行獨立任務。

    決定您要從中啟動服務的資源。

    啟動服務的資源 步驟

    叢集

    1. 叢集頁面,選取您要在哪個叢集中建立服務。

    2. Tasks (任務) 標籤中,選擇 Run new task (執行新任務)。

    啟動類型
    1. Task (任務) 頁面中,選擇任務定義。

    2. 如果有多個修訂版,則請選取修訂版。

    3. 依序選擇 Create (建立)、Run task (執行任務)。

  3. (選用) 選擇已排程的任務在叢集基礎設施中的分佈方式。展開 Compute configuration (運算組態),然後執行下列操作:

    分發方法 步驟
    啟動類型
    1. 運算選項區段中,選取啟動類型

    2. 啟動類型中,選擇 EC2

  4. 針對 Application type (應用程式類型),選擇 Task (任務)。

  5. 任務定義中,選擇您先前建立的 efs-tutorial 任務定義。

  6. 所需任務中,輸入 1

  7. 選擇建立

  8. 叢集頁面上,選擇基礎設施

  9. 容器執行個體下,選擇要連線的容器執行個體。

  10. 容器執行個體頁面的聯網下,記錄執行個體的公有 IP 或公有 DNS

  11. 開啟瀏覽器並輸入公有 IP 地址。您應該看到下列訊息:

    It works! You are using an Amazon EFS file system for persistent container storage.
    注意

    如果您未看到該訊息,請確認您容器執行個體的安全群組,允許連接埠 80 上的入站網路流量,且檔案系統的安全群組允許來自容器執行個體的入站存取。