View a markdown version of this page

Migrer les téléchargements d'URL pré-signés depuis AWS SDK pour Java v1 à v2 - AWS SDK for Java 2.x

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Migrer les téléchargements d'URL pré-signés depuis AWS SDK pour Java v1 à v2

Migrez votre code de téléchargement URL pré-signé pour utiliser le traitement asynchrone et accéder à des options de téléchargement étendues dans la version 2. Cette rubrique explique comment migrer de la version 1.x (v1) vers la version 2.x (v2) du. AWS SDK pour Java Pour plus d'informations sur les fonctionnalités de téléchargement d'URL pré-signées v2, consultezTravaillez avec Amazon S3 URL pré-signées.

High-level modifications

La liste suivante résume les principales différences entre la version 1 et la version 2 pour les téléchargements d'URL pré-signés :

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

  • Classe de client : AmazonS3 (synchrone) → S3AsyncClient (asynchrone).

  • Architecture : Blocage synchrone des appels → Appels asynchrones avec. CompletableFuture

  • Multipart : Disponible uniquement via Transfer Manager → Disponible directement sur le client avecmultipartEnabled(true).

  • Gestionnaire de transfert : Destination du fichier uniquement → Fichier, octets ou transformateur personnalisé.

Modifications des dépendances, des packages et des noms de classe

Le tableau suivant montre les changements de dépendance et de nom de classe entre v1 et v2.

Modifier v1   v2

Dépendances de 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>
Nom du package com.amazonaws.services.s3 software.amazon.awssdk.services.s3
Noms des classes AmazonS3, TransferManager S3AsyncClient, S3TransferManager

1 Dernière version sur le site Web de Maven Central. 2 Dernière version sur le site Web de Maven Central.

Modifications de l'API

Téléchargements du client S3

Le tableau suivant compare les appels d'API v1 et v2 pour les téléchargements de clients S3.

Cas d’utilisation v1   v2
Créer le client
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
S3AsyncClient s3AsyncClient = S3AsyncClient.create(); AsyncPresignedUrlExtension extension = s3AsyncClient.presignedUrlExtension();
Génération d'une URL pré-signée
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();
Créez la demande de téléchargement
PresignedUrlDownloadRequest downloadRequest = new PresignedUrlDownloadRequest(presignedUrl);
PresignedUrlDownloadRequest downloadRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .build();
Télécharger pour diffuser
PresignedUrlDownloadResult result = s3Client.download(downloadRequest); InputStream content = result.getS3Object() .getObjectContent();
ResponseBytes<GetObjectResponse> bytes = extension.getObject(downloadRequest, AsyncResponseTransformer.toBytes()) .join();
Télécharger vers un fichier
s3Client.download(downloadRequest, new File("/tmp/file.bin"));
extension.getObject(downloadRequest, Paths.get("/tmp/file.bin")) .join();
Télécharger avec gamme
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();

Téléchargements de Transfer Manager

Le tableau suivant compare les appels d'API v1 et v2 pour les téléchargements de Transfer Manager.

Cas d’utilisation v1   v2
Création du gestionnaire de transferts
TransferManager tm = TransferManagerBuilder.standard().build();
S3TransferManager tm = S3TransferManager.create();
Download
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();

Pour de plus amples informations, veuillez consulter Téléchargement à l'aide d'une URL pré-signée.

Configuration changes

Client S3

Le tableau suivant décrit les modifications apportées à la configuration du client S3 de la v1 à la v2.

Paramètre v1   v2
Configuration en plusieurs parties PresignedUrlDownloadConfig.withDownloadSizePerRequest(long) S3AsyncClient.builder().multipartConfiguration(c -> c.minimumPartSizeInBytes(...))
En-têtes personnalisés PresignedUrlDownloadRequest.putCustomRequestHeader(String, String) Non pris en charge. Uniquement Range et If-Match paramétrable au moment du téléchargement.

Gestionnaire des transferts

Le tableau suivant décrit les modifications apportées à la configuration de Transfer Manager de la version v1 à la version v2.

Paramètre v1   v2
Suivi des progrès PresignedUrlDownloadConfig.withS3progressListener(...) PresignedDownloadFileRequest.builder().addTransferListener(...)
Reprendre en cas de nouvelle tentative PresignedUrlDownloadConfig.withResumeOnRetry(true) Non pris en charge
Pause/Resume Non pris en charge Non pris en charge
Note

Le client AWS CRT-based S3 (S3AsyncClient.crtBuilder()) ne prend actuellement pas en charge l'extension d'URL pré-signée. Utilisez S3AsyncClient.builder().