Configurar clientes de serviço para o AWS SDK for Java 2.x externamente - AWS SDK for Java 2.x

Configurar clientes de serviço para o AWS SDK for Java 2.x externamente

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 de JVM ou em um arquivo de config compartilhado 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 do arquivo de config compartilhado são padronizadas e compartilhadas entre AWS SDKs e ferramentas para oferecer suporte a funcionalidades consistentes em diferentes linguagens de programação e aplicações. 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 AWS SDKs e ferramentas para saber como configurar a aplicação por meio desses métodos, além de detalhes sobre cada configuração entre SDKs. Consulte todas as configurações que o SDK pode resolver com base nas variáveis de ambiente, propriedades do sistema de JVM ou arquivos de configuração na Referência de configurações do Guia de referência de AWS SDKs e ferramentas.

Cadeia de provedores de configuração para configurações do cliente

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.

  2. Propriedade do sistema de JVM

  3. Variáveis de ambiente

    • Consulte mais detalhes sobre a configuração de variáveis de ambiente em variáveis de ambiente no Guia de referência de 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.

  4. Arquivos config e credentials compartilhados

  5. 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 e a cadeia de provedores de Região da AWS. 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

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 com Serviços da AWS, gerenciando 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()

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 a 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 arquivos de SDKs 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.

Variáveis de ambiente do SDK para Java 2.x e propriedades do sistema de JVM

Além das configurações cross-sdk compatíveis com a maioria dos AWS SDKs, o SDK para 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, é preferível 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

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

SYNC_HTTP_SERVICE_IMPL: identifica explicitamente a implementação HTTP síncrona 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 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