

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.

# Configuration des proxys HTTP
<a name="http-config-proxy-support"></a>

Vous pouvez configurer les proxys HTTP à l'aide de code, en définissant les propriétés du système Java ou en définissant des variables d'environnement.

## Configurer dans le code
<a name="http-config-proxy-support-in-code"></a>

Vous configurez les proxys dans le code avec un `ProxyConfiguration` générateur spécifique au client lorsque vous créez le client de service. Le code suivant montre un exemple de configuration de proxy pour un client HTTP basé sur Apache utilisé par un client de service Amazon S3.

```
SdkHttpClient httpClient1 = ApacheHttpClient.builder()
    .proxyConfiguration(ProxyConfiguration.builder()
        .endpoint(URI.create("http://proxy.example.com"))
        .username("username")
        .password("password")
        .addNonProxyHost("localhost")
        .build())
    .build();

S3Client s3Client = S3Client.builder()
    .httpClient(httpClient)
    .build();
```

La section de cette rubrique consacrée à chaque client HTTP présente un exemple de configuration de proxy.
+ [Client HTTP Apache](http-configuration-apache.md#http-configuration-apache-proxy-conf-ex)
+ [URLConnectionclient HTTP basé sur](http-configuration-url.md#http-configuration-url-proxy-conf-ex)
+ [Client HTTP basé sur Netty](http-configuration-netty.md#http-config-netty-proxy-ex)
+ [AWS Client HTTP basé sur CRT](http-configuration-crt.md#http-config-crt-proxy-ex)

## Configuration de proxys HTTP avec des paramètres externes
<a name="http-config-proxy-support-external"></a>

Même si vous n'utilisez pas explicitement de `ProxyConfiguration` générateur dans le code, le SDK recherche des paramètres externes pour configurer une configuration de proxy par défaut. 

Par défaut, le SDK recherche d'abord les propriétés du système JVM. Si une seule propriété est trouvée, le SDK utilise la valeur et toutes les autres valeurs des propriétés du système. Si aucune propriété système n'est disponible, le SDK recherche les variables d'environnement du proxy.

Le SDK peut utiliser les propriétés du système Java et les variables d'environnement suivantes.


**Propriétés du système Java**  

| Propriété du système | Description | Support client HTTP | 
| --- | --- | --- | 
| Http.ProxyHost | Nom d'hôte du serveur proxy HTTP | Tous | 
| Http.ProxyPort | Numéro de port du serveur proxy HTTP | Tous | 
| Http.ProxyUser | Nom d'utilisateur pour l'authentification par proxy HTTP | Tous | 
| HTTP.ProxyPassword | Mot de passe pour l'authentification par proxy HTTP | Tous | 
| http. nonProxyHosts | Liste des hôtes auxquels il faut accéder directement, en contournant le proxy. [Cette liste est également valide lorsque le protocole HTTPS est utilisé](https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html). | Tous | 
| Https.proxyHost | Nom d'hôte du serveur proxy HTTPS | Netty, CRT | 
| Https.ProxyPort | Numéro de port du serveur proxy HTTPS | Netty, CRT | 
| Https.proxyUser | Nom d'utilisateur pour l'authentification par proxy HTTPS | Netty, CRT | 
| HTTPS.ProxyPassword | Mot de passe pour l'authentification par proxy HTTPS | Netty, CRT | 


**Variables d’environnement**  

| Variable d'environnement | Description | Support client HTTP | 
| --- | --- | --- | 
| PROXY\_HTTP 1 | Une URL valide avec un schéma HTTP | Tous | 
| HTTPS\_PROXY 1 | Une URL valide avec un schéma HTTPS | Netty, CRT | 
| AUCUN PROXY 2 | Liste des hôtes auxquels il faut accéder directement, en contournant le proxy. La liste est valide pour HTTP et HTTPS. | Tous | 

### Afficher les clés et les notes de bas de page
<a name="http-config-proxy-support-ext-key-footnote"></a>

**Tous** : tous les clients HTTP proposés par le SDK—`UrlConnectionHttpClient`,, `ApacheHttpClient``NettyNioAsyncHttpClient`,`AwsCrtAsyncHttpClient`.

**Netty** - Le client HTTP basé sur Netty (). `NettyNioAsyncHttpClient`

**CRT** - Les clients HTTP AWS basés sur CRT, (et)`AwsCrtHttpClient`. `AwsCrtAsyncHttpClient`

1 La variable d'environnement demandée, qu'elle soit `HTTP_PROXY` ou non`HTTPS_PROXY`, dépend du paramètre du schéma défini dans celui du client. `ProxyConfiguration` Le schéma par défaut est HTTP. L'extrait suivant montre comment modifier le schéma en HTTPS utilisé pour la résolution des variables d'environnement.

```
SdkHttpClient httpClient = ApacheHttpClient.builder()
    .proxyConfiguration(ProxyConfiguration.builder()
        .scheme("https")
        .build())
    .build();
```

2 La variable d'`NO_PROXY`environnement prend en charge une combinaison de séparateurs « \| » et «, » entre les noms d'hôtes. Les noms d'hôtes peuvent inclure le caractère générique « \* ».

## Utiliser une combinaison de paramètres
<a name="http-config-proxy-support-combo"></a>

Vous pouvez utiliser une combinaison de paramètres de proxy HTTP dans le code, les propriétés du système et les variables d'environnement. 

**Example — configuration fournie par une propriété du système et par un code**  

```
// Command line with the proxy password set as a system property.
$ java -Dhttp.proxyPassword=SYS_PROP_password -cp ... App

// Since the 'useSystemPropertyValues' setting is 'true' (the default), the SDK will supplement 
// the proxy configuration in code with the 'http.proxyPassword' value from the system property.
SdkHttpClient apacheHttpClient = ApacheHttpClient.builder()
            .proxyConfiguration(ProxyConfiguration.builder()
                    .endpoint(URI.create("http://localhost:1234"))
                    .username("username")
                    .build())
            .build();

// Use the apache HTTP client with proxy configuration.
DynamoDbClient dynamoDbClient = DynamoDbClient.builder()
                    .httpClient(apacheHttpClient)
                    .build();
```
Le SDK résout les paramètres de proxy suivants.  

```
Host = localhost
Port = 1234
Password = SYS_PROP_password
UserName = username
Non ProxyHost = null
```

**Example — les propriétés du système et les variables d'environnement sont disponibles**  
Le `ProxyConfiguration` générateur de chaque client HTTP propose des paramètres nommés `useSystemPropertyValues` et`useEnvironmentVariablesValues`. Par défaut, les deux paramètres sont`true`. Lorsque `true` le SDK utilise automatiquement les valeurs des propriétés du système ou des variables d'environnement pour les options qui ne sont pas fournies par le `ProxyConfiguration` générateur.  
Les propriétés du système ont priorité sur les variables d'environnement. Si une propriété du système proxy HTTP est détectée, le SDK extrait ***toutes les*** valeurs des propriétés du système et aucune des variables d'environnement. Si vous souhaitez hiérarchiser les variables d'environnement par rapport `useSystemPropertyValues` aux propriétés du système, définissez sur`false`.
Dans cet exemple, les paramètres suivants sont disponibles au moment de l'exécution :  

```
// System properties 
http.proxyHost=SYS_PROP_HOST.com
http.proxyPort=2222
http.password=SYS_PROP_PASSWORD
http.user=SYS_PROP_USER

// Environment variables 
HTTP_PROXY="http://EnvironmentUser:EnvironmentPassword@ENV_VAR_HOST:3333"
NO_PROXY="environmentnonproxy.host,environmentnonproxy2.host:1234"
```
Le client de service est créé avec l'une des instructions suivantes. Aucune des instructions ne définit explicitement un paramètre de proxy.  

```
DynamoDbClient client = DynamoDbClient.create();
DynamoDbClient client = DynamoDbClient.builder().build();
DynamoDbClient client = DynamoDbClient.builder()
    .httpClient(ApacheHttpClient.builder()
        .proxyConfiguration(ProxyConfiguration.builder()
            .build())
        .build())
    .build();
```
Les paramètres de proxy suivants sont résolus par le SDK :  

```
Host = SYS_PROP_HOST.com
Port = 2222
Password = SYS_PROP_PASSWORD
UserName = SYS_PROP_USER
Non ProxyHost = null
```
Comme le client de service possède des paramètres de proxy par défaut, le SDK recherche les propriétés du système, puis les variables d'environnement. Étant donné que les paramètres des propriétés du système ont priorité sur les variables d'environnement, le SDK utilise uniquement les propriétés du système.  
Si l'utilisation des propriétés du système est modifiée `false` comme indiqué dans le code suivant, le SDK résout uniquement les variables d'environnement.  

```
DynamoDbClient client = DynamoDbClient.builder()
    .httpClient(ApacheHttpClient.builder()
        .proxyConfiguration(ProxyConfiguration.builder()
            .useSystemPropertyValues(Boolean.FALSE)
            .build())
        .build())
    .build();
```
Les paramètres de proxy résolus à l'aide du protocole HTTP sont les suivants :  

```
Host = ENV_VAR_HOST
Port = 3333
Password = EnvironmentPassword
UserName = EnvironmentUser
Non ProxyHost = environmentnonproxy.host, environmentnonproxy2.host:1234
```