View a markdown version of this page

Esegui la migrazione dei download di URL prefirmati da AWS SDK per Java da v1 a v2 - AWS SDK for Java 2.x

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 per Java da v1 a v2

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 per Java Per informazioni sulle funzionalità di download di URL prefirmati v2, consulta. Lavora con Amazon S3 URL prefirmati

High-level modifiche

L'elenco seguente riassume le principali differenze tra v1 e v2 per i download di URL prefirmati:

  • Package: com.amazonaws.services.s3software.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

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

Modifica v1   v2

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

1 Ultima versione sul sito Web di Maven Central. 2 Ultima versione disponibile sul sito Web di Maven Central.

Modifiche all'API

Download del client S3

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

Caso d’uso v1   v2
Creazione del client
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
S3AsyncClient s3AsyncClient = S3AsyncClient.create(); AsyncPresignedUrlExtension extension = s3AsyncClient.presignedUrlExtension();
Genera un URL prefirmato
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();
Crea la richiesta di download
PresignedUrlDownloadRequest downloadRequest = new PresignedUrlDownloadRequest(presignedUrl);
PresignedUrlDownloadRequest downloadRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .build();
Scarica per lo streaming
PresignedUrlDownloadResult result = s3Client.download(downloadRequest); InputStream content = result.getS3Object() .getObjectContent();
ResponseBytes<GetObjectResponse> bytes = extension.getObject(downloadRequest, AsyncResponseTransformer.toBytes()) .join();
Scarica su file
s3Client.download(downloadRequest, new File("/tmp/file.bin"));
extension.getObject(downloadRequest, Paths.get("/tmp/file.bin")) .join();
Scarica con intervallo
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();

Download di Transfer Manager

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
TransferManager tm = TransferManagerBuilder.standard().build();
S3TransferManager tm = S3TransferManager.create();
Scarica
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();

Per ulteriori informazioni, consulta Scarica utilizzando un URL prefirmato.

Modifiche di configurazione

Client S3

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

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