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.6911</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.27.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> // Add the following if using the // AWS CRT-based S3 client. <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.29.143</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 konfigurasi

Perubahan konfigurasi yang perlu Anda atur untuk manajer transfer v2 bergantung pada klien S3 mana yang Anda gunakan. Anda memiliki pilihan klien S3 AWS CRT berbasis atau klien async S3 berbasis Java standar. Untuk informasi tentang perbedaannya, lihat Klien S3 di AWS SDK for Java 2.x topiknya.

Use the AWS CRT-based S3 client
Pengaturan v1 v2 - Manajer Transfer menggunakan AWS CRT klien S3 berbasis

(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 S3TransferManager ditutup

Ukuran bagian unggahan 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 batas 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 dengan multipart dinonaktifkan (default) ke manajer transfer.
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

Selalu hitung multipart md5

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
Tidak didukung.
Use Java-based S3 async client
Pengaturan v1 v2 - Transfer Manager menggunakan klien async S3 berbasis Java

(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 S3TransferManager ditutup

Ukuran bagian unggahan minimum

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.minimumPartSizeInBytes(...)).build(); tmBuilder.s3Client(s3);

Ambang batas unggahan multipart

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.thresholdInBytes(...)).build(); tmBuilder.s3Client(s3);

Ukuran bagian salinan minimum

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.minimumPartSizeInBytes(...)).build(); tmBuilder.s3Client(s3);

Ambang batas salinan multipart

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.thresholdInBytes(...)).build(); tmBuilder.s3Client(s3);

Nonaktifkan unduhan paralel

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

Selalu hitung multipart md5

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

Perubahan perilaku

Persyaratan transfer paralel

Dalam SDK untuk Java 2.x, fitur transfer paralel otomatis (multipart upload/download) tersedia melalui klien S3 berbasis dan klien async S3 AWS CRT berbasis Java. Untuk menggunakan klien S3 AWS CRT berbasis, Anda harus secara eksplisit menambahkan dependensi pustaka AWS Common Runtime (CRT) untuk kinerja yang dimaksimalkan. Untuk menggunakan klien async S3 berbasis Java dengan multipart diaktifkan, Anda harus menggunakan versi at SDK 2.25.X <TODO> atau lebih tinggi.

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

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 sebuah objek diunduh dengan v2 tidak tergantung pada bagaimana objek tersebut 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.