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 em código para o AWS SDK for Java 2.x
Como alternativa — ou além de — configurar clientes de serviço externamente, você pode configurá-los programaticamente em código.
Ao configurar clientes de serviço em código, você obtém um controle refinado das muitas opções disponíveis para você. A maioria das configurações que você pode definir externamente também está disponível para você definir no código.
Configuração básica em código
Por exemplo, o trecho a seguir define o Região da AWS valor de um cliente EU_SOUTH_2
de serviço Amazon S3 em código:
S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .build();
O trecho anterior mostra o método estático de fábrica,. builder()
O método builder()
retorna um objeto builder
que permite personalizar o cliente de serviço. Os métodos setter fluentes retornam o builder
objeto — nesse caso, uma S3ClientBuilder
build()
para criar o cliente.
Configuração avançada no código
O trecho a seguir mostra opções adicionais de configuração:
ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder( ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build()) ).build();
No trecho anterior, você pode ver vários pontos de entrada para configurar um cliente de serviço:
-
Um
ClientOverrideConfiguration.Builder
objetoque fornece opções de configuração comuns a todos os clientes do serviço. Essas configurações são comportamentos AWS específicos, independentes de qualquer implementação HTTP. -
Configuração do cliente HTTP por meio de uma implementação separada do construtor de clientes HTTP. Esse
é um exemplo. O cliente de serviço fornece oApacheHttpClient.Builder
httpClientBuilder()
método para associar o cliente HTTP configurado ao cliente de serviço. -
Métodos no próprio construtor de clientes
, como region()
ecredentialsProvider()
Em vez de criar objetos separados e depois passá-los para os métodos do cliente de serviço, ele AWS SDK for Java 2.x fornece métodos que aceitam expressões lambda para criar esses objetos em linha. Os métodos de configuração no construtor têm o mesmo nome, mas têm assinaturas diferentes. Por exemplo:
A configuração do cliente S3 mostrada anteriormente usando essa abordagem pode ser feita em um bloco de código:
S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(b -> b .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create())) .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build())) .build();
Opções de configuração indisponíveis no código
Como a configuração a seguir afeta os processos fundamentais de inicialização no SDK, você pode definir as seguintes configurações somente externamente e não no código:
Configurações de localização do arquivo
Essas configurações controlam a localização dos arquivos de configuração e credenciais compartilhados e não podem ser substituídas programaticamente depois que o SDK os carrega:
-
AWS_CONFIG_FILE (variável de ambiente)/aws.configFile (propriedade do sistema JVM)
-
AWS_SHARED_CREDENTIALS_FILE (variável de ambiente) /aws. sharedCredentialsFile (propriedade do sistema JVM)
Essas configurações devem ser definidas antes que o SDK carregue os arquivos de configuração, pois elas determinam onde o SDK procura a configuração. Depois que o SDK é inicializado, a alteração desses valores não tem efeito.
Desativação do serviço de metadados de instância
-
AWS_EC2_METADATA_DISABLED (variável de ambiente) /aws.disableEC2Metadata (propriedade do sistema JVM)
Essa configuração controla se o SDK tenta usar o Serviço de Metadados da EC2 Instância. Depois que o SDK for inicializado, você não poderá alterar essa configuração programaticamente.
Seleção de perfil
-
AWS_PROFILE(variável de ambiente)/aws.profile (propriedade do sistema JVM)
Essa configuração informa ao SDK qual perfil carregar dos arquivos compartilhados de configuração e credenciais. Depois de carregado, a alteração desse valor não tem efeito.
Caminhos de credenciais de contêineres
-
AWS_CONTAINER_CREDENCIAIS_URI RELATIVO
-
AWS_CONTAINER_CREDENCIAIS_URI COMPLETO
-
AWS_CONTAINER_TOKEN DE AUTORIZAÇÃO
-
AWS_CONTAINER_ARQUIVO_TOKEN_DE AUTORIZAÇÃO
Você usa essas variáveis de ambiente para informar ao SDK como buscar credenciais dos serviços de contêiner. Depois que a cadeia de fornecedores de credenciais for estabelecida durante a inicialização do cliente de serviço, você não poderá alterar essas configurações.
Seleção de implementação HTTP padrão
-
SYNC_HTTP_SERVICE_IMPL (variável de ambiente)/software.amazon.awssdk.http.service.impl (propriedade do sistema JVM)
-
ASYNC_HTTP_SERVICE_IMPL (variável de ambiente)/software.amazon.awssdk.http.async.service.impl (propriedade do sistema JVM)
Essas configurações globais determinam qual implementação de cliente HTTP o SDK usa para todos os clientes de serviço, a menos que seja substituída no código para clientes de serviço individuais. Você deve defini-las antes que o SDK inicialize seus clientes HTTP e não possam ser alteradas posteriormente.