Amazon EFS 磁碟區 - AWS Batch

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

Amazon EFS 磁碟區

Amazon Elastic File System (Amazon EFS) 提供簡單、可擴展的檔案儲存,以便與您的任AWS Batch務搭配使用。利用 Amazon EFS,儲存容量即可有彈性。它會在您加入和移除檔案時自動縮放。您的應用程式可在需要時具備所需的儲存容量。

您可以搭AWS Batch配使用 Amazon EFS 檔案系統,跨容器執行個體叢集匯出檔案系統資料。如此一來,您的工作就可以存取相同的永久性儲存體。但您必須在 Docker 常駐程式啟動之前,先設定您的容器執行個體 AMI,以掛載 Amazon EFS 檔案系統。此外,您的工作定義必須參考容器執行個體上的磁碟區掛載,才能使用檔案系統。以下各節可協助您開始在搭配使用 Amazon EFS AWS Batch。

Amazon EFS 磁碟區考量事項

使用 Amazon EFS 磁碟區時應考慮以下事項:

  • 對於使用 EC2 資源的任務,Amazon EFS 檔案系統支援已新增為公開預覽,其中包含 Amazon ECS 最佳化 AMI 版本 (20191212含容器代理程式版本 1.35.0)。不過,Amazon EFS 檔案系統支援已透過 Amazon ECS 最佳化 AMI 版本 20200319 (包含 Amazon EFS 存取點和 IAM 授權功能的容器代理程式版本 1.38.0) 提供正式推出。我們建議您使用 Amazon ECS 最佳化 AMI 版本20200319或更新版本,以利用這些功能。如需詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的 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 彈性容器服務開發人員指南中的 AWSFargate 平台版本

  • 使用 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 存取點

存取點可以針對透過存取點提出的所有檔案系統要求,強制執行使用者身分 (包括使用者的 POSIX 群組)。存取點也可以針對檔案系統強制執行不同的根目錄,讓用戶端只能存取指定目錄或其子目錄中的資料。

注意

建立 EFS 存取點時,您可以在檔案系統上指定要做為根目錄的路徑。當您在AWS Batch工作定義中使用存取點 ID 來參照 EFS 檔案系統時,必須省略根目錄或將其設定為/這會強制在 EFS 存取點上設定的路徑。

您可以使用AWS Batch工作 IAM 角色強制執行特定應用程式使用特定存取點。透過結合 IAM 政策與存取點,您可以輕鬆地為應用程式提供特定資料集的安全存取權。此功能使用 Amazon ECS 身分與存取權管理角色執行任務功能。如需詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的任務 IAM 角色

在任務定義中指定 Amazon EFS 檔案系統

若要為您的容器使用 Amazon EFS 檔案系統磁碟區,您必須在任務定義中指定磁碟區和掛接點組態。下列工作定義 JSON 程式碼片段會顯示容器volumesmountPoints物件的語法:

{ "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 檔案系統識別碼。

rootDirectory

類型:字串

必要:否

在 Amazon EFS 檔案系統中的目錄,其將掛載作為主機內的根目錄。如果省略此參數,使用 Amazon EFS 磁碟區的根目錄。指定 / 的效果與忽略此參數的效果相同。它的長度最多可以有 4,096 個字符。

重要

如果在中指定 EFS 存取點authorizationConfig,則必須省略根目錄參數或將其設定為/。這會強制執行 EFS 存取點上設定的路徑。

transitEncryption

類型:字串

有效值:ENABLED | DISABLED

必要:否

決定是否為AWS Batch主機和 Amazon EFS 伺服器之間傳輸的 Amazon EFS 資料啟用加密。若使用 Amazon EFS IAM 授權,則必須啟用傳輸加密。如果省略此參數,系統會使用 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 存取點

iam

類型:字串

有效值:ENABLED | DISABLED

必要:否

決定是否在掛接 Amazon EFS 檔案系統時使用AWS Batch任務定義中定義的任務 IAM 角色。如果已啟用,必須在 EFSVolumeConfiguration 中啟用傳輸加密。如果省略此參數,系統會使用 DISABLED 的預設值。如需執行 IAM 角色的詳細資訊,請參閱AWS Batch 執行IAM角色