Perubahan di Amazon S3 Transfer Manager dari versi 1 ke versi 2 - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Perubahan di Amazon S3 Transfer Manager dari versi 1 ke versi 2

Topik ini merinci perubahan di Amazon S3 Transfer Manager dari versi 1 (v1) ke versi 2 (v2).

Perubahan tingkat tinggi

Perubahan v1 v2

Ketergantungan Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.5871</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.21.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.28.73</version> </dependency> </dependencies>
Nama paket com.amazonaws.services.s3.transfer software.amazon.awssdk.transfer.s3
Nama kelas

TransferManager

S3TransferManager

1 Versi terbaru. 2 Versi terbaru. 3 Versi terbaru.

Perubahan API konfigurasi

Pengaturan v1 v2

(dapatkan pembangun)

TransferManagerBuilder tmBuilder = TransferManagerBuilder.standard();
S3TransferManager.Builder tmBuilder = S3TransferManager.builder();

Klien S3

tmBuilder.withS3Client(...); tmBuilder.setS3Client(...);
tmBuilder.s3Client(...);

Pelaksana

tmBuilder.withExecutorFactory(...); tmBuilder.setExecutorFactory(...);
tmBuilder.executor(...);

Shutdown thread pool

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
Tidak didukung. Pelaksana yang disediakan tidak akan dimatikan saat S3 TransferManager ditutup

Ukuran bagian unggah minimum

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

Ambang batas unggahan multipart

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

Ukuran bagian salinan minimum

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

Ambang salinan multipart

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

Nonaktifkan unduhan paralel

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
Nonaktifkan unduhan paralel dengan meneruskan klien S3 berbasis Java standar ke manajer transfer.
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

Selalu hitung multipart md5

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
Tidak didukung.

Perubahan perilaku

Transfer paralel membutuhkan klien AWS S3 berbasis CRT

Dalam SDK for Java 2.x, fitur transfer paralel otomatis (multipart upload/download) tersedia melalui klien S3 berbasis CRT.AWS Untuk mengaktifkan fitur transfer paralel, Anda harus secara eksplisit menambahkan dependensi pustaka AWS Common Runtime (CRT) untuk kinerja yang dimaksimalkan.

Klien S3 AWS berbasis CRT saja — tanpa menggunakan — memberikan S3TransferManager kinerja transfer paralel yang maksimal. S3TransferManagerv2 menyediakan API tambahan yang memudahkan untuk mentransfer file dan direktori.

Kemampuan S3TransferManager untuk melakukan transfer paralel tergantung pada bagaimana S3TransferManager dimulai dan jika pustaka AWS Common Runtime (CRT) telah dinyatakan sebagai dependensi.

Tabel berikut menjelaskan tiga skenario inisialisasi untuk S3TransferManager v2 dengan dan tanpa AWS CRT dinyatakan sebagai dependensi.

Pendekatan inisialisasi S3 TransferManager v2 Apakah AWS CRT dinyatakan sebagai ketergantungan?
ya tidak

Inisialisasi S3TransferManager tanpa melewatkan instance S3AsyncClient

Metode membuat statis:

S3TransferManager.create();

- ATAU -

Metode pembangun:

S3TransferManager.builder().build();
Tanda centang hijau yang menunjukkan bahwa transfer paralel otomatis diaktifkan.

transfer paralel otomatis diaktifkan

X merah menunjukkan bahwa transfer paralel otomatis dinonaktifkan.

transfer paralel otomatis dinonaktifkan

Lewati S3AsyncClient instance yang dibangun dengan salah satu metode pembuat crt* ()

S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder().build(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();

- ATAU -

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();
Tanda centang hijau yang menunjukkan bahwa transfer paralel otomatis diaktifkan.

transfer paralel otomatis diaktifkan

X merah menunjukkan bahwa transfer paralel otomatis dinonaktifkan.

kesalahan runtime

Lulus S3AsyncClient instance yang dibangun dengan salah satu metode pembangun standar sehingga manajer transfer tidak memiliki referensi ke CRT

S3AsyncClient s3AsyncClient = S3AsyncClient.builder().build(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();

- ATAU -

S3AsyncClient s3AsyncClient = S3AsyncClient.create(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();
X merah menunjukkan bahwa transfer paralel otomatis dinonaktifkan.

transfer paralel otomatis dinonaktifkan

X merah menunjukkan bahwa transfer paralel otomatis dinonaktifkan.

transfer paralel otomatis dinonaktifkan

Unduhan paralel melalui pengambilan rentang byte

Ketika fitur transfer paralel otomatis diaktifkan, S3 Transfer Manager v2 menggunakan byte-range fetches untuk mengambil bagian tertentu dari objek secara paralel (unduhan multipart). Cara objek diunduh dengan v2 tidak tergantung pada bagaimana objek awalnya diunggah. Semua unduhan dapat memperoleh manfaat dari throughput dan konkurensi yang tinggi.

Sebaliknya, dengan S3 Transfer Manager v1, penting bagaimana objek awalnya diunggah. S3 Transfer Manager v1 mengambil bagian-bagian objek dengan cara yang sama seperti bagian-bagian yang diunggah. Jika objek awalnya diunggah sebagai objek tunggal, S3 Transfer Manager v1 tidak dapat mempercepat proses pengunduhan dengan menggunakan sub-permintaan.

Perilaku kegagalan

Dengan S3 Transfer Manager v1, permintaan transfer direktori gagal jika ada sub-permintaan yang gagal. Tidak seperti v1, future return from S3 Transfer Manager v2 berhasil diselesaikan meskipun beberapa sub-permintaan gagal.

Akibatnya, Anda harus memeriksa kesalahan dalam respons dengan menggunakan CompletedDirectoryDownload.failedTransfers()metode atau CompletedDirectoryUpload.failedTransfers()metode bahkan ketika future selesai dengan sukses.