HTTPclientes - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

HTTPclientes

Puede cambiar el HTTP cliente para usarlo en su cliente de servicio, así como cambiar la configuración predeterminada de HTTP los clientes con AWS SDK for Java 2.x. En esta sección se describen HTTP los clientes y la configuración deSDK.

HTTPclientes disponibles en el SDK para Java

Clientes síncronos

HTTPLos clientes síncronos SDK para Java implementan la SdkHttpClientinterfaz. Un cliente de servicio síncrono, como el S3Client o elDynamoDbClient, requiere el uso de un cliente HTTP síncrono. AWS SDK for Java Ofrece tres clientes síncronosHTTP.

ApacheHttpClient (predeterminado)

ApacheHttpClientes el HTTP cliente predeterminado para los clientes de servicios síncronos. Para obtener información acerca de cómo configurar el ApacheHttpClient, consulte Configurar el cliente basado en Apache HTTP.

AwsCrtHttpClient

AwsCrtHttpClientproporciona E/S de alto rendimiento y sin bloqueos. Se basa en el cliente Http AWS Common Runtime (CRT). Para obtener información sobre cómo configurar el AwsCrtHttpClient y utilizar el servicio con los clientes, consulte Configurar HTTP clientes AWS CRT basados.

UrlConnectionHttpClient

Para minimizar la cantidad de archivos jar y bibliotecas de terceros que utiliza la aplicación, puede utilizar el UrlConnectionHttpClient. Para obtener información acerca de cómo configurar el UrlConnectionHttpClient, consulte Configurar el HTTP cliente URLConnection basado.

Clientes asíncronos

HTTPLos clientes asíncronos SDK para Java implementan la interfaz. SdkAsyncHttpClient Un cliente de servicio asíncrono, como el S3AsyncClient o el, requiere el uso de un cliente asíncrono. DynamoDbAsyncClient HTTP Ofrece dos clientes asíncronos. AWS SDK for Java HTTP

NettyNioAsyncHttpClient (predeterminado)

NettyNioAsyncHttpClientes el HTTP cliente predeterminado que utilizan los clientes asíncronos. Para obtener información acerca de cómo configurar el NettyNioAsyncHttpClient, consulte Configurar el cliente basado en Netty HTTP.

AwsCrtAsyncHttpClient

AwsCrtAsyncHttpClientSe basa en el cliente AWS Common Runtime ()CRT. HTTP Para obtener información acerca de cómo configurar el AwsCrtAsyncHttpClient, consulte Configurar HTTP clientes AWS CRT basados.

HTTPrecomendaciones de los clientes

A la hora de elegir una implementación de HTTP cliente entran en juego varios factores. Utilice la siguiente información para ayudarle en la decisión.

Diagrama de flujo de recomendaciones

El siguiente diagrama de flujo proporciona una guía general para ayudarle a determinar qué HTTP cliente utilizar.

Diagrama de flujo de las recomendaciones de los HTTP clientes.

HTTPcomparación de clientes

La siguiente tabla proporciona información detallada de cada HTTP cliente.

HTTPcliente Sínc. or asínc. Cuándo se debe usar Limitación o inconveniente
cliente basado en Apache HTTP

(cliente de sincronización HTTP predeterminado)

Sincronizar Úselo si prefiere una latencia baja en lugar de un alto rendimiento Tiempo de inicio más lento en comparación con otros HTTP clientes
URLConnectionHTTPcliente basado Sincronizar Úselo si tiene requisitos estrictos para limitar las dependencias de terceros No admite el HTTP PATCH método, requerido por algunas operaciones, APIS como Amazon APIGateway Update
AWS CRTHTTPcliente de sincronización basado en 1 Sincronizar

• Úselo si su aplicación se está ejecutando en AWS Lambda

- Utilícelo si prefiere un alto rendimiento a una baja latencia

• Úselo si prefiere sincronizar SDK clientes

No se admiten las siguientes propiedades del sistema Java:

  • javax.net.ssl. keyStore

  • javax.net.ssl. keyStorePassword

  • javax.net.ssl. trustStore

  • javax.net.ssl. trustStorePassword

