

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 for Java v1 ke v2
<a name="migration-s3-presign-download"></a>

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 for Java Untuk informasi tentang kemampuan pengunduhan URL v2 yang telah ditandatangani sebelumnya, lihat[Bekerja dengan Amazon S3 URL yang telah ditandatangani sebelumnya](examples-s3-presign.md).

## High-level perubahan
<a name="migration-s3-presign-high-level"></a>

Daftar berikut merangkum perbedaan utama antara v1 dan v2 untuk unduhan URL yang telah ditandatangani sebelumnya:
+ **Package**: `com.amazonaws.services.s3` →`software.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 dengan`multipartEnabled(true)`.
+ **Manajer Transfer**: Hanya tujuan file → File, byte, atau transformator khusus.

## Perubahan dependensi, paket, dan nama kelas
<a name="migration-s3-presign-deps"></a>

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


| Ubah | v1 | v2 | 
| --- | --- | --- | 
| Ketergantungan Maven |  <pre><dependencyManagement><br />    <dependencies><br />        <dependency><br />            <groupId>com.amazonaws</groupId><br />            <artifactId>aws-java-sdk-bom</artifactId><br />            <version>{{1.12.7971}}</version><br />            <type>pom</type><br />            <scope>import</scope><br />        </dependency><br />    </dependencies><br /></dependencyManagement><br /><dependencies><br />    <dependency><br />        <groupId>com.amazonaws</groupId><br />        <artifactId>aws-java-sdk-s3</artifactId><br />    </dependency><br /></dependencies></pre>  |  <pre><dependencyManagement><br />    <dependencies><br />        <dependency><br />            <groupId>software.amazon.awssdk</groupId><br />            <artifactId>bom</artifactId><br />            <version>{{2.48.02}}</version><br />            <type>pom</type><br />            <scope>import</scope><br />        </dependency><br />    </dependencies><br /></dependencyManagement><br /><dependencies><br />    <dependency><br />        <groupId>software.amazon.awssdk</groupId><br />        <artifactId>s3</artifactId><br />    </dependency><br />    <!-- Optional: for Transfer Manager --><br />    <dependency><br />        <groupId>software.amazon.awssdk</groupId><br />        <artifactId>s3-transfer-manager</artifactId><br />    </dependency><br /></dependencies></pre>  | 
| Nama paket | com.amazonaws.services.s3 | software.amazon.awssdk.services.s3 | 
| Nama kelas | AmazonS3, TransferManager | S3AsyncClient, S3TransferManager | 

1 [Versi terbaru](https://central.sonatype.com/artifact/com.amazonaws/aws-java-sdk-bom) di situs web Maven Central. 2 [Versi terbaru](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) di situs web Maven Central.

## Perubahan API
<a name="migration-s3-presign-api-changes"></a>

### Unduhan klien S3
<a name="migration-s3-presign-api-s3client"></a>

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


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

### Unduhan Manajer Transfer
<a name="migration-s3-presign-api-tm"></a>

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


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

Untuk informasi selengkapnya, lihat [Unduh menggunakan URL yang telah ditandatangani sebelumnya](transfer-manager.md#transfer-manager-presigned-url-download).

## Perubahan konfigurasi
<a name="migration-s3-presign-config"></a>

### Klien S3
<a name="migration-s3-presign-config-s3"></a>

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
<a name="migration-s3-presign-config-tm"></a>

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()`.