Configuración de cliente - AWS SDK for Java 2.x

Configuración de cliente

En la versión 1.x, la configuración del cliente del SDK se modificaba estableciendo una instancia ClientConfiguration en el cliente o en el compilador de clientes. En la versión 2.x, la configuración del cliente se divide en clases de configuración independientes. Con las clases de configuración separadas, puede configurar diferentes clientes HTTP para clientes asíncronos frente a síncronos, pero seguir utilizando la misma clase ClientOverrideConfiguration.

ejemplo de configuración del cliente en la versión 1.x
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
ejemplo de configuración de clientes síncronos en la versión 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();
ejemplo de configuración de clientes asíncronos en la versión 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 de HTTP

Cambios destacados

  • En la versión 2.x, puede cambiar qué cliente de HTTP desea usar en tiempo de ejecución especificando una implementación mediante clientBuilder.httpClientBuilder.

  • Al pasar un cliente de HTTP mediante clientBuilder.httpClient a un compilador de clientes de servicio, el cliente de HTTP no se cierra de forma predeterminada si el cliente de servicio se cierra. Esto le permite compartir clientes de HTTP entre clientes de servicio.

  • Los clientes de HTTP asincrónicos ahora usan una E/S no bloqueante.

  • Algunas operaciones utilizan ahora HTTP/2 para mejorar el rendimiento.

Cambios de configuración

Ajuste 1.x 2.x Sync, Apache 2.x Async, Netty
ClientConfiguration clientConfig = new ClientConfiguration()
ApacheHttpClient.Builder httpClientBuilder = ApacheHttpClient.builder()
NettyNioAsyncHttpClient.Builder httpClientBuilder = NettyNioAsyncHttpClient.builder()
Máximo de conexiones
clientConfig.setMaxConnections(...) clientConfig.withMaxConnections(...)
httpClientBuilder.maxConnections(...)
httpClientBuilder.maxConcurrency(...)
Tiempo de espera de conexión
clientConfig.setConnectionTimeout(...) clientConfig.withConnectionTimeout(...)
httpClientBuilder.connectionTimeout(...) httpClientBuilder.connectionAcquisitionTimeout(...)
httpClientBuilder.connectionTimeout(...)
Tiempo de espera de sockets
clientConfig.setSocketTimeout(...) clientConfig.withSocketTimeout(...)
httpClientBuilder.socketTimeout(...)
httpClientBuilder.writeTimeout(...) httpClientBuilder.readTimeout(...)
TTL de conexión
clientConfig.setConnectionTTL(...) clientConfig.withConnectionTTL(...)
httpClientBuilder.connectionTimeToLive(...)
httpClientBuilder.connectionTimeToLive(...)
Inactividad máx. de conexión
clientConfig.setConnectionMaxIdleMillis(...) clientConfig.withConnectionMaxIdleMillis(...)
httpClientBuilder.connectionMaxIdleTime(...)
httpClientBuilder.connectionMaxIdleTime(...)
Validación después de inactividad
clientConfig.setValidateAfterInactivityMillis(...) clientConfig.withValidateAfterInactivityMillis(...)
No se admite (característica de solicitud) No se admite (característica de solicitud)
Dirección local
clientConfig.setLocalAddress(...) clientConfig.withLocalAddress(...)
httpClientBuilder.localAddress(...)
No admitido
Expect-continue habilitada
clientConfig.setUseExpectContinue(...) clientConfig.withUseExpectContinue(...)
httpClientBuilder.expectContinueEnabled(...)
No se admite (característica de solicitud)
Connection reaper
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 de HTTP

Configuración 1.x 2.x Sync, Apache 2.x Async, Netty
ClientConfiguration clientConfig = new ClientConfiguration()
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder()
ProxyConfiguration.Builder proxyConfig = ProxyConfiguration.builder()
Host del proxy.
clientConfig.setProxyHost(...) clientConfig.withProxyHost(...)
proxyConfig.endpoint(...)
proxyConfig.host(...)
Puerto del proxy.
clientConfig.setProxyPort(...) clientConfig.withProxyPort(...)
proxyConfig.endpoint(...)

El puerto proxy está incrustado en endpoint

proxyConfig.port(...)
Nombre de usuario del proxy
clientConfig.setProxyUsername(...) clientConfig.withProxyUsername(...)
proxyConfig.username(...)
proxyConfig.username(...)
Contraseña del proxy.
clientConfig.setProxyPassword(...) clientConfig.withProxyPassword(...)
proxyConfig.password(...)
proxyConfig.password(...)
Dominio de proxy
clientConfig.setProxyDomain(...) clientConfig.withProxyDomain(...)
proxyConfig.ntlmDomain(...)
No se admite (característica de solicitud)
Estación de trabajo proxy
clientConfig.setProxyWorkspace(...) clientConfig.withProxyWorkstation(...)
proxyConfig.ntlmWorkstation(...)
No se admite (característica de solicitud)
Métodos de autenticación de proxy
clientConfig.setProxyAuthenticationMethods(...) clientConfig.withProxyAuthenticationMethods(...)

No es compatible

No se admite (característica de solicitud)
Autenticación proxy básica prioritaria
clientConfig.setPreemptiveBasicProxyAuth(...) clientConfig.withPreemptiveBasicProxyAuth(...)
proxyConfig.preemptiveBasicAuthenticationEnabled(...)
No se admite (característica de solicitud)
Host sin proxy
clientConfig.setNonProxyHosts(...) clientConfig.withNonProxyHosts(...)
proxyConfig.nonProxyHosts(...)
proxyConfig.nonProxyHosts(...)
Deshabilitación del proxy de sockets
clientConfig.setDisableSocketProxy(...) clientConfig.withDisableSocketProxy(...)
No se admite (característica de solicitud) No se admite (característica de solicitud)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
httpClientBuilder.proxyConfiguration( proxyConfig.build())
httpClientBuilder.proxyConfiguration( proxyConfig.build())

Anulaciones de clientes

Ajuste 1.x 2.x
ClientConfiguration clientConfig = new ClientConfiguration()
ClientOverrideConfiguration.Builder overrideConfig = ClientOverrideConfiguration.builder()
Prefijo de agente de usuario
clientConfig.setUserAgentPrefix(...) clientConfig.withUserAgentPrefix(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.USER_AGENT_PREFIX, ...)
Sufijo de agente de usuario
clientConfig.setUserAgentSuffix(...) clientConfig.withUserAgentSuffix(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.USER_AGENT_SUFFIX, ...)
Signer
clientConfig.setSignerOverride(...) clientConfig.withSignerOverride(...)
overrideConfig.advancedOption( SdkAdvancedClientOption.SIGNER, ...)
Encabezados adicionales
clientConfig.addHeader(...) clientConfig.withHeader(...)
overrideConfig.putHeader(...)
Tiempo de espera de la solicitud
clientConfig.setRequestTimeout(...) clientConfig.withRequestTimeout(...)
overrideConfig.apiCallAttemptTimeout(...)
Tiempo de espera de ejecución de clientes
clientConfig.setClientExecutionTimeout(...) clientConfig.withClientExecutionTimeout(...)
overrideConfig.apiCallTimeout(...)
Uso de Gzip
clientConfig.setUseGzip(...) clientConfig.withGzip(...)

No se admite (característica de solicitud)

Sugerencia del tamaño del búfer de socket
clientConfig.setSocketBufferSizeHints(...) clientConfig.withSocketBufferSizeHints(...)
No se admite (característica de solicitud)
Metadatos de respuesta en caché
clientConfig.setCacheResponseMetadata(...) clientConfig.withCacheResponseMetadata(...)
No se admite (característica de solicitud)
Tamaño de caché de metadatos de respuesta
clientConfig.setResponseMetadataCacheSize(...) clientConfig.withResponseMetadataCacheSize(...)
No se admite (característica de solicitud)
servicio de resolución de nombres DNS
clientConfig.setDnsResolver(...) clientConfig.withDnsResolver(...)
No se admite (característica de solicitud)
keepalive de TCP
clientConfig.setUseTcpKeepAlive(...) clientConfig.withTcpKeepAlive(...)

Esta opción se encuentra ahora en la configuración del cliente de HTTP

- ApacheHttpClient.builder().tcpKeepAlive(true) - NettyNioAsyncHttpClient.builder().tcpKeepAlive(true)
Protección aleatoria
clientConfig.setSecureRandom(...) clientConfig.withSecureRandom(...)
No se admite (característica de solicitud)
AmazonDynamoDBClientBuilder.standard() .withClientConfiguration(clientConfiguration) .build()
DynamoDbClient.builder() .overrideConfiguration(overrideConfig.build()) .build()

El cliente anula los reintentos

Ajuste 1.x 2.x
ClientConfiguration clientConfig = new ClientConfiguration()
ClientOverrideConfiguration.Builder overrideConfigBuilder = ClientOverrideConfiguration.builder();
Error máx. de reintento
clientConfig.setMaxErrorRetry(...) clientConfig.withMaxErrorRetry(...)
// Configure the default retry strategy. overrideConfigBuilder.retryStrategy(b -> b.maxAttempts(...));
Uso de reintentos limitados
clientConfig.setUseThrottleRetries(...) clientConfig.withUseThrottleRetries(...)
No admitido
Máx. de reintentos consecutivos antes de limitación
clientConfig.setMaxConsecutiveRetriesBeforeThrottling(...) clientConfig.withMaxConsecutiveRetriesBeforeThrottling(...)
No admitido
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 asíncronos

Ajuste 1.x 2.x
ClientAsyncConfiguration.Builder asyncConfig = ClientAsyncConfiguration.builder()
Ejecutor
AmazonDynamoDBAsyncClientBuilder.standard() .withExecutorFactory(...) .build()
asyncConfig.advancedOption( SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, ...)
DynamoDbAsyncClient.builder() .asyncConfiguration(asyncConfig) .build()

Otros cambios de cliente

La siguiente opción ClientConfiguration de la versión 1.x ha cambiado en 2.x del SDK y no tiene un equivalente directo.

Ajuste 1.x Equivalente en 2.x
Protocolo
clientConfig.setProtocol(Protocol.HTTP) clientConfig.withProtocol(Protocol.HTTP)

El ajuste del protocolo es HTTPS de forma predeterminada. Para modificar el ajuste, especifique el protocolo estableciendo un punto de conexión HTTP en el compilador de clientes:

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