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, também é possível configurá-los programaticamente no código.
Ao configurar clientes de serviço no código, você obtém um controle refinado das várias opções disponíveis. A maioria das configurações que você pode definir externamente também está disponível para definir no código.
Configuração básica no 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 retornam o objeto builder (nesse caso, uma instância do S3ClientBuilderbuild() para criar o cliente.
Configuração avançada no código
O trecho a seguir mostra opções de configuração adicionais:
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, é possível ver vários pontos de entrada para configurar um cliente de serviço:
-
Um objeto
ClientOverrideConfiguration.Builderque fornece opções de configuração comuns a todos os clientes de 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 compilador de clientes HTTP.
é um exemplo. O cliente de serviço fornece o métodoApacheHttpClient.BuilderhttpClientBuilder()para associar o cliente HTTP configurado ao cliente de serviço. -
Métodos no próprio compilador 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 compilador têm o mesmo nome, mas têm assinaturas diferentes. Por exemplo:
A configuração do cliente do 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, é possível definir as seguintes configurações somente externamente e não no código:
Configurações de localização de arquivo
Essas configurações controlam a localização dos arquivos de configuração e credenciais compartilhados e não podem ser substituídas programaticamente após o carregamento do SDK:
-
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 estabelecidas antes que o SDK carregue os arquivos de configuração, pois elas definem onde o SDK deve procurar a configuração. Depois que o SDK é inicializado, a alteração desses valores não tem efeito.
Desativação do serviço de metadados da instância
-
AWS_EC2_METADATA_DISABLED (variável de ambiente) /aws.disableEC2Metadata (propriedade do sistema JVM)
Essa configuração controla se o SDK deve tentar usar o Serviço de Metadados de Instância do EC2. Após a inicialização do SDK, não é possível alterar essa configuração programaticamente.
Exclusã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 de configuração e credenciais compartilhados. Depois de carregado, a alteração desse valor não tem efeito.
Caminhos da credencial do contêiner
-
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 provedores de credenciais for estabelecida durante a inicialização do cliente de serviço, não será possível 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 de JVM)
-
ASYNC_HTTP_SERVICE_IMPL (variável de ambiente) / software.amazon.awssdk.http.async.service.impl (propriedade do sistema de JVM)
Essas configurações globais definem qual implementação de cliente HTTP o SDK deve usar para todos os clientes de serviço, a menos que seja substituída no código para clientes de serviço individuais. Isso deve ser definido antes que o SDK inicialize os clientes HTTP e não é possível fazer alterações posteriormente.