

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esegui la migrazione dei download di URL prefirmati da AWS SDK for Java da v1 a v2
<a name="migration-s3-presign-download"></a>

Esegui la migrazione del codice di download URL prefirmato per utilizzare l'elaborazione asincrona e accedere a opzioni di download estese nella versione 2. Questo argomento mostra come migrare dalla versione 1.x (v1) alla versione 2.x (v2) di. AWS SDK for Java Per informazioni sulle funzionalità di download di URL prefirmati v2, consulta. [Lavora con Amazon S3 URL prefirmati](examples-s3-presign.md)

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

L'elenco seguente riassume le principali differenze tra v1 e v2 per i download di URL prefirmati:
+ **Package**: `com.amazonaws.services.s3` →`software.amazon.awssdk.services.s3`.
+ **Classe client**: `AmazonS3` (sincrono) → `S3AsyncClient` (asincrono).
+ **Architettura**: Chiamate di blocco sincrone → Chiamate asincrone con. `CompletableFuture`
+ **Multipart**: Disponibile solo tramite Transfer Manager → Disponibile direttamente sul client con. `multipartEnabled(true)`
+ **Transfer Manager**: Solo destinazione del file → File, byte o trasformatore personalizzato.

## Modifiche nelle dipendenze, nei pacchetti e nei nomi delle classi
<a name="migration-s3-presign-deps"></a>

La tabella seguente mostra le dipendenze e le modifiche ai nomi delle classi da v1 a v2.


| Modifica | v1 |   v2 | 
| --- | --- | --- | 
| Dipendenze 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>  | 
| Nome pacchetto | com.amazonaws.services.s3 | software.amazon.awssdk.services.s3 | 
| Nomi delle classi | AmazonS3, TransferManager | S3AsyncClient, S3TransferManager | 

1 [Ultima versione](https://central.sonatype.com/artifact/com.amazonaws/aws-java-sdk-bom) sul sito Web di Maven Central. 2 [Ultima versione disponibile sul sito](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) Web di Maven Central.

## Modifiche all'API
<a name="migration-s3-presign-api-changes"></a>

### Download del client S3
<a name="migration-s3-presign-api-s3client"></a>

La tabella seguente confronta le chiamate API v1 e v2 per i download dei client S3.


| Caso d’uso | v1 |   v2 | 
| --- | --- | --- | 
| Creazione del client |  <pre>AmazonS3 s3Client = <br />        AmazonS3ClientBuilder.defaultClient();</pre>  |  <pre>S3AsyncClient s3AsyncClient = <br />        S3AsyncClient.create();<br />AsyncPresignedUrlExtension extension = <br />        s3AsyncClient.presignedUrlExtension();</pre>  | 
| Genera un URL prefirmato |  <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>  | 
| Crea la richiesta di download |  <pre>PresignedUrlDownloadRequest downloadRequest = <br />        new PresignedUrlDownloadRequest(presignedUrl);</pre>  |  <pre>PresignedUrlDownloadRequest downloadRequest = <br />        PresignedUrlDownloadRequest.builder()<br />            .presignedUrl(presignedUrl)<br />            .build();</pre>  | 
| Scarica per lo 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>  | 
| Scarica su 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>  | 
| Scarica con intervallo |  <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>  | 

### Download di Transfer Manager
<a name="migration-s3-presign-api-tm"></a>

La tabella seguente confronta le chiamate API v1 e v2 per i download di Transfer Manager.


| Caso d’uso | v1 |   v2 | 
| --- | --- | --- | 
| Crea il Transfer Manager |  <pre>TransferManager tm = <br />        TransferManagerBuilder.standard().build();</pre>  |  <pre>S3TransferManager tm = <br />        S3TransferManager.create();</pre>  | 
| Scarica |  <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>  | 

Per ulteriori informazioni, consulta [Scarica utilizzando un URL prefirmato](transfer-manager.md#transfer-manager-presigned-url-download).

## Modifiche di configurazione
<a name="migration-s3-presign-config"></a>

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

La tabella seguente descrive le modifiche alla configurazione del client S3 dalla v1 alla v2.


| Impostazione | v1 |   v2 | 
| --- | --- | --- | 
| Configurazione multiparte | PresignedUrlDownloadConfig.withDownloadSizePerRequest(long) | S3AsyncClient.builder().multipartConfiguration(c -> c.minimumPartSizeInBytes(...)) | 
| Intestazioni personalizzate | PresignedUrlDownloadRequest.putCustomRequestHeader(String, String) | Non supportato. Solo Range e If-Match può essere impostato al momento del download. | 

### Gestore dei trasferimenti
<a name="migration-s3-presign-config-tm"></a>

La tabella seguente descrive le modifiche alla configurazione di Transfer Manager dalla v1 alla v2.


| Impostazione | v1 |   v2 | 
| --- | --- | --- | 
| Monitoraggio dei progressi | PresignedUrlDownloadConfig.withS3progressListener(...) | PresignedDownloadFileRequest.builder().addTransferListener(...) | 
| Riprendi in caso di nuovo tentativo | PresignedUrlDownloadConfig.withResumeOnRetry(true) | Non supportata | 
| Pause/Resume | Non supportata | Non supportata | 

**Nota**  
Il client AWS CRT-based S3 (`S3AsyncClient.crtBuilder()`) attualmente non supporta l'estensione URL prefirmata. Utilizza `S3AsyncClient.builder()`.