Utiliser un client S3 performant : client S3 AWS CRT basé sur un client S3 - 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.

Utiliser un client S3 performant : client S3 AWS CRT basé sur un client S3

Le client S3 AWS CRT basé sur le AWS Common Runtime (CRT) est un client asynchrone S3 alternatif. Il transfère des objets vers et depuis Amazon Simple Storage Service (Amazon S3) avec des performances et une fiabilité améliorées en utilisant automatiquement le API téléchargement en plusieurs parties et les extractions par plage d'octets d'Amazon S3.

Le client AWS CRT basé sur S3 améliore la fiabilité des transferts en cas de panne du réseau. La fiabilité est améliorée en réessayant les différentes parties défaillantes d'un transfert de fichiers sans recommencer le transfert depuis le début.

En outre, le client S3 AWS CRT basé sur S3 améliore le regroupement des connexions et l'équilibrage de charge du système de noms de domaine (DNS), ce qui améliore également le débit.

Vous pouvez utiliser le client S3 AWS CRT basé sur le système à la place SDK du client asynchrone S3 standard et profiter immédiatement de son débit amélioré.

AWS CRTcomposants basés dans le SDK

Le client AWS CRT basé sur S3, décrit dans cette rubrique, et le HTTPclient AWS CRT basé sur leSDK.

Le client AWS CRT basé sur S3 est une implémentation de l'AsyncClientinterface S3 et est utilisé pour travailler avec le service Amazon S3. Il s'agit d'une alternative à l'implémentation Java de l'S3AsyncClientinterface et offre plusieurs avantages.

Le HTTPclient AWS CRT basé est une implémentation de l'SdkAsyncHttpClientinterface et est utilisé pour HTTP la communication générale. Il s'agit d'une alternative à l'implémentation Netty de l'SdkAsyncHttpClientinterface et offre plusieurs avantages.

Bien que les deux composants utilisent des bibliothèques issues du AWS Common Runtime, le client S3 AWS CRT basé sur S3 utilise la bibliothèque aws-c-s 3 et prend en charge les API fonctionnalités de téléchargement partitionné S3. Le HTTP client AWS CRT basé étant destiné à un usage général, il ne prend pas en charge les API fonctionnalités de téléchargement partitionné S3.

Ajoutez des dépendances pour utiliser le client S3 AWS CRT basé

Pour utiliser le client S3 AWS CRT basé sur S3, ajoutez les deux dépendances suivantes à votre fichier de projet Maven. L'exemple montre les versions minimales à utiliser. Recherchez dans le référentiel central Maven les versions les plus récentes des artefacts s3 et aws-crt.

<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.27.21</version> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.30.11</version> </dependency>

Création d'une instance du client S3 AWS CRT basé

Créez une instance du client S3 AWS CRT basé sur les paramètres par défaut, comme indiqué dans l'extrait de code suivant.

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();

Pour configurer le client, utilisez le générateur de AWS CRT clients. Vous pouvez passer du client asynchrone S3 standard au client AWS CRT basé en modifiant la méthode du générateur.

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_WEST_2) .targetThroughputInGbps(20.0) .minimumPartSizeInBytes(8 * 1025 * 1024L) .build();
Note

Certains paramètres du générateur standard ne sont peut-être pas actuellement pris en charge dans le générateur AWS CRT client. Obtenez le constructeur standard en appelantS3AsyncClient#builder().

Utiliser le client S3 AWS CRT basé

Utilisez le client S3 AWS CRT basé sur Amazon S3 pour appeler les API opérations Amazon S3. L'exemple suivant illustre les GetObjectopérations PutObjectet disponibles via le AWS SDK for Java.

import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.PutObjectResponse; S3AsyncClient s3Client = S3AsyncClient.crtCreate(); // Upload a local file to Amazon S3. PutObjectResponse putObjectResponse = s3Client.putObject(req -> req.bucket(<BUCKET_NAME>) .key(<KEY_NAME>), AsyncRequestBody.fromFile(Paths.get(<FILE_NAME>))) .join(); // Download an object from Amazon S3 to a local file. GetObjectResponse getObjectResponse = s3Client.getObject(req -> req.bucket(<BUCKET_NAME>) .key(<KEY_NAME>), AsyncResponseTransformer.toFile(Paths.get(<FILE_NAME>))) .join();

Limitations relatives à la configuration

Le client S3 AWS CRT basé sur Java et le client asynchrone S3 offrent des fonctionnalités comparables, le client S3 AWS CRT basé sur Java offrant un avantage en termes de performances. Cependant, le client S3 AWS CRT basé sur Java ne possède pas les paramètres de configuration dont dispose le client asynchrone S3 basé sur Java. Ces paramètres sont les suivants :

  • Configuration au niveau du client : délai d'expiration des tentatives d'APIappel, intercepteurs d'exécution de compression, éditeurs de métriques, attributs d'exécution personnalisés, options avancées personnalisées, service d'exécution planifié personnalisé, en-têtes personnalisés

  • Configuration au niveau de la demande : signataires personnalisés, fournisseurs d'informations d'identification, délai d'expiration des tentatives d'appel API

Pour une liste complète des différences de configuration, consultez la API référence.

Client asynchrone S3 basé sur Java AWS CRTclient S3 basé sur
Configurations au niveau du client

Configurations au niveau de la demande

Configurations au niveau du client

Aucune configuration au niveau de la demande