本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 檔案磁碟區
S3 檔案可讓檔案系統直接存取存放在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的資料。使用 AWS Batch,您可以在任務定義中定義 S3 檔案磁碟區,讓您的容器可以使用標準檔案操作讀取和寫入 Amazon S3 資料。
若要使用 S3 檔案磁碟區,您需要 S3 檔案系統,並在與 AWS Batch 運算環境相同的 VPC 中掛載目標。如需包括儲存貯體組態、IAM 角色、檔案系統建立和掛載目標的完整設定說明,請參閱《Amazon S3 使用者指南》中的 S3 檔案先決條件和《Amazon Elastic Container Service 開發人員指南》中的為 Amazon ECS 設定 S3 檔案。 Amazon S3
Amazon S3 檔案磁碟區考量事項
使用 S3 檔案磁碟區時,請考慮下列事項:
-
重要
Amazon EC2 啟動類型目前不支援 S3 檔案。如果您在任務定義中設定 S3 檔案系統,並嘗試在 Amazon EC2 啟動類型上執行,則任務會在啟動時失敗。未來版本預計支援 Amazon EC2 啟動類型。
-
S3 檔案磁碟區一律啟用傳輸加密。您可以選擇性地使用
transitEncryptionPort參數指定連接埠。預設連接埠為2049。 -
任務角色 (相當於 Amazon ECS 任務角色) 必須具有 檔案系統的
s3files:ClientMount和s3files:ClientWrite許可。對於從 Amazon S3 直接讀取,角色也需要s3:GetObject、s3:GetObjectVersion和 儲存貯體的s3:ListBucket許可。 -
S3 檔案系統掛載目標必須位於相同的 VPC 中,並且可從運算 AWS Batch 環境的子網路連接。掛載目標安全群組必須允許來自運算環境安全群組的傳入 NFS 流量 (TCP 連接埠 2049)。
使用 Amazon S3 檔案存取點
S3 檔案存取點是檔案系統中的應用程式特定進入點,可針對所有檔案系統請求強制執行 POSIX 使用者身分和根目錄。您可以使用存取點來隔離租用戶,讓每個任務只能存取共用檔案系統中自己的目錄。
注意
當您使用 accessPointArn 參數指定存取點時,rootDirectory必須省略 或將 設定為 /。存取點會強制執行自己的根目錄路徑。
如需建立和管理存取點的詳細資訊,請參閱《Amazon S3 使用者指南》中的為 S3 檔案系統建立存取點。 Amazon S3 如需使用檔案系統政策強制執行存取點隔離的詳細資訊,請參閱《Amazon S3 使用者指南》中的 S3 檔案如何與 IAM 搭配使用。 Amazon S3
在任務定義中指定 Amazon S3 檔案系統
若要對容器使用 S3 檔案磁碟區,您必須在任務定義中指定磁碟區和掛載點組態。下列任務定義 JSON 程式碼片段顯示容器的 volumes和 mountPoints 物件的語法:
{ "ecsProperties": { "taskProperties": [ { ..., "taskRoleArn": "arn:aws:iam::<account>:role/<job-role-name>", "containers": [ { ..., "mountPoints": [ { "sourceVolume": "myS3FilesVolume", "containerPath": "/mnt/s3data", "readOnly":false} ] } ], "volumes": [ { "name": "myS3FilesVolume", "s3filesVolumeConfiguration": { "fileSystemArn": "arn:aws:s3files:<region>:<account>:file-system/<fs-id>", "rootDirectory": "/keypath/in/s3" } } ] } ] } }
s3filesVolumeConfiguration-
類型:物件
必要:否
使用 S3 檔案磁碟區時,會指定此參數。
fileSystemArn-
類型:字串
必要:是
要使用的 S3 檔案系統的完整 ARN。
rootDirectory-
類型:字串
必要:否
S3 檔案系統中要掛載為主機內根目錄的目錄。如果省略此參數,則會使用檔案系統的根。指定
/的效果與忽略此參數的效果相同。長度上限為 4,096 個字元。重要
如果在 中指定 S3 檔案存取點
accessPointArn,則必須省略根目錄參數,或將 設定為/。這會強制執行存取點上設定的路徑。 transitEncryptionPort-
類型:整數
必要:否
在 AWS Batch 主機和 S3 檔案伺服器之間傳送加密資料時要使用的連接埠。如果您未指定傳輸加密連接埠,
2049則會使用 的預設值。該值必須介於 0 到 65,535 之間。S3 檔案磁碟區一律啟用傳輸加密。 accessPointArn-
類型:字串
必要:否
要使用之 S3 檔案存取點的 ARN。如果指定存取點,
s3filesVolumeConfiguration則必須省略 中的根目錄值,或將 設定為/。這會強制執行存取點上設定的路徑。存取點會強制執行 POSIX 使用者身分,並可以限制對檔案系統中特定目錄的存取。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的為 S3 檔案系統建立存取點。 Amazon S3
搭配 AWS Batch 和 Amazon EKS 使用 S3 檔案磁碟區
對於使用 Amazon EKS 資源的任務, 透過 EKS 任務定義磁碟區組態persistentVolumeClaim中的 AWS Batch 支援 S3 檔案磁碟區。您必須先在 Amazon EKS 叢集中預先建立持久性磁碟區和持久性磁碟區宣告,才能在任務定義中參考它。
下列任務定義程式碼片段說明如何參考 S3 檔案持久性磁碟區宣告:
{ "eksProperties": { "podProperties": { ..., "containers": [ { ..., "volumeMounts": [ { "name": "s3files-vol", "mountPath": "/mnt/s3data" } ] } ], "volumes": [ { "name": "s3files-vol", "persistentVolumeClaim": { "claimName": "<s3files-pvc-name>" } } ] } } }
如需使用 Amazon EKS 設定 S3 檔案的詳細資訊,請參閱《Amazon S3 使用者指南》中的在 Amazon EKS 中掛載 S3 檔案系統。 Amazon S3 如需完整的磁碟區參數參考,請參閱 AWS Batch API 參考中的 EksVolume。