Amazon EFS磁碟區 - AWS Batch

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

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片段顯示容器的 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 檔案系統 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 執行角色