Änderungen in Amazon S3 Transfer Manager von Version 1 zu Version 2 - 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.

Änderungen in Amazon S3 Transfer Manager von Version 1 zu Version 2

In diesem Thema werden die Änderungen im Amazon S3 Transfer Manager von Version 1 (v1) auf Version 2 (v2) beschrieben.

Änderungen auf hoher Ebene

Änderung v1 v2

Maven-Abhängigkeiten

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.6911</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.27.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> // Add the following if using the // AWS CRT-based S3 client. <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.29.143</version> </dependency> </dependencies>
Package name com.amazonaws.services.s3.transfer software.amazon.awssdk.transfer.s3
Class name

TransferManager

S3TransferManager

1 Letzte Version. 2 Letzte Version. 3 Letzte Version.

Konfigurationsänderungen

Die Konfigurationsänderungen, die Sie für den v2-Transfermanager vornehmen müssen, hängen davon ab, welchen S3-Client Sie verwenden. Sie haben die Wahl zwischen dem AWS CRT basierten S3-Client oder dem standardmäßigen, auf Java basierenden asynchronen S3-Client. Informationen zu den Unterschieden finden Sie im Thema. S3-Clients in der AWS SDK for Java 2.x

Use the AWS CRT-based S3 client
Einstellung v1 v2 — Transfer Manager unter Verwendung eines AWS CRT basierten S3-Clients

(hol dir einen Builder)

TransferManagerBuilder tmBuilder = TransferManagerBuilder.standard();
S3TransferManager.Builder tmBuilder = S3TransferManager.builder();

S3-Klient

tmBuilder.withS3Client(...); tmBuilder.setS3Client(...);
tmBuilder.s3Client(...);

Testamentsvollstrecker

tmBuilder.withExecutorFactory(...); tmBuilder.setExecutorFactory(...);
tmBuilder.executor(...);

Threadpools herunterfahren

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
Nicht unterstützt Der bereitgestellte Executor wird nicht heruntergefahren, wenn der S3TransferManager geschlossen wird

Minimale Größe des Upload-Teils

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

Schwellenwert für mehrteiliges Hochladen

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

Minimale Größe des Kopierteils

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

Schwellenwert für mehrteiliges Kopieren

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

parallel Downloads deaktivieren

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
Deaktivieren Sie parallel Downloads, indem Sie einen standardmäßigen Java-basierten S3-Client mit deaktiviertem Multipart (Standard) an den Transfermanager übergeben.
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

Berechne immer mehrteiliges MD5

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
Nicht unterstützt
Use Java-based S3 async client
Einstellung v1 v2 — Transfer Manager mit einem Java-basierten asynchronen S3-Client

(hol dir einen Builder)

TransferManagerBuilder tmBuilder = TransferManagerBuilder.standard();
S3TransferManager.Builder tmBuilder = S3TransferManager.builder();

S3-Klient

tmBuilder.withS3Client(...); tmBuilder.setS3Client(...);
tmBuilder.s3Client(...);

Testamentsvollstrecker

tmBuilder.withExecutorFactory(...); tmBuilder.setExecutorFactory(...);
tmBuilder.executor(...);

Threadpools herunterfahren

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
Nicht unterstützt Der bereitgestellte Executor wird nicht heruntergefahren, wenn der S3TransferManager geschlossen wird

Minimale Größe des Upload-Teils

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.minimumPartSizeInBytes(...)).build(); tmBuilder.s3Client(s3);

Schwellenwert für mehrteiliges Hochladen

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.thresholdInBytes(...)).build(); tmBuilder.s3Client(s3);

Minimale Größe des Kopierteils

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.minimumPartSizeInBytes(...)).build(); tmBuilder.s3Client(s3);

Schwellenwert für mehrteiliges Kopieren

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.builder() .multipartConfiguration(cfg -> cfg.thresholdInBytes(...)).build(); tmBuilder.s3Client(s3);

parallel Downloads deaktivieren

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
Deaktivieren Sie parallel Downloads, indem Sie einen standardmäßigen Java-basierten S3-Client mit deaktiviertem Multipart (Standard) an den Transfermanager übergeben.
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

Berechne immer mehrteiliges MD5

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
Nicht unterstützt

Das Verhalten ändert sich

Anforderungen für parallele Übertragungen

In Java 2.x ist die SDK automatische parallel Übertragungsfunktion (mehrteiliger Upload/Download) über den S3-Client und den AWS CRT Java-basierten S3-Async-Client verfügbar. Um den AWS CRT basierten S3-Client zu verwenden, müssen Sie die Bibliotheksabhängigkeit AWS Common Runtime (CRT) explizit hinzufügen, um die Leistung zu maximieren. Um den Java-basierten asynchronen S3-Client mit aktiviertem Multipart zu verwenden, müssen Sie die AT-Version verwenden SDK 2.25.X <TODO> oder höher.

Der AWS CRT S3-Client allein — ohne ihn zu verwenden S3TransferManager — bietet eine maximale Leistung bei parallel Übertragungen. S3TransferManagerv2 bietet zusätzliche FunktionenAPIs, die das Übertragen von Dateien und Verzeichnissen erleichtern.

Paralleler Download über Bytebereichs-Abrufe

Wenn die automatische parallele Übertragung aktiviert ist, verwendet der S3 Transfer Manager v2 Bytebereichsabrufe, um bestimmte Teile des Objekts parallel abzurufen (mehrteiliger Download). Die Art und Weise, wie ein Objekt mit Version 2 heruntergeladen wird, hängt nicht davon ab, wie das Objekt ursprünglich hochgeladen wurde. Alle Downloads können von hohem Durchsatz und Parallelität profitieren.

Im Gegensatz dazu spielt es bei S3 Transfer Manager v1 eine Rolle, wie das Objekt ursprünglich hochgeladen wurde. Der S3 Transfer Manager v1 ruft die Teile des Objekts auf die gleiche Weise ab, wie die Teile hochgeladen wurden. Wenn ein Objekt ursprünglich als einzelnes Objekt hochgeladen wurde, ist der S3 Transfer Manager v1 nicht in der Lage, den Download-Vorgang mithilfe von Unteranfragen zu beschleunigen.

Verhalten bei Fehlern

Bei S3 Transfer Manager v1 schlägt eine Verzeichnisübertragungsanforderung fehl, wenn eine Unteranforderung fehlschlägt. Im Gegensatz zu Version 1 wird die von S3 Transfer Manager v2 zurückgegebene future erfolgreich abgeschlossen, auch wenn einige Unteranforderungen fehlschlagen.

Daher sollten Sie die Antwort auf Fehler überprüfen, indem Sie die CompletedDirectoryDownload.failedTransfers()Methode oder CompletedDirectoryUpload.failedTransfers()Methode verwenden, auch wenn die future erfolgreich abgeschlossen wurde.