

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á.

# Configurando clientes de serviço para o exterior AWS SDK for Java 2.x
<a name="configuring-service-clients-ext"></a>

Muitas configurações podem ser gerenciadas fora do código. Quando você gerencia a configuração externamente, ela pode ser aplicada a todas as aplicações no mesmo processo do Java. A maioria das configurações pode ser definida como variáveis de ambiente, propriedades do sistema JVM ou em um arquivo compartilhado AWS `config` separado. O arquivo de `config` compartilhado pode manter conjuntos separados de configurações, chamados de perfis, para fornecer configurações diferentes para ambientes ou testes distintos.

A maioria das variáveis de ambiente e configurações de `config` arquivos compartilhados são padronizadas e compartilhadas entre AWS SDKs ferramentas para oferecer suporte à funcionalidade consistente em diferentes linguagens de programação e aplicativos. Na maioria dos casos, as propriedades do sistema JVM que o SDK para Java pode usar espelham as variáveis de ambiente.

Consulte o *[Guia de referência de ferramentas AWS SDKs e ferramentas](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html)* para saber como configurar seu aplicativo por meio desses métodos, além de detalhes sobre cada configuração de SDK cruzado. Para ver todas as configurações que o SDK pode resolver a partir das variáveis de ambiente, propriedades do sistema JVM ou arquivos de configuração, consulte a referência de [configurações no AWS SDKs Guia de referência](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html) de *ferramentas*.

## Cadeia de provedores de configuração para configuração do cliente
<a name="configuration-provider-chain"></a>

O SDK verifica vários locais (ou fontes) para encontrar valores de configuração.

1. Qualquer configuração explícita definida no código ou no próprio cliente de serviço tem precedência sobre qualquer outra coisa.

1. Propriedade do sistema de JVM
   + *Para obter detalhes sobre a configuração das propriedades do sistema JVM, consulte [Como definir as propriedades do sistema JVM](https://docs.aws.amazon.com/sdkref/latest/guide/jvm-system-properties.html#jvm-sys-props-set) no Guia de referência de ferramentas AWS SDKs .*

1. Variáveis de ambiente
   + Para obter detalhes sobre a configuração de variáveis de ambiente, consulte [variáveis de ambiente](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.
   + Observe que você pode configurar variáveis de ambiente para um shell em diferentes níveis de escopo: em todo o sistema, em todo o usuário e para uma sessão de terminal específica.

1. Arquivos `config` e `credentials` compartilhados
   + Para obter detalhes sobre a configuração desses arquivos, consulte [Compartilhados `config` e `credentials` arquivos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.

1. Qualquer valor padrão fornecido pelo próprio código fonte do SDK é usado por último.
   + Algumas propriedades, como região, não têm um padrão. Você deve especificá-los explicitamente no código, em uma configuração de ambiente ou no arquivo de `config` compartilhado. Se o SDK não conseguir resolver a configuração necessária, as solicitações de API podem falhar no runtime.

Além dessa cadeia de configuração geral, o SDK para Java 2.x também usa cadeias de provedores especializados, incluindo a [cadeia de provedores de credenciais](credentials-chain.md) e a [cadeia de provedores de Região da AWS](region-selection.md#default-region-provider-chain). Essas cadeias especializadas adicionam provedores que levam em conta o ambiente em que o SDK está sendo executado. Por exemplo, em um contêiner ou uma instância do EC2.

## Criar um cliente de serviço configurado usando configurações externas
<a name="create-client-ext-conf"></a>

Você precisa criar um cliente de serviço na aplicação para se comunicar com um AWS service (Serviço da AWS). Os clientes de serviço são sua conexão essencial Serviços da AWS, lidando com todos os detalhes complexos da comunicação para que você não precise se preocupar com eles. Eles cuidam de tarefas importantes, como segurança, gerenciamento de erros e novas tentativas automáticas, permitindo que você se concentre na criação da aplicação em vez de lidar com complicações técnicas.

### Usar o método `create()`
<a name="create-client-ext-builder"></a>

Se todas as configurações necessárias vierem de fontes externas, você poderá criar um cliente de serviço com um método simples:

```
S3Client s3Client = S3Client.create();
```

O trecho de código anterior cria uma instância `S3Client`. Durante a criação, o SDK examina as configurações na cadeia de provedores de configuração. Depois que o SDK encontrar um valor de configuração, ele será usado mesmo que exista uma configuração posterior na cadeia.

Por exemplo, suponha que um usuário defina a configuração da JVM para o Região da AWS definindo a propriedade do sistema. `-Daws.region=us-west-2` Se a variável de ambiente `AWS_REGION` também for definida, seu valor será ignorado.

A cadeia de provedores da região padrão e a cadeia de provedores de credenciais padrão também serão usadas no processo de criação. Em algum lugar da cadeia, o SDK deve resolver a Região da AWS para usar e encontrar configurações permitam recuperar credenciais para solicitações de assinatura. Se os SDKs arquivos encontrarem esses valores, a criação do cliente falhará.

Embora seja possível criar um cliente usando esse padrão de compilador vazio, ele costuma ser usado quando você quer [adicionar configuração no código](configuring-service-clients-code.md#conf-service-client-code-basic).

## Variáveis de ambiente do SDK para Java 2.x e propriedades do sistema de JVM
<a name="java-ext-config"></a>

Além das [configurações cross-sdk](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#settingsPages) suportadas pela maioria AWS SDKs, o SDK for Java 2.x fornece as seguintes configurações.

**nota**  
Essas variáveis de ambiente e propriedades do sistema de JVM são destinadas principalmente a casos de uso avançados, testes ou cenários de implantação específicos. Na maioria dos códigos de aplicações, é mais indicado usar as opções de configuração programática fornecidas pelos compiladores de clientes do SDK para melhor segurança de tipos e suporte ao IDE.

### Variáveis de ambiente do provedor de credenciais de contêiner
<a name="java-cred-profvider-envars"></a>

Além das variáveis de ambiente de credenciais de contêiner padrão documentadas no guia de referência, o SDK também oferece suporte a:

`AWS_CONTAINER_SERVICE_ENDPOINT`: essa variável de ambiente especifica o endpoint do serviço de metadados do contêiner ao usar o provedor de credenciais do contêiner.

Propriedades do sistema Java: `aws.containerServiceEndpoint`

Valor padrão: `http://169.254.170.2`

### Variáveis de ambiente de implementação do cliente HTTP
<a name="java-http-cli-impl-envars"></a>

`SYNC_HTTP_SERVICE_IMPL`: identifica explicitamente a [implementação HTTP síncrona](http-configuration.md#http-config-sync) padrão que o SDK usará. Isso é útil quando há várias implementações no caminho de classe ou como uma otimização de desempenho, pois a descoberta da implementação exige a verificação do caminho de classe.

Propriedades do sistema Java: `software.amazon.awssdk.http.service.impl`

`ASYNC_HTTP_SERVICE_IMPL`: identifica explicitamente a [implementação HTTP assíncrona](http-configuration.md#http-config-async) padrão que o SDK usará. Isso é útil quando há várias implementações no caminho de classe ou como uma otimização de desempenho, pois a descoberta da implementação exige a verificação do caminho de classe.

Propriedades do sistema Java: `software.amazon.awssdk.http.async.service.impl`