View a markdown version of this page

Migrasi unduhan URL yang telah ditandatangani sebelumnya dari AWS SDK untuk Java v1 ke v2 - 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.

Migrasi unduhan URL yang telah ditandatangani sebelumnya dari AWS SDK untuk Java v1 ke v2

Migrasikan kode unduhan URL yang telah ditandatangani sebelumnya untuk menggunakan pemrosesan asinkron dan mengakses opsi unduhan yang diperluas di versi 2. Topik ini menunjukkan cara bermigrasi dari versi 1.x (v1) ke versi 2.x (v2) dari. AWS SDK untuk Java Untuk informasi tentang kemampuan pengunduhan URL v2 yang telah ditandatangani sebelumnya, lihatBekerja dengan Amazon S3 URL yang telah ditandatangani sebelumnya.

High-level perubahan

Daftar berikut merangkum perbedaan utama antara v1 dan v2 untuk unduhan URL yang telah ditandatangani sebelumnya:

  • Package: com.amazonaws.services.s3software.amazon.awssdk.services.s3.

  • Kelas klien: AmazonS3 (sinkron) → S3AsyncClient (asinkron).

  • Arsitektur: Panggilan pemblokiran sinkron → Panggilan asinkron dengan. CompletableFuture

  • Multipart: Hanya tersedia melalui Transfer Manager → Tersedia langsung pada klien denganmultipartEnabled(true).

  • Manajer Transfer: Hanya tujuan file → File, byte, atau transformator khusus.

Perubahan dependensi, paket, dan nama kelas

Tabel berikut menunjukkan ketergantungan dan perubahan nama kelas dari v1 ke v2.

Ubah v1 v2

Ketergantungan Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.7971</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.48.02</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- Optional: for Transfer Manager --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> </dependencies>
Nama paket com.amazonaws.services.s3 software.amazon.awssdk.services.s3
Nama kelas AmazonS3, TransferManager S3AsyncClient, S3TransferManager

1 Versi terbaru di situs web Maven Central. 2 Versi terbaru di situs web Maven Central.

Perubahan API

Unduhan klien S3

Tabel berikut membandingkan panggilan API v1 dan v2 untuk unduhan klien S3.

Kasus penggunaan v1 v2
Buat klien
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
S3AsyncClient s3AsyncClient = S3AsyncClient.create(); AsyncPresignedUrlExtension extension = s3AsyncClient.presignedUrlExtension();
Hasilkan URL yang telah ditandatangani sebelumnya
Date expiration = new Date( System.currentTimeMillis() + 600_000); URL presignedUrl = s3Client.generatePresignedUrl( new GeneratePresignedUrlRequest( "my-bucket", "my-key") .withMethod(HttpMethod.GET) .withExpiration(expiration));
S3Presigner presigner = S3Presigner.create(); PresignedGetObjectRequest presigned = presigner.presignGetObject(r -> r .getObjectRequest(req -> req .bucket("my-bucket").key("my-key")) .signatureDuration(Duration.ofMinutes(10))); URL presignedUrl = presigned.url(); presigner.close();
Buat permintaan unduhan
PresignedUrlDownloadRequest downloadRequest = new PresignedUrlDownloadRequest(presignedUrl);
PresignedUrlDownloadRequest downloadRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .build();
Unduh untuk streaming
PresignedUrlDownloadResult result = s3Client.download(downloadRequest); InputStream content = result.getS3Object() .getObjectContent();
ResponseBytes<GetObjectResponse> bytes = extension.getObject(downloadRequest, AsyncResponseTransformer.toBytes()) .join();
Unduh ke file
s3Client.download(downloadRequest, new File("/tmp/file.bin"));
extension.getObject(downloadRequest, Paths.get("/tmp/file.bin")) .join();
Unduh dengan jangkauan
PresignedUrlDownloadRequest rangeRequest = new PresignedUrlDownloadRequest(presignedUrl); rangeRequest.setRange(0, 1023); s3Client.download(rangeRequest);
PresignedUrlDownloadRequest rangeRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .range("bytes=0-1023") .build(); extension.getObject(rangeRequest, Paths.get("/tmp/partial.bin")) .join();

Unduhan Manajer Transfer

Tabel berikut membandingkan panggilan API v1 dan v2 untuk unduhan Transfer Manager.

Kasus penggunaan v1 v2
Buat Manajer Transfer
TransferManager tm = TransferManagerBuilder.standard().build();
S3TransferManager tm = S3TransferManager.create();
Unduh
PresignedUrlDownload download = tm.download( new PresignedUrlDownloadRequest(presignedUrl), new File("/tmp/file.bin")); download.waitForCompletion();
PresignedFileDownload download = tm.downloadFileWithPresignedUrl( PresignedDownloadFileRequest.builder() .presignedUrlDownloadRequest( downloadRequest) .destination(Paths.get("/tmp/file.bin")) .addTransferListener( LoggingTransferListener.create()) .build()); download.completionFuture().join();

Untuk informasi selengkapnya, lihat Unduh menggunakan URL yang telah ditandatangani sebelumnya.

Perubahan konfigurasi

Klien S3

Tabel berikut menjelaskan perubahan konfigurasi klien S3 dari v1 ke v2.

Pengaturan v1 v2
Konfigurasi multipart PresignedUrlDownloadConfig.withDownloadSizePerRequest(long) S3AsyncClient.builder().multipartConfiguration(c -> c.minimumPartSizeInBytes(...))
Header kustom PresignedUrlDownloadRequest.putCustomRequestHeader(String, String) Tidak didukung. Hanya Range dan If-Match dapat diatur pada waktu download.

Manajer Transfer

Tabel berikut menjelaskan perubahan konfigurasi Transfer Manager dari v1 ke v2.

Pengaturan v1 v2
Pelacakan kemajuan PresignedUrlDownloadConfig.withS3progressListener(...) PresignedDownloadFileRequest.builder().addTransferListener(...)
Lanjutkan saat mencoba lagi PresignedUrlDownloadConfig.withResumeOnRetry(true) Tidak didukung
Pause/Resume Tidak didukung Tidak didukung
catatan

Klien AWS CRT-based S3 (S3AsyncClient.crtBuilder()) saat ini tidak mendukung ekstensi URL yang telah ditandatangani sebelumnya. Gunakan S3AsyncClient.builder().