View a markdown version of this page

Migrieren Sie vorsignierte URL-Downloads von AWS SDK für Java v1 auf v2 - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrieren Sie vorsignierte URL-Downloads von AWS SDK für Java v1 auf v2

Migrieren Sie Ihren vorsignierten URL-Download-Code, um die asynchrone Verarbeitung zu nutzen und auf erweiterte Download-Optionen in Version 2 zuzugreifen. Dieses Thema zeigt, wie Sie von Version 1.x (v1) auf Version 2.x (v2) von migrieren. AWS SDK für Java Informationen zu den Download-Funktionen für vorsignierte URLs der Version v2 finden Sie unter. Arbeite mit Amazon S3 vorsignierte URLs

High-level Änderungen

In der folgenden Liste sind die wichtigsten Unterschiede zwischen Version 1 und Version 2 für vorsignierte URL-Downloads zusammengefasst:

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

  • Client-Klasse: AmazonS3 (synchron) → S3AsyncClient (asynchron).

  • Architektur: Synchrone blockierende Aufrufe → Asynchrone Aufrufe mit. CompletableFuture

  • Mehrteilig: Nur über Transfer Manager verfügbar → Direkt auf dem Client verfügbar mit. multipartEnabled(true)

  • Übertragungsmanager: Nur Dateiziel → Datei, Byte oder benutzerdefinierter Transformator.

Änderungen an Abhängigkeiten, Paketen und Klassennamen

Die folgende Tabelle zeigt die Änderungen der Abhängigkeiten und Klassennamen von Version 1 zu Version 2.

Änderungen v1   v2

Maven-Abhängigkeiten

<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>
Package name com.amazonaws.services.s3 software.amazon.awssdk.services.s3
Klassennamen AmazonS3, TransferManager S3AsyncClient, S3TransferManager

1 Letzte Version auf der Maven Central-Website. 2 Letzte Version auf der Maven Central-Website.

API-Änderungen

S3-Client-Downloads

In der folgenden Tabelle werden die API-Aufrufe der Versionen 1 und 2 für S3-Client-Downloads verglichen.

Anwendungsfall v1   v2
Erstellen des Clients
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
S3AsyncClient s3AsyncClient = S3AsyncClient.create(); AsyncPresignedUrlExtension extension = s3AsyncClient.presignedUrlExtension();
Generieren Sie eine vorsignierte URL
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();
Erstellen Sie die Download-Anfrage
PresignedUrlDownloadRequest downloadRequest = new PresignedUrlDownloadRequest(presignedUrl);
PresignedUrlDownloadRequest downloadRequest = PresignedUrlDownloadRequest.builder() .presignedUrl(presignedUrl) .build();
Zum Streamen herunterladen
PresignedUrlDownloadResult result = s3Client.download(downloadRequest); InputStream content = result.getS3Object() .getObjectContent();
ResponseBytes<GetObjectResponse> bytes = extension.getObject(downloadRequest, AsyncResponseTransformer.toBytes()) .join();
In eine Datei herunterladen
s3Client.download(downloadRequest, new File("/tmp/file.bin"));
extension.getObject(downloadRequest, Paths.get("/tmp/file.bin")) .join();
Mit Reichweite herunterladen
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();

Transfer Manager lädt herunter

In der folgenden Tabelle werden API-Aufrufe der Versionen 1 und 2 für Transfer Manager-Downloads verglichen.

Anwendungsfall v1   v2
Erstellen Sie den Transfer Manager
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();

Weitere Informationen finden Sie unter Über eine vorsignierte URL herunterladen.

Konfigurationsänderungen

S3-Client

In der folgenden Tabelle werden die Änderungen der S3-Client-Konfiguration von Version 1 auf Version 2 beschrieben.

Einstellung v1   v2
Mehrteilige Konfiguration PresignedUrlDownloadConfig.withDownloadSizePerRequest(long) S3AsyncClient.builder().multipartConfiguration(c -> c.minimumPartSizeInBytes(...))
Benutzerdefinierte Header PresignedUrlDownloadRequest.putCustomRequestHeader(String, String) Nicht unterstützt Nur Range und If-Match kann beim Herunterladen festgelegt werden.

Übertragungsmanager

In der folgenden Tabelle werden die Änderungen der Transfer Manager-Konfiguration von Version 1 auf Version 2 beschrieben.

Einstellung v1   v2
Verfolgung des Fortschritts PresignedUrlDownloadConfig.withS3progressListener(...) PresignedDownloadFileRequest.builder().addTransferListener(...)
Bei erneuter Prüfung fortsetzen PresignedUrlDownloadConfig.withResumeOnRetry(true) Nicht unterstützt
Pause/Resume Nicht unterstützt Nicht unterstützt
Anmerkung

Der AWS CRT-based S3-Client (S3AsyncClient.crtBuilder()) unterstützt derzeit die vorsignierte URL-Erweiterung nicht. Verwenden Sie S3AsyncClient.builder().