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. S3TransferManager
v2 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.