本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon S3 傳輸管理器從版本 1 更改為版本 2
本主題詳述 Amazon S3 傳輸管理員從版本 1 (v1) 到第 2 版 (v2) 的變更。
高階變更
變更 | v1 | v2 |
---|---|---|
Maven 的依賴 |
|
|
套件名稱 | com.amazonaws.services.s3.transfer |
software.amazon.awssdk.transfer.s3 |
類別名稱 |
設定 API 變更
設定 | v1 | v2 |
---|---|---|
(獲得建設者) |
|
|
S3 客戶端 |
|
|
遺囑執行人 |
|
|
關閉執行緒集區 |
|
不支援。S3 TransferManager 關閉時,提供的執行人不會關閉 |
最小上傳零件大小 |
|
|
分段上傳閾值 |
|
|
最小複製零件大小 |
|
|
多部分複製閾值 |
|
|
停用 parallel 下載 |
|
將標準 Java 型 S3 用戶端傳送至傳輸管理員,以停用 parallel 下載。
|
總是計算多部分 md5 |
|
不支援。 |
行為改變
並行傳輸需要 AWS 基於 CRT 的 S3 客戶端
在適用於 Java 2.x 的 SDK 中,可透過 CRT 型 S3 用戶端使用自動 parallel 傳輸功能 (多部分上傳/下載)。AWS若要啟用 parallel 傳輸功能,您必須明確新增「一AWS
般執行階段」(CRT) 程式庫
單獨使用 AWS CRT 型 S3 用戶端可S3TransferManager
提供最大的 parallel 傳輸效能。 S3TransferManager
v2 提供了額外的 API,使其更容易傳輸文件和目錄。
執行 parallel 傳輸的S3TransferManager
能力取決於起始方式,以及S3TransferManager
是否已宣告為相依性的「 AWS 共用執行階段」(CRT) 程式庫。
下表說明具有和不具有 AWS CRT 宣告為相依性之 S3TransferManager
v2 的三種初始化案例。
S3 TransferManager v2 初始化方法 | AWS CRT 是否聲明為依賴關係? | |
---|---|---|
是 | 否 | |
初始化 靜態創建方法:
- 或 - 生成器方法:
|
![]() 啟用自動 parallel 傳輸 |
![]() 自動 parallel 傳輸已停用 |
傳遞使用 crt* () 構建器方法之一構建的
- 或 -
|
![]() 啟用自動 parallel 傳輸 |
![]() 運行時錯誤 |
傳遞使用其中一個標準構建器方法構建的
- 或 -
|
![]() 自動 parallel 傳輸已停用 |
![]() 自動 parallel 傳輸已停用 |
通過字節範圍獲取並行下載
啟用自動 parallel 傳輸功能時,S3 Transfer Manager v2 會使用位元組範圍擷取,以 parallel 方式擷取物件的特定部分 (多部分下載)。使用 v2 下載對象的方式不取決於最初上傳對象的方式。所有下載都可以受益於高吞吐量和並發性。
相反地,使用 S3 傳輸管理員 v1,物件最初上傳的方式確實很重要。S3 傳輸管理員 v1 會以上傳零件的相同方式擷取物件的各個部分。如果物件原本是以單一物件的形式上傳,則 S3 Transfer Manager v1 無法使用子要求加速下載程序。
失敗行為
使用 S3 傳輸管理員 v1 時,如果有任何子請求失敗,目錄傳輸請求就會失敗。與 v1 不同,即使某些子請求失敗,從 S3 傳輸管理器 v2 返回的 future 也會成功完成。
因此,即使 future 成功完成,您也應該使用CompletedDirectoryDownload.failedTransfers()
CompletedDirectoryUpload.failedTransfers()