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 S3S3AsyncClient
interface et offre plusieurs avantages.
Le HTTPclient AWS CRT basé est une implémentation de l'SdkAsyncHttpClientSdkAsyncHttpClient
interface 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
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
<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 GetObject
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 |