View a markdown version of this page

Configuration des proxys HTTP - 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.

Configuration des proxys HTTP

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

Vous configurez les proxys dans le code à l'aide d'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 Apache-based HTTP 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.

Configuration des proxys HTTP avec des paramètres externes

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 cette valeur et toutes les autres valeurs de propriété système. Si aucune propriété système n'est disponible, le SDK recherche les variables d'environnement proxy.

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

Propriétés du système Java
Propriété du système Description Prise en charge des clients HTTP

Http.ProxyHost

Nom d'hôte du serveur proxy HTTP

Tous

Port proxy HTTP

Numéro de port du serveur proxy HTTP

Tous

Utilisateur http.proxy

Nom d'utilisateur pour l'authentification par proxy HTTP

Tous

Mot de passe http.proxy

Mot de passe pour l'authentification par proxy HTTP

Tous

http : .non ProxyHosts

Liste des hôtes qui doivent être contactés directement, en contournant le proxy. Cette liste est également valide lorsque HTTPS est utilisé.

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 Prise en charge des clients 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

NO_PROXY 2

Liste des hôtes qui doivent être contactés directement, en contournant le proxy. La liste est valide pour HTTP et HTTPS.

Tous

Tous  : tous les clients HTTP proposés par le SDK—UrlConnectionHttpClient,, ApacheHttpClientNettyNioAsyncHttpClient,AwsCrtAsyncHttpClient.

Netty - Le client Netty-based HTTP (NettyNioAsyncHttpClient).

CRT - Les clients AWS CRT-based HTTP, (AwsCrtHttpClientetAwsCrtAsyncHttpClient).

1 La variable d'environnement demandée dépend du paramètre HTTPS_PROXY de schéma défini dans celui du client. HTTP_PROXY 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_PROXYenvironnement prend en charge une combinaison de séparateurs « | » et «, » entre les noms d'hôtes. Pour les formats de caractères génériques pris en charge, consultezcomportement non ProxyHosts joker.

Utilisez une combinaison de paramètres

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

Exemple— 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
Exemple— 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 etuseEnvironmentVariablesValues. Par défaut, les deux paramètres sont définis surtrue. Lorsquetrue, 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.

Important

Les propriétés du système ont priorité sur les variables d'environnement. Si une propriété système de proxy HTTP est trouvée, le SDK extrait toutes les valeurs des propriétés du système et aucune des variables d'environnement. Si vous souhaitez donner la priorité aux variables d'environnement par rapport useSystemPropertyValues aux propriétés du système, définissez surfalse.

Pour 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éé à l'aide de l'une des instructions suivantes. Aucune des instructions ne définit explicitement de 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 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

comportement non ProxyHosts joker

AvecnonProxyHosts, vous pouvez spécifier les hôtes qui contournent le proxy. Définissez cette valeur via le ProxyConfiguration générateur, la propriété http.nonProxyHosts système ou la variable d'NO_PROXYenvironnement. Chaque source prend en charge les formats d'entrée suivants.

  • Hôte exact  : example.com (correspond uniquement à l'hôte spécifié)

  • Premier joker  : *.example.com (correspond au domaine et à tous les sous-domaines)

  • Caractère générique simple  : * (contourne tous les hôtes)

  • Plage d'adresses CIDR  : 10.0.0.0/8 (correspond à toutes les adresses IP de la plage)

Différences de comportement entre les clients HTTP

Le type de client HTTP et la source d'entrée affectent deux comportements de correspondance importants.

Comparaison des entrées du générateur avec les paramètres externes

Lorsque vous fournissez des entrées génériques (*.example.comou*) via les addNonProxyHost(String) méthodes nonProxyHosts(Set) ou du ProxyConfiguration générateur, les caractères génériques ne fonctionnent qu'avec les clients AWS CRT-based HTTP (AwsCrtHttpClientetAwsCrtAsyncHttpClient).

Les clients URLConnection basés sur ApacheNetty, et renvoient un PatternSyntaxException champ pour les entrées génériques que vous fournissez via le générateur.

Lorsque les entrées proviennent de la propriété http.nonProxyHosts système ou de la variable d'NO_PROXYenvironnement, les caractères génériques fonctionnent avec tous les clients.

Important

Si vous avez besoin de caractères génériques pour fonctionner sur tous les clients HTTP, utilisez la propriété http.nonProxyHosts système ou la variable d'NO_PROXYenvironnement au lieu du générateur.

Root-domain correspondance pour les principales entrées joker

Les AWS CRT-based clients et les autres clients HTTP gèrent le *.example.com modèle différemment :

  • CRT-based clients  : *.example.com correspond à la fois au domaine racine (example.com) et aux sous-domaines (par exemple,api.example.com).

  • ApacheNetty, et clients URLConnection basés  : *.example.com correspond uniquement aux sous-domaines. Le domaine racine example.com ne correspond pas et le SDK l'achemine via le proxy.

Résumé du comportement des caractères génériques par source d'entrée

Le tableau suivant résume le comportement de correspondance lorsque vous fournissez des entrées via la propriété http.nonProxyHosts système ou la variable d'NO_PROXYenvironnement. Tous les clients acceptent les caractères génériques provenant de ces sources.

Format d'entrée Non-CRT clients (ApacheNetty, etURLConnection) CRT-based clients

Hôte exact (example.com)

Honoré

Honoré

Premier joker () *.example.com

Honoré (sous-domaines uniquement)

Honoré (domaine racine et sous-domaines)

Un joker simple () *

Honoré

Honoré

Plage CIDR () 10.0.0.0/8

Honoré

Honoré