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é 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 |
| 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.comcorrespond à la fois au domaine racine (example.com) et aux sous-domaines (par exemple,api.example.com). -
ApacheNetty, et clients URLConnection basés :
*.example.comcorrespond uniquement aux sous-domaines. Le domaine racineexample.comne 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 ( |
Honoré |
Honoré |
|
Premier joker () |
Honoré (sous-domaines uniquement) |
Honoré (domaine racine et sous-domaines) |
|
Un joker simple () |
Honoré |
Honoré |
|
Plage CIDR () |
Honoré |
Honoré |