Cliente basado en Netty HTTP

(cliente asíncrono predeterminado) HTTP

Asíncrono

• Úselo si su aplicación invoca alguna APIs que requiera compatibilidad con HTTP /2, como Kinesis API SubscribeToShard

Tiempo de inicio más lento en comparación con otros clientes HTTP
AWS CRTcliente HTTP asíncrono basado en 1 Asíncrono

• Úselo si su aplicación se está ejecutando en AWS Lambda

- Utilícelo si prefiere un alto rendimiento a una baja latencia

• Úselo si prefiere clientes asíncronos SDK

• No es compatible con clientes de servicio que requieren HTTP 1/2 soporte, como y KinesisAsynClient TranscribeStreamingAsyncClient

No se admiten las siguientes propiedades del sistema Java:

  • javax.net.ssl. keyStore

  • javax.net.ssl. keyStorePassword

  • javax.net.ssl. trustStore

  • javax.net.ssl. trustStorePassword

1 Debido a sus ventajas adicionales, te recomendamos que utilices los HTTP clientes AWS CRT basados en la medida de lo posible.

Valores predeterminados de configuración inteligente

La AWS SDK for Java 2.x versión 2.17.102 o posterior ofrece una función de configuración inteligente por defecto. Esta función optimiza dos propiedades HTTP del cliente junto con otras propiedades que no afectan al cliente. HTTP

Los valores predeterminados de la configuración inteligente establecen valores razonables para las propiedades connectTimeoutInMillis y tlsNegotiationTimeoutInMillis en función del valor de modo predeterminado que proporcione. El valor de modo predeterminado se elige según las características de la aplicación.

Para obtener más información sobre los valores predeterminados de la configuración inteligente y sobre cómo elegir el valor de modo predeterminado que mejor se adapte a sus aplicaciones, consulte la AWS SDKs Guía de referencia de herramientas.

A continuación, se muestran cuatro formas de configurar el modo predeterminado para su aplicación.

Service client

Utilice el generador de clientes de servicio para configurar el modo predeterminado directamente en el cliente de servicio. El siguiente ejemplo establece el modo predeterminado en auto para el DynamoDbClient.

DynamoDbClient ddbClient = DynamoDbClient.builder() .defaultsMode(DefaultsMode.AUTO) .build();
System property

Puede usar la propiedad del aws.defaultsMode sistema para especificar el modo predeterminado. Si establece la propiedad del sistema en Java, debe establecerla antes de inicializar cualquier cliente de servicio.

En el siguiente ejemplo, se muestra cómo configurar el modo predeterminado en auto usar un conjunto de propiedades del sistema en Java.

System.setProperty("aws.defaultsMode", "auto");

En el siguiente ejemplo, se muestra cómo configurar el modo predeterminado como auto mediante una opción -D del comando java.

java -Daws.defaultsMode=auto
Environment variable

Defina un valor para la variable de entorno AWS_DEFAULTS_MODE para seleccionar el modo predeterminado de la aplicación.

La siguiente información muestra el comando que se debe ejecutar para establecer el valor del modo predeterminado como auto utilizando una variable de entorno.

Sistema operativo Comando para definir variables de entorno

Linux, macOS o Unix

export AWS_DEFAULTS_MODE=auto

Windows

set AWS_DEFAULTS_MODE=auto
AWS config file

Puede añadir una propiedad de defaults_mode configuración al AWS config archivo compartido, como se muestra en el siguiente ejemplo.

[default] defaults_mode = auto

Si establece el modo predeterminado de forma global con la propiedad del sistema, la variable de entorno o el archivo de AWS configuración, puede anular la configuración al crear un HTTP cliente.

Al crear un HTTP cliente con el httpClientBuilder() método, la configuración se aplica solo a la instancia que se está creando. Un ejemplo de ello se muestra aquí. En este ejemplo, el HTTP cliente basado en Netty anula cualquier valor de modo predeterminado establecido globalmente para y. connectTimeoutInMillis tlsNegotiationTimeoutInMillis