View a markdown version of this page

Configurez les clients HTTP dans AWS SDK for Java 2.x - 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.

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'SdkHttpClientinterface. Un client de service synchrone, tel que le S3Client 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)

Apache5HttpClienten 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ée ApacheHttpClient par 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é ApacheHttpClient en tant que client synchrone par défaut dans la version 2.46.0 du 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.

ApacheHttpClientest construit sur Apache 4.x HttpClient. Pour plus d'informations sur la configuration duApacheHttpClient, consultezConfiguration du client Apache-based HTTP.

AwsCrtHttpClient

AwsCrtHttpClientfournit 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 AwsCrtHttpClient et 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 duUrlConnectionHttpClient, consultezConfiguration du client HTTP URLConnection basé.

Clients asynchrones

Les clients HTTP asynchrones du SDK pour Java implémentent l'interface. SdkAsyncHttpClient Un client de service asynchrone, tel que le 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)

NettyNioAsyncHttpClientest le client HTTP par défaut utilisé par les clients asynchrones. Pour plus d'informations sur la configuration duNettyNioAsyncHttpClient, consultezConfiguration du client HTTP basé sur Netty.

AwsCrtAsyncHttpClient

AwsCrtAsyncHttpClientIl est basé sur le client HTTP AWS Common Runtime (CRT). Pour plus d'informations sur la configuration duAwsCrtAsyncHttpClient, 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 :

  • javax.net.ssl.keystore

  • javax.net.ssl.key StorePassword

  • javax.net.ssl.TrustStore

  • javax.net.ssl.trust StorePassword

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 quejavax.net.ssl.keyStore)

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 :

  • javax.net.ssl.keystore

  • javax.net.ssl.key StorePassword

  • javax.net.ssl.TrustStore

  • javax.net.ssl.trust StorePassword

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.

Service client

Utilisez le générateur de client de service pour configurer le mode par défaut directement sur le client de service. L'exemple suivant définit le mode par défaut auto pour leDynamoDbClient.

DynamoDbClient ddbClient = DynamoDbClient.builder() .defaultsMode(DefaultsMode.AUTO) .build();
System property

Vous pouvez utiliser la propriété aws.defaultsMode système pour spécifier le mode par défaut. Si vous définissez la propriété système en Java, vous devez la définir avant d'initialiser un client de service.

L'exemple suivant montre comment définir le mode par défaut à l'autoaide d'une propriété système définie en Java.

System.setProperty("aws.defaultsMode", "auto");

L'exemple suivant montre comment définir le mode par défaut à auto l'aide d'une -D option de la java commande.

java -Daws.defaultsMode=auto
Environment variable

Définissez une valeur pour la variable AWS_DEFAULTS_MODE d'environnement afin de sélectionner le mode par défaut pour votre application.

Les informations suivantes indiquent la commande à exécuter pour définir la valeur du mode par défaut en auto utilisant une variable d'environnement.

Système d’exploitation Commande pour définir les variables d'environnement

Linux, macOS ou Unix

export AWS_DEFAULTS_MODE=auto

Windows

set AWS_DEFAULTS_MODE=auto
AWS config file

Vous pouvez ajouter une propriété defaults_mode de configuration au AWS config fichier partagé comme le montre l'exemple suivant.

[default] defaults_mode = auto

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.