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. S3TransferManager
v2 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.