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.
Configurez les clients HTTP dans AWS SDK for Java 2.x
Vous pouvez modifier le client HTTP à utiliser pour votre client de service ainsi que modifier la configuration par défaut pour les clients HTTP à l'aide du AWS SDK for Java 2.x. Cette section décrit les clients HTTP et les paramètres du SDK.
Clients HTTP disponibles dans le SDK pour Java
Clients synchrones
Les clients HTTP synchrones du SDK pour Java implémentent l'SdkHttpClientS3Client ou leDynamoDbClient, nécessite l'utilisation d'un client HTTP synchrone. AWS SDK pour Java Il propose trois clients HTTP synchrones.
- Apache5HttpClient (par défaut)
-
Apache5HttpClient
en est une version mise ApacheHttpClientà jour basée sur Apache 5.x HttpClient. La version 5.x est la version activement maintenue par Apache. Elle améliore la version précédente utiliséeApacheHttpClientpar en apportant une compatibilité avec l'écosystème Java moderne, notamment la prise en charge des threads virtuels pour Java 21 et une flexibilité de journalisation améliorée via SLF4J.Apache5HttpClientremplacéApacheHttpClienten tant que client synchrone par défaut dans la version2.46.0du AWS SDK pour Java 2.x. Il possède une API et des fonctionnalités identiques, ce qui en fait un produit de remplacement idéal. Pour plus d'informations sur la configuration duApache5HttpClient, consultezConfiguration du client HTTP basé sur Apache 5.x. - ApacheHttpClient
-
Note
ApacheHttpClientest obsolète car Apache HttpClient 4.x est en mode maintenance. Utilisez la version basée sur Apache5HttpClient Apache HttpClient 5.x.ApacheHttpClient
est construit sur Apache 4.x HttpClient. Pour plus d'informations sur la configuration du ApacheHttpClient, consultezConfiguration du client Apache-based HTTP. - AwsCrtHttpClient
-
AwsCrtHttpClient
fournit des E/S à haut débit et non bloquantes. Il est construit sur le client HTTP AWS Common Runtime (CRT). Pour plus d'informations sur la configuration AwsCrtHttpClientet l'utilisation de celui-ci avec les clients de service, consultezConfiguration de clients AWS HTTP basés sur CRT. - UrlConnectionHttpClient
-
Pour minimiser le nombre de fichiers JAR et de bibliothèques tierces utilisés par votre application, vous pouvez utiliser le UrlConnectionHttpClient
. Pour plus d'informations sur la configuration du UrlConnectionHttpClient, consultezConfiguration du client HTTP URLConnection basé.
Clients asynchrones
Les clients HTTP asynchrones du SDK pour Java implémentent l'interface. SdkAsyncHttpClient S3AsyncClient ou leDynamoDbAsyncClient, nécessite l'utilisation d'un client HTTP asynchrone. AWS SDK pour Java Il propose deux clients HTTP asynchrones.
- NettyNioAsyncHttpClient (par défaut)
-
NettyNioAsyncHttpClient
est le client HTTP par défaut utilisé par les clients asynchrones. Pour plus d'informations sur la configuration du NettyNioAsyncHttpClient, consultezConfiguration du client HTTP basé sur Netty. - AwsCrtAsyncHttpClient
-
AwsCrtAsyncHttpClient
Il est basé sur le client HTTP AWS Common Runtime (CRT). Pour plus d'informations sur la configuration du AwsCrtAsyncHttpClient, consultezConfiguration de clients AWS HTTP basés sur CRT.
Recommandations relatives aux clients HTTP
Plusieurs facteurs entrent en jeu lorsque vous choisissez l'implémentation d'un client HTTP. Utilisez les informations suivantes pour vous aider à prendre une décision.
Comparaison des clients HTTP
Le tableau suivant fournit des informations détaillées pour chaque client HTTP.
| client HTTP | Synchronisation ou asynchronisation | Quand l’utiliser | Limitation/drawback |
|---|---|---|---|
| Client HTTP basé sur Apache 5.x (client HTTP de synchronisation par défaut) |
Sync | Utilisez-le si vous préférez une faible latence au haut débit | Temps de démarrage plus lent par rapport aux autres clients HTTP |
| URLConnection-based client HTTP | Sync | Utilisez-le si vous avez des exigences strictes pour limiter les dépendances à des tiers |
• Ne prend pas en charge la méthode HTTP PATCH, requise par certaines API, telles que les opérations de mise à jour d'Amazon APIGateway • Ne prend pas en charge un délai d'inactivité configurable pour la connexion. Consultez la section Configuration du client URLConnection-based HTTP pour plus de détails. |
| AWS CRT-based client HTTP de synchronisation 1 | Sync |
• Utilisez-le si votre application s'exécute dans AWS Lambda • Utilisez-le si vous préférez un débit élevé à une faible latence • Utilisez-le si vous préférez synchroniser les clients du SDK |
Les propriétés système Java suivantes ne sont pas prises en charge :
|
| Netty-based client HTTP (client HTTP asynchrone par défaut) |
Asynchrone |
• Utilisez-le si votre application s'appuie sur les propriétés du système Java pour la configuration TLS (telles que |
Temps de démarrage plus lent par rapport aux autres clients HTTP |
| AWS CRT-based client HTTP asynchrone 1 | Asynchrone | • Utilisez-le si votre application s'exécute dans AWS Lambda • Utilisez-le si vous préférez un débit élevé à une faible latence • Utilisez-le si vous préférez les clients SDK asynchrones |
Les propriétés système Java suivantes ne sont pas prises en charge :
|
1 En raison de leurs avantages supplémentaires, nous vous recommandons d'utiliser les clients AWS CRT-based HTTP si possible.
Paramètres de configuration intelligents par défaut
La AWS SDK for Java 2.x (version 2.17.102 ou ultérieure) offre une fonctionnalité de configuration par défaut intelligente. Cette fonctionnalité optimise deux propriétés du client HTTP ainsi que d'autres propriétés qui n'affectent pas le client HTTP.
Les valeurs par défaut de la configuration intelligente définissent des valeurs sensibles pour les tlsNegotiationTimeoutInMillis propriétés connectTimeoutInMillis et en fonction d'une valeur de mode par défaut que vous fournissez. Vous choisissez la valeur du mode par défaut en fonction des caractéristiques de votre application.
Pour plus d'informations sur les paramètres par défaut de configuration intelligente et sur la manière de choisir la valeur de mode par défaut la mieux adaptée à vos applications, consultez le Guide de référence des AWS kits de développement logiciel et des outils.
Vous trouverez ci-dessous quatre méthodes pour définir le mode par défaut de votre application.
Si vous définissez le mode par défaut de manière globale à l'aide de la propriété système, de la variable d'environnement ou du fichier de AWS configuration, vous pouvez modifier les paramètres lorsque vous créez un client HTTP.
Lorsque vous créez un client HTTP à l'aide de httpClientBuilder() cette méthode, les paramètres s'appliquent uniquement à l'instance que vous créez. Un exemple de ceci est illustré ici. Dans cet exemple, le client Netty-based HTTP remplace toutes les valeurs de mode par défaut définies globalement pour connectTimeoutInMillis ettlsNegotiationTimeoutInMillis.