本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EFS磁碟區
Amazon Elastic File System (Amazon EFS) 提供簡單、可擴展的檔案儲存,可搭配您的 AWS Batch 任務使用。使用 Amazon EFS時,儲存容量是彈性的。當您新增和移除檔案時,它會自動擴展。您的應用程式可在需要時具備所需的儲存容量。
您可以使用 Amazon EFS 檔案系統搭配 AWS Batch ,跨容器執行個體機群匯出檔案系統資料。如此一來,您的任務就能存取相同的持久性儲存體。不過,您必須在 Docker 常駐程式啟動之前,AMI將容器執行個體設定為掛載 Amazon EFS 檔案系統。此外,您的任務定義必須參考容器執行個體上的磁碟區掛載,才能使用檔案系統。下列各節可協助您開始使用 Amazon EFS搭配 AWS Batch。
Amazon EFS磁碟區考量事項
使用 Amazon EFS磁碟區時,應考慮下列事項:
-
對於使用 EC2 資源的任務,Amazon EFS 檔案系統支援已新增為使用容器代理AMI程式版本 1.35.0
20191212
的 Amazon ECS最佳化版本的公開預覽。不過,Amazon EFS 檔案系統支援使用容器20200319
代理AMI程式 1.38.0 的 Amazon ECS最佳化版本輸入一般可用性,其中包含 Amazon EFS存取點和IAM授權功能。我們建議您使用 Amazon ECS最佳化AMI版本20200319
或更新版本,以充分利用這些功能。如需詳細資訊,請參閱 Amazon Elastic Container Service 開發人員指南 中的 Amazon ECS最佳化AMI版本。注意
如果您建立自己的 AMI,則必須使用容器代理程式 1.38.0 或更新版本的 1.38.0-1
ecs-init
版或更新版本,並在 Amazon EC2執行個體上執行下列命令。這是為了啟用 Amazon ECS磁碟區外掛程式。這些命令取決於您是否使用 Amazon Linux 2 或 Amazon Linux 作為基礎映像。- Amazon Linux 2
-
$
yum install amazon-efs-utils systemctl enable --now amazon-ecs-volume-plugin
- Amazon Linux
-
$
yum install amazon-efs-utils sudo shutdown -r now
-
對於使用 Fargate 資源的任務,使用平台 1.4.0 版或更新版本時新增了 Amazon EFS 檔案系統支援。如需詳細資訊,請參閱 Amazon Elastic Container Service 開發人員指南 中的 AWS Fargate 平台版本。
-
使用 Fargate 資源在任務中指定 Amazon EFS磁碟區時,Fargate 會建立負責管理 Amazon EFS磁碟區的主管容器。主管容器會使用少量任務的記憶體。查詢任務中繼資料第 4 版端點時,可看見監督容器。如需詳細資訊,請參閱 AWS Fargate的 Amazon Elastic Container Service 使用者指南中的任務中繼資料端點版本 4。
使用 Amazon EFS存取點
Amazon EFS存取點是EFS檔案系統中的應用程式特定進入點,可協助您管理共用資料集的應用程式存取。如需 Amazon EFS存取點以及如何控制存取點存取的詳細資訊,請參閱Amazon Elastic File System 使用者指南中的使用 Amazon EFS 存取點。 Amazon Elastic File System
對於透過存取點提出的所有檔案系統請求,存取點可以強制執行使用者身分POSIX,包括使用者群組。存取點也可以針對檔案系統強制執行不同的根目錄,讓用戶端只能存取指定目錄或其子目錄中的資料。
注意
建立EFS存取點時,您可以在檔案系統上指定路徑,以做為根目錄。當您在 AWS Batch 任務定義中參考具有存取點 ID EFS的檔案系統時,必須省略根目錄或設定為 /
這會強制執行EFS存取點上設定的路徑。
您可以使用 AWS Batch 任務IAM角色來強制執行特定應用程式使用特定存取點。透過將IAM政策與存取點結合,您可以輕鬆為應用程式提供特定資料集的安全存取。此功能使用 Amazon ECSIAM角色執行任務功能。如需詳細資訊,請參閱 Amazon Elastic Container Service 開發人員指南 中的IAM任務角色。
在任務定義中指定 Amazon EFS 檔案系統
若要將 Amazon EFS 檔案系統磁碟區用於容器,您必須在任務定義中指定磁碟區和掛載點組態。下列任務定義程式碼JSON片段顯示容器的 volumes
和 mountPoints
物件的語法:
{ "containerProperties": [ { "image": "
amazonlinux:2
", "command": [ "ls", "-la", "/mount/efs
" ], "mountPoints": [ { "sourceVolume": "myEfsVolume
", "containerPath": "/mount/efs
", "readOnly":true
} ], "volumes": [ { "name": "myEfsVolume
", "efsVolumeConfiguration": { "fileSystemId": "fs-12345678
", "rootDirectory": "/path/to/my/data
", "transitEncryption": "ENABLED
", "transitEncryptionPort":integer
, "authorizationConfig": { "accessPointId": "fsap-1234567890abcdef1
", "iam": "ENABLED
" } } } ] } ] }
efsVolumeConfiguration
-
類型:物件
必要:否
使用 Amazon EFS磁碟區時指定此參數。
fileSystemId
-
類型:字串
必要:是
要使用的 Amazon EFS 檔案系統 ID。
rootDirectory
-
類型:字串
必要:否
Amazon EFS 檔案系統中要掛載為主機內根目錄的目錄。如果省略此參數,則會使用 Amazon EFS磁碟區的根。指定
/
的效果與忽略此參數的效果相同。長度最多為 4,096 個字元。重要
如果在 中指定EFS存取點
authorizationConfig
,則必須省略根目錄參數,或將其設定為/
。這會強制執行EFS存取點上設定的路徑。 transitEncryption
-
類型:字串
有效值:
ENABLED
|DISABLED
必要:否
決定是否為 AWS Batch 主機與 Amazon EFS 伺服器之間傳輸的 Amazon EFS資料啟用加密。如果使用 Amazon EFSIAM授權,則必須啟用傳輸加密。如果省略此參數,系統會使用
DISABLED
的預設值。如需詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的加密傳輸中的資料。 transitEncryptionPort
-
類型:整數
必要:否
在 AWS Batch 主機和 Amazon EFS 伺服器之間傳送加密資料的連接埠。如果您未指定傳輸加密連接埠,則會使用 Amazon EFS 掛載協助程式使用的連接埠選取策略。該值必須介於 0 到 65,535 之間。如需詳細資訊,請參閱 Amazon Elastic File System 使用者指南中的EFS掛載協助程式。
authorizationConfig
-
類型:物件
必要:否
Amazon EFS 檔案系統的授權組態詳細資訊。
accessPointId
-
類型:字串
必要:否
要使用的存取點 ID。如果指定存取點,
efsVolumeConfiguration
則必須省略 中的根目錄值,或將其設定為/
。這會強制執行EFS存取點上設定的路徑。如果使用存取點,則必須在EFSVolumeConfiguration
中啟用傳輸加密。如需詳細資訊,請參閱 Amazon Elastic File System 使用者指南 中的使用 Amazon EFS 存取點。 Amazon Elastic File System iam
-
類型:字串
有效值:
ENABLED
|DISABLED
必要:否
決定是否在掛載 Amazon EFS 檔案系統時使用 AWS Batch 任務定義中定義的任務IAM角色。如果已啟用,必須在
EFSVolumeConfiguration
中啟用傳輸加密。如果省略此參數,系統會使用DISABLED
的預設值。如需IAM執行角色的詳細資訊,請參閱 AWS Batch IAM 執行角色。