Modifications apportées à Amazon S3 Transfer Manager de la version 1 à la version 2 - 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.

Modifications apportées à Amazon S3 Transfer Manager de la version 1 à la version 2

Cette rubrique détaille les modifications apportées à Amazon S3 Transfer Manager de la version 1 (v1) à la version 2 (v2).

Changements de haut niveau

Modification v1 v2

Dépendances de Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.5871</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.21.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.28.73</version> </dependency> </dependencies>
Nom du package com.amazonaws.services.s3.transfer software.amazon.awssdk.transfer.s3
Nom de classe

TransferManager

S3TransferManager

1 Dernière version. 2 Dernière version. 3 Dernière version.

Modifications de l'API de configuration

Paramètre v1 v2

(trouvez un constructeur)

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

Client S3

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

Exécuteur

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

Arrêter les pools de threads

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
Non pris en charge. L'exécuteur fourni ne sera pas arrêté lorsque le S3 sera TransferManager fermé

Taille minimale de la pièce à télécharger

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

Seuil de téléchargement en plusieurs parties

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

Taille minimale des parties de copie

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

Seuil de copie en plusieurs parties

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

Désactiver les téléchargements parallèles

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
Désactivez les téléchargements parallèles en transmettant un client S3 standard basé sur Java au gestionnaire de transfert.
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

Calculez toujours le md5 en plusieurs parties

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
Non pris en charge.

Changements de comportement

Le transfert parallèle nécessite un client AWS S3 basé sur CRT

Dans le SDK pour Java 2.x, la fonctionnalité de transfert parallèle automatique (chargement/téléchargement en plusieurs parties) est disponible via le client S3 basé sur CRT.AWS Pour activer la fonctionnalité de transfert parallèle, vous devez ajouter explicitement la dépendance à la bibliothèque AWS Common Runtime (CRT) afin d'optimiser les performances.

Le client S3 AWS basé sur CRT S3TransferManager permet à lui seul, sans utilisation, d'optimiser les performances des transferts parallèles. S3TransferManagerLa v2 fournit des API supplémentaires qui facilitent le transfert de fichiers et de répertoires.

La capacité S3TransferManager à effectuer des transferts parallèles dépend de la manière dont S3TransferManager il est initié et de la déclaration de dépendance de la bibliothèque AWS Common Runtime (CRT).

Le tableau suivant décrit trois scénarios d'initialisation pour une S3TransferManager v2 avec et sans le AWS CRT déclaré comme dépendance.

Approche d'initialisation de S3 TransferManager v2 Le AWS CRT est-il déclaré comme dépendance ?
oui non

Initialiser le S3TransferManager sans transmettre d'instance S3AsyncClient

Méthode de création statique :

S3TransferManager.create();

- OU -

Méthode Builder :

S3TransferManager.builder().build();
Une coche verte indique que le transfert parallèle automatique est activé.

transfert parallèle automatique activé

Un X rouge indique que le transfert parallèle automatique est désactivé.

transfert parallèle automatique désactivé

Transmettre une S3AsyncClient instance construite avec l'une des méthodes du générateur crt* ()

S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder().build(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();

- OU -

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();
Une coche verte indique que le transfert parallèle automatique est activé.

transfert parallèle automatique activé

Un X rouge indique que le transfert parallèle automatique est désactivé.

erreur d'exécution

Transmettez une S3AsyncClient instance créée avec l'une des méthodes de création standard afin que le gestionnaire de transfert n'ait aucune référence au CRT

S3AsyncClient s3AsyncClient = S3AsyncClient.builder().build(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();

- OU -

S3AsyncClient s3AsyncClient = S3AsyncClient.create(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();
Un X rouge indique que le transfert parallèle automatique est désactivé.

transfert parallèle automatique désactivé

Un X rouge indique que le transfert parallèle automatique est désactivé.

transfert parallèle automatique désactivé

Téléchargement parallèle via des extractions par plage d'octets

Lorsque la fonction de transfert parallèle automatique est activée, le S3 Transfer Manager v2 utilise des extractions par plage d'octets pour récupérer des parties spécifiques de l'objet en parallèle (téléchargement en plusieurs parties). La façon dont un objet est téléchargé avec la version v2 ne dépend pas de la manière dont l'objet a été initialement chargé. Tous les téléchargements peuvent bénéficier d'un débit élevé et d'une simultanéité.

En revanche, avec S3 Transfer Manager v1, la manière dont l'objet a été initialement chargé est importante. Le S3 Transfer Manager v1 récupère les parties de l'objet de la même manière que les parties ont été téléchargées. Si un objet a été initialement chargé en tant qu'objet unique, le S3 Transfer Manager v1 n'est pas en mesure d'accélérer le processus de téléchargement en utilisant des sous-requêtes.

Comportement de défaillance

Avec S3 Transfer Manager v1, une demande de transfert de répertoire échoue si une sous-demande échoue. Contrairement à la v1, le futur renvoyé par S3 Transfer Manager v2 se termine avec succès même si certaines sous-requêtes échouent.

Par conséquent, vous devez vérifier l'absence d'erreurs dans la réponse en utilisant la CompletedDirectoryDownload.failedTransfers()méthode ou CompletedDirectoryUpload.failedTransfers()la méthode, même si le futur se termine avec succès.