As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar proxies HTTP
Você pode configurar proxies HTTP usando código, definindo propriedades do sistema Java ou definindo variáveis de ambiente.
Configurar no código
Você configura proxies no código com um builder ProxyConfiguration específico do cliente ao criar o cliente de serviço. O código a seguir mostra um exemplo de configuração de proxy para um cliente HTTP baseado em Apache que é usado por um cliente de serviço do 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();
A seção de cada cliente HTTP neste tópico mostra um exemplo de configuração de proxy.
Configurar proxies HTTP com configurações externas
Mesmo que você não use explicitamente um compilador ProxyConfiguration no código, o SDK procura configurações externas para definir uma configuração de proxy padrão.
Por padrão, o SDK primeiro pesquisa as propriedades do sistema de JVM. Se pelo menos uma propriedade for encontrada, o SDK usará o valor e quaisquer outros valores de propriedade do sistema. Se nenhuma propriedade do sistema estiver disponível, o SDK procurará variáveis de ambiente proxy.
O SDK pode usar as seguintes propriedades do sistema Java e variáveis de ambiente.
| Propriedades do sistema | Descrição | Suporte do cliente HTTP |
|---|---|---|
|
http.proxyHost |
Nome do host do servidor proxy HTTP |
Todos |
|
http.proxyPort |
Número da porta do servidor proxy HTTP |
Todos |
| http.proxyUser |
Nome de usuário para autenticação de proxy HTTP |
Todos |
|
http.proxyPassword |
Senha para autenticação de proxy HTTP |
Todos |
| http.nonProxyHosts |
Lista de hosts que devem ser acessados diretamente, contornando o proxy. Essa lista também é válida quando o HTTPS é usado |
Todos |
| https.proxyHost |
Nome do host do servidor proxy HTTPS |
Netty, CRT |
|
https.proxyPort |
Número da porta do servidor proxy HTTPS |
Netty, CRT |
| https.proxyUser |
Nome de usuário para autenticação de proxy HTTPS |
Netty, CRT |
| https.proxyPassword | Senha para autenticação de proxy HTTPS | Netty, CRT |
| Variável de ambiente | Descrição | Suporte do cliente HTTP |
|---|---|---|
| HTTP_PROXY1 |
Um URL válido com um esquema de HTTP |
Todos |
|
HTTPS_PROXY1 |
Um URL válido com um esquema de HTTPS |
Netty, CRT |
| NO_PROXY2 |
Lista de hosts que devem ser acessados diretamente, contornando o proxy. A lista é válida tanto para HTTP quanto para HTTPS. |
Todos |
Tudo: todos os clientes HTTP oferecidos pelo SDK: UrlConnectionHttpClient, ApacheHttpClient, NettyNioAsyncHttpClient e AwsCrtAsyncHttpClient.
Netty: o cliente HTTP baseado em Netty (NettyNioAsyncHttpClient).
CRT: os clientes HTTP baseados no AWS CRT (AwsCrtHttpClient e AwsCrtAsyncHttpClient).
1A variável de ambiente consultada, seja HTTP_PROXY ou HTTPS_PROXY, depende da configuração do esquema na ProxyConfiguration do cliente. O esquema padrão é HTTP. O seguinte trecho mostra como alterar o esquema para HTTPS usado para resolução de variáveis de ambiente.
SdkHttpClient httpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .build()) .build();
2A variável de ambiente NO_PROXY permite uma combinação de separadores “|” e “,” entre nomes de host. Os nomes de host podem incluir o caractere curinga “*”.
Usar uma combinação de configurações
É possível usar uma combinação de configurações de proxy HTTP no código, nas propriedades do sistema e nas variáveis de ambiente.
exemplo – configuração fornecida por uma propriedade do sistema e pelo código
// 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();
O SDK resolve as seguintes configurações de proxy.
Host = localhost Port = 1234 Password = SYS_PROP_password UserName = username Non ProxyHost = null
exemplo – as propriedades do sistema e as variáveis de ambiente estão disponíveis
Cada compilador do ProxyConfiguration de cliente HTTP oferece configurações chamadas useSystemPropertyValues e useEnvironmentVariablesValues. Por padrão, ambas as configurações são true. Quando true, o SDK usa automaticamente valores de propriedade do sistema ou variáveis de ambiente para opções que não são fornecidas pelo compilador ProxyConfiguration.
Importante
Propriedades do sistema têm precedência sobre variáveis de ambiente. Se uma propriedade do sistema de proxy HTTP for encontrada, o SDK recuperará todos os valores das propriedades do sistema e nenhum das variáveis de ambiente. Se você quiser priorizar as variáveis de ambiente em relação às propriedades do sistema, defina useSystemPropertyValues como false.
Neste exemplo, as seguintes configurações estão disponíveis no runtime:
// 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"
O cliente do serviço é criado com uma das declarações a seguir. Nenhuma das declarações define explicitamente uma configuração de proxy.
DynamoDbClient client = DynamoDbClient.create(); DynamoDbClient client = DynamoDbClient.builder().build(); DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .build()) .build()) .build();
As configurações de proxy a seguir são resolvidas pelo SDK:
Host = SYS_PROP_HOST.com Port = 2222 Password = SYS_PROP_PASSWORD UserName = SYS_PROP_USER Non ProxyHost = null
Como o cliente de serviço tem configurações de proxy padrão, o SDK pesquisa as propriedades do sistema e, depois, as variáveis de ambiente. Como as configurações de propriedades do sistema têm precedência sobre as variáveis de ambiente, o SDK usa somente propriedades do sistema.
Se o uso das propriedades do sistema for alterado para false conforme mostrado no código a seguir, o SDK resolverá somente as variáveis de ambiente.
DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build()) .build();
As configurações de proxy resolvidas usando HTTP são:
Host = ENV_VAR_HOST Port = 3333 Password = EnvironmentPassword UserName = EnvironmentUser Non ProxyHost = environmentnonproxy.host, environmentnonproxy2.host:1234