我想將 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 檔案系統安全群組的輸出連線。
建立任務定義
請完成下列步驟:
- 開啟 Amazon ECS 主控台,然後依序選擇任務定義、建立新任務定義。
- 針對啟動類型,選擇 EC2,然後選擇下一步。
- 在設定任務和容器定義中,請輸入任務定義名稱。
- 在磁碟區區段中,選擇新增磁碟區。
- 請輸入磁碟區名稱,然後從磁碟區類型下拉式清單中選擇 EFS。
- 針對檔案系統 ID,請選取要與 ECS 任務一起使用的檔案系統 ID。
- (選用) 請指定根目錄、傳輸中加密和 EFS IAM 授權。如果您沒有指定任何內容,則會使用預設的根目錄 "/"。
- 選擇新增。
- 建立容器時,在容器定義下,請選擇新增容器以使用新的磁碟區。然後,在儲存和日誌下的掛載點子區段中,選取該磁碟區。
- 針對容器路徑,請選擇應用程式在容器中的目錄路徑,然後選擇新增。
- 填寫任務定義精靈中的必要欄位,然後選擇建立。
在下列範例中,任務定義會建立名為 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"
}
**注意:**請以您的值取代 fileSystemid、containerPath 和其他任務定義參數。
在上述範例中,您可以在檔案系統的根目錄中建立類似以下內容的範例 index.html 檔案:
<html> <body>
<h1>You are using an Amazon EFS file system for persistent container storage.</h1>
</body>
</html>
執行 Amazon ECS 任務
請完成下列步驟:
- 若要執行 ECS 任務,請使用任務定義。
- 若要確認 EFS 檔案系統是否已掛載到 ECS 容器,請使用執行個體的 IP 位址來存取網站。