

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
<a name="http-configuration"></a>

Vous pouvez modifier le client HTTP à utiliser pour votre client de service et 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 for Java
<a name="http-clients-available"></a>

### Clients synchrones
<a name="http-config-sync"></a>

Les clients HTTP synchrones du SDK for Java [SdkHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/SdkHttpClient.html)implémentent l'interface. Un client de service synchrone, tel que le `S3Client` ou le`DynamoDbClient`, nécessite l'utilisation d'un client HTTP synchrone. AWS SDK pour Java Il propose trois clients HTTP synchrones.

**ApacheHttpClient (par défaut)**  
[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)est le client HTTP par défaut pour les clients de service synchrones. Pour plus d'informations sur la configuration du`ApacheHttpClient`, consultez[Configuration du client HTTP basé sur Apache](http-configuration-apache.md). 

**AwsCrtHttpClient**  
[AwsCrtHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtHttpClient.html)fournit un débit élevé et des E/S non bloquantes. Il est basé sur le client HTTP AWS Common Runtime (CRT). Pour plus d'informations sur la configuration du `AwsCrtHttpClient` et son utilisation avec les clients de service, consultez[Configuration de clients AWS HTTP basés sur CRT](http-configuration-crt.md).

**UrlConnectionHttpClient**  
Pour minimiser le nombre de fichiers JAR et de bibliothèques tierces utilisés par votre application, vous pouvez utiliser le [UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html). Pour plus d'informations sur la configuration du`UrlConnectionHttpClient`, consultez[Configuration du client HTTP URLConnection basé](http-configuration-url.md).

**Apache 5 HttpClient**  
[Apache5 HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html) est une version mise à jour `ApacheHttpClient` qui est 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 en apportant la compatibilité avec l'écosystème Java moderne, notamment le support des threads virtuels pour Java 21, et une flexibilité de journalisation améliorée grâce à SLF4 J. `Apache5HttpClient` sera remplacé en `ApacheHttpClient` tant que client synchrone par défaut dans une future version du AWS SDK pour Java 2.x. `ApacheHttpClient` Il possède une API et des fonctionnalités identiques, ce qui le rend idéal comme remplacement immédiat. Pour plus d'informations sur la configuration du`Apache5HttpClient`, consultez[Configuration du client HTTP basé sur Apache 5.x](http-configuration-apache5.md).

### Clients asynchrones
<a name="http-config-async"></a>

Les clients HTTP asynchrones du SDK for Java implémentent l'interface. [SdkAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/async/SdkAsyncHttpClient.html) Un client de service asynchrone, tel que le `S3AsyncClient` ou le`DynamoDbAsyncClient`, nécessite l'utilisation d'un client HTTP asynchrone. AWS SDK pour Java Il propose deux clients HTTP asynchrones.

**NettyNioAsyncHttpClient (par défaut)**  
[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)est le client HTTP par défaut utilisé par les clients asynchrones. Pour plus d'informations sur la configuration du`NettyNioAsyncHttpClient`, consultez[Configuration du client HTTP basé sur Netty](http-configuration-netty.md).

**AwsCrtAsyncHttpClient**  
[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)Il est basé sur le client HTTP AWS Common Runtime (CRT). Pour plus d'informations sur la configuration du`AwsCrtAsyncHttpClient`, consultez[Configuration de clients AWS HTTP basés sur CRT](http-configuration-crt.md). 

## Recommandations relatives aux clients HTTP
<a name="http-clients-recommend"></a>

Plusieurs facteurs entrent en jeu lorsque vous choisissez une implémentation de client HTTP. Utilisez les informations suivantes pour vous aider à prendre une décision.

### Organigramme des recommandations
<a name="http-clients-recommend-flowchart"></a>

L'organigramme suivant fournit des conseils généraux pour vous aider à déterminer le client HTTP à utiliser.

![\[Organigramme des recommandations du client HTTP.\]](http://docs.aws.amazon.com/fr_fr/sdk-for-java/latest/developer-guide/images/JavaDevGuide-HTTPflowchart-DI.png)


### Comparaison des clients HTTP
<a name="http-clients-recommend-compare"></a>

Le tableau suivant fournit des informations détaillées pour chaque client HTTP. 


| Client HTTP | Synchronisation ou asynchrone | Quand l’utiliser | Limitation/inconvénient | 
| --- | --- | --- | --- | 
|  Client HTTP basé sur Apache *(client HTTP de synchronisation par défaut)*  | Sync | Utilisez-le si vous préférez une faible latence à un débit élevé  | Temps de démarrage plus lent par rapport aux autres clients HTTP | 
| Client HTTP basé sur URLConnection | Sync | Utilisez-le si vous avez des exigences strictes en matière de limitation des dépendances avec des tiers | Ne prend pas en charge la méthode HTTP PATCH, requise par certaines API telles que les opérations Amazon APIGateway Update | 
| AWS Client HTTP de synchronisation basé sur CRT 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 les clients du SDK de synchronisation  |  Les propriétés système Java suivantes ne sont pas prises en charge : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sdk-for-java/latest/developer-guide/http-configuration.html)  | 
|  Client HTTP basé sur Netty *(client HTTP asynchrone par défaut)*  | Asynchrone |  • Utilisez-le si votre application APIs invoque un support HTTP/2, tel que l'API Kinesis [SubscribeToShard](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_SubscribeToShard.html)  | Temps de démarrage plus lent par rapport aux autres clients HTTP | 
|  AWS Client HTTP asynchrone basé sur CRT 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 |  • Ne prend pas en charge les clients de service qui ont besoin du support HTTP/2, tels que et `KinesisAsynClient` `TranscribeStreamingAsyncClient` Les propriétés système Java suivantes ne sont pas prises en charge : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/sdk-for-java/latest/developer-guide/http-configuration.html)  | 

1 En raison de leurs avantages supplémentaires, nous vous recommandons d'utiliser les clients HTTP AWS basés sur CRT si possible.

## Paramètres de configuration intelligents par défaut
<a name="http-config-smart-defaults"></a>

La AWS SDK for Java 2.x (version 2.17.102 ou ultérieure) propose une fonctionnalité de configuration intelligente par défaut. 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 paramètres par défaut de configuration intelligente définissent des valeurs raisonnables pour les `tlsNegotiationTimeoutInMillis` propriétés `connectTimeoutInMillis` et en fonction de la valeur du 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 de configuration intelligents par défaut 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 AWS SDKs and Tools](https://docs.aws.amazon.com/sdkref/latest/guide/feature-smart-config-defaults.html).

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 sur `auto` pour le`DynamoDbClient`.

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

------
#### [ System property ]

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

L'exemple suivant montre comment définir le mode par défaut à l'`auto`aide 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 à l'`auto`aide d'une variable d'environnement.


| Système d’exploitation | Commande pour définir les variables d'environnement | 
| --- | --- | 
|  Linux, macOS ou Unix  | export AWS\$1DEFAULTS\$1MODE=auto | 
|  Windows  | set AWS\$1DEFAULTS\$1MODE=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 globalement à l'aide de la propriété système, de la variable d'environnement ou du fichier de AWS configuration, vous pouvez remplacer les paramètres lorsque vous créez un client HTTP. 

Lorsque vous créez un client HTTP avec `httpClientBuilder()` cette méthode, les paramètres s'appliquent uniquement à l'instance que vous créez. Vous en trouverez un exemple [ici](http-configuration-netty.md#http-config-netty-one-client). Dans cet exemple, le client HTTP basé sur Netty remplace toutes les valeurs de mode par défaut définies globalement pour et. `connectTimeoutInMillis` `tlsNegotiationTimeoutInMillis`