Configuração do cliente - AWS SDK for Java 2.x

Configuração do cliente

Na 1.x, a configuração do cliente do SDK foi modificada pela configuração de uma instância de ClientConfiguration no cliente ou no builder do cliente. Na versão 2.x, a configuração do cliente é dividida em classes de configuração separadas. As classes de configuração separadas permitem configurar diferentes clientes HTTP para clientes assíncronos versus síncronos, mas ainda usam a mesma classe ClientOverrideConfiguration.

exemplo da configuração do cliente na versão 1.x
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
exemplo da configuração do cliente síncrono na versão 2.x
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder(); ApacheHttpClient.Builder httpClientBuilder = ApacheHttpClient.builder() .proxyConfiguration(proxyConfig.build()); ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder(); DynamoDbClient client = DynamoDbClient.builder() .httpClientBuilder(httpClientBuilder) .overrideConfiguration(overrideConfig.build()) .build();
exemplo da configuração do cliente assíncrono na versão 2.x
NettyNioAsyncHttpClient.Builder httpClientBuilder = NettyNioAsyncHttpClient.builder(); ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder(); ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder(); DynamoDbAsyncClient client = DynamoDbAsyncClient.builder() .httpClientBuilder(httpClientBuilder) .overrideConfiguration(overrideConfig.build()) .asyncConfiguration(asyncConfig.build()) .build();

Clientes HTTP

Alterações importantes

  • Na versão 2.x, é possível alterar qual cliente HTTP usar no runtime especificando uma implementação usando clientBuilder.httpClientBuilder.

  • Quando você passa um cliente HTTP usando clientBuilder.httpClient para um compilador de cliente de serviço, o cliente HTTP não é fechado por padrão se o cliente de serviço fecha. Isso permite compartilhar clientes HTTP entre clientes de serviço.

  • Clientes HTTP assíncronos agora usam E/S sem bloqueio.

  • Algumas operações agora usam HTTP/2 para melhorar o desempenho.

Alterações de configurações

Configuração 1.x 2.x síncrono, Apache 2.x assíncrono, Netty
ClientConfiguration clientConfig = new ClientConfiguration()
ApacheHttpClient.Builder httpClientBuilder = ApacheHttpClient.builder()
NettyNioAsyncHttpClient.Builder httpClientBuilder = NettyNioAsyncHttpClient.builder()
Máximo de conexões
clientConfig.setMaxConnections(...) clientConfig.withMaxConnections(...)
httpClientBuilder.maxConnections(...)
httpClientBuilder.maxConcurrency(...)
Tempo limite da conexão
clientConfig.setConnectionTimeout(...) clientConfig.withConnectionTimeout(...)
httpClientBuilder.connectionTimeout(...) httpClientBuilder.connectionAcquisitionTimeout(...)
httpClientBuilder.connectionTimeout(...)
Tempo limite do soquete
clientConfig.setSocketTimeout(...) clientConfig.withSocketTimeout(...)
httpClientBuilder.socketTimeout(...)
httpClientBuilder.writeTimeout(...) httpClientBuilder.readTimeout(...)
Conexão TTL
clientConfig.setConnectionTTL(...) clientConfig.withConnectionTTL(...)
httpClientBuilder.connectionTimeToLive(...)
httpClientBuilder.connectionTimeToLive(...)
Máximo de inatividade da conexão
clientConfig.setConnectionMaxIdleMillis(...) clientConfig.withConnectionMaxIdleMillis(...)
httpClientBuilder.connectionMaxIdleTime(...)
httpClientBuilder.connectionMaxIdleTime(...)
Validar após inatividade
clientConfig.setValidateAfterInactivityMillis(...) clientConfig.withValidateAfterInactivityMillis(...)
Incompatível (recurso de solicitação) Incompatível (recurso de solicitação)
Endereço local
clientConfig.setLocalAddress(...) clientConfig.withLocalAddress(...)
httpClientBuilder.localAddress(...)
Não compatível
Esperar-continuar ativado
clientConfig.setUseExpectContinue(...) clientConfig.withUseExpectContinue(...)
httpClientBuilder.expectContinueEnabled(...)
Incompatível (recurso de solicitação)
Finalizador de conexões
clientConfig.setUseReaper(...) clientConfig.withReaper(...)
httpClientBuilder.useIdleConnectionReaper(...)
httpClientBuilder.useIdleConnectionReaper(...)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .httpClientBuilder(httpClientBuilder) .build()
DynamoDbAsyncClient.builder() .httpClientBuilder(httpClientBuilder) .build()

Proxies de cliente HTTP

Configurações 1.x 2.x síncrono, Apache 2.x assíncrono, Netty
ClientConfiguration clientConfig = new ClientConfiguration()
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder()
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder()
Host do proxy
clientConfig.setProxyHost(...) clientConfig.withProxyHost(...)
proxyConfig.endpoint(...)
proxyConfig.host(...)
Porta do proxy
clientConfig.setProxyPort(...) clientConfig.withProxyPort(...)
proxyConfig.endpoint(...)

A porta proxy está incorporada no endpoint

proxyConfig.port(...)
Nome de usuário do proxy
clientConfig.setProxyUsername(...) clientConfig.withProxyUsername(...)
proxyConfig.username(...)
proxyConfig.username(...)
Senha do proxy
clientConfig.setProxyPassword(...) clientConfig.withProxyPassword(...)
proxyConfig.password(...)
proxyConfig.password(...)
Domínio do proxy
clientConfig.setProxyDomain(...) clientConfig.withProxyDomain(...)
proxyConfig.ntlmDomain(...)
Incompatível (recurso de solicitação)
Estação de trabalho do proxy
clientConfig.setProxyWorkspace(...) clientConfig.withProxyWorkstation(...)
proxyConfig.ntlmWorkstation(...)
Incompatível (recurso de solicitação)
Métodos de autenticação de proxy
clientConfig.setProxyAuthenticationMethods(...) clientConfig.withProxyAuthenticationMethods(...)

Sem suporte

Incompatível (recurso de solicitação)
Autenticação preemptiva básica de proxy
clientConfig.setPreemptiveBasicProxyAuth(...) clientConfig.withPreemptiveBasicProxyAuth(...)
proxyConfig.preemptiveBasicAuthenticationEnabled(...)
Incompatível (recurso de solicitação)
Hosts sem proxy
clientConfig.setNonProxyHosts(...) clientConfig.withNonProxyHosts(...)
proxyConfig.nonProxyHosts(...)
proxyConfig.nonProxyHosts(...)
Desativar proxy de soquete
clientConfig.setDisableSocketProxy(...) clientConfig.withDisableSocketProxy(...)
Incompatível (recurso de solicitação) Incompatível (recurso de solicitação)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
httpClientBuilder.proxyConfiguration( proxyConfig.build())
httpClientBuilder.proxyConfiguration( proxyConfig.build())

Substituições de clientes

Configuração 1.x 2.x
ClientConfiguration clientConfig = new ClientConfiguration()
ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder()
Prefixo do agente do usuário
clientConfig.setUserAgentPrefix(...) clientConfig.withUserAgentPrefix(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.USER_AGENT_PREFIX, ...)
Sufixo do agente do usuário
clientConfig.setUserAgentSuffix(...) clientConfig.withUserAgentSuffix(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.USER_AGENT_SUFFIX, ...)
Signer
clientConfig.setSignerOverride(...) clientConfig.withSignerOverride(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.SIGNER, ...)
Cabeçalhos adicionais
clientConfig.addHeader(...) clientConfig.withHeader(...)
overrideConfig.putHeader(...)
Tempo limite da solicitação
clientConfig.setRequestTimeout(...) clientConfig.withRequestTimeout(...)
overrideConfig.apiCallAttemptTimeout(...)
Tempo limite de execução de cliente
clientConfig.setClientExecutionTimeout(...) clientConfig.withClientExecutionTimeout(...)
overrideConfig.apiCallTimeout(...)
Usar Gzip
clientConfig.setUseGzip(...) clientConfig.withGzip(...)

Incompatível (recurso de solicitação)

Dicas de tamanho do buffer de soquete
clientConfig.setSocketBufferSizeHints(...) clientConfig.withSocketBufferSizeHints(...)
Incompatível (recurso de solicitação)
Metadados de resposta do cache
clientConfig.setCacheResponseMetadata(...) clientConfig.withCacheResponseMetadata(...)
Incompatível (recurso de solicitação)
Metadado do cache de metadados da resposta
clientConfig.setResponseMetadataCacheSize(...) clientConfig.withResponseMetadataCacheSize(...)
Incompatível (recurso de solicitação)
resolvedor de DNS
clientConfig.setDnsResolver(...) clientConfig.withDnsResolver(...)
Incompatível (recurso de solicitação)
keepalive de TCP
clientConfig.setUseTcpKeepAlive(...) clientConfig.withTcpKeepAlive(...)

Essa opção agora está na configuração do cliente HTTP

- ApacheHttpClient.builder().tcpKeepAlive(true) - NettyNioAsyncHttpClient.builder().tcpKeepAlive(true)
Aleatório seguro
clientConfig.setSecureRandom(...) clientConfig.withSecureRandom(...)
Incompatível (recurso de solicitação)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .overrideConfiguration(overrideConfig.build()) .build()

Novas tentativas de substituição de cliente

Configuração 1.x 2.x
ClientConfiguration clientConfig = new ClientConfiguration()
ClientOverrideConfiguration.Builder overrideConfigBuilder = ClientOverrideConfiguration.builder();
Máximo de novas tentativas em erros
clientConfig.setMaxErrorRetry(...) clientConfig.withMaxErrorRetry(...)
// Configure the default retry strategy. overrideConfigBuilder.retryStrategy(b -> b.maxAttempts(...));
Usar novas com controle de utilização
clientConfig.setUseThrottleRetries(...) clientConfig.withUseThrottleRetries(...)
Não compatível
Máximo de novas tentativas consecutivas antes do controle de utilização
clientConfig.setMaxConsecutiveRetriesBeforeThrottling(...) clientConfig.withMaxConsecutiveRetriesBeforeThrottling(...)
Não compatível
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .overrideConfiguration(overrideConfigBuilder.build()) .build(); // You also have the option to use a lambda expression to configure and // build the 'ClientOverrideConfiguration.Builder'. DynamoDbClient client = DynamoDbClient.builder() .overrideConfiguration(o -> o.retryStrategy(b -> b.maxAttempts(5))) .build();

Clientes assíncronos

Configuração 1.x 2.x
ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder()
Executor
AmazonDynamoDBAsyncClientBuilder.standard() .withExecutorFactory(...) .build()
asyncConfig.advancedOption( SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, ...)
DynamoDbAsyncClient.builder() .asyncConfiguration(asyncConfig) .build()

Outras alterações de cliente

A opção ClientConfiguration a seguir, da 1.x, foi alterada na versão 2.x do SDK e não tem um equivalente direto.

Configuração 1.x Equivalente de 2.x
Protocolo
clientConfig.setProtocol(Protocol.HTTP) clientConfig.withProtocol(Protocol.HTTP)

A configuração de protocolo é HTTPS por padrão. Para modificar a configuração, especifique a configuração do protocolo de um endpoint HTTP no compilador de cliente:

clientBuilder.endpointOverride( URI.create("http://..."))