Utilice un cliente S3 eficiente: cliente S3 AWS CRT basado en - 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.

Utilice un cliente S3 eficiente: cliente S3 AWS CRT basado en

El cliente S3 AWS CRT basado, creado sobre AWS Common Runtime (CRT), es un cliente asíncrono S3 alternativo. Transfiere objetos desde y hacia Amazon Simple Storage Service (Amazon S3) con un rendimiento y una fiabilidad mejorados, ya que utiliza automáticamente la API carga multiparte y las recuperaciones por rango de bytes de Amazon S3.

El cliente AWS CRT basado en S3 mejora la fiabilidad de la transferencia en caso de que se produzca un fallo en la red. La fiabilidad se mejora reintentando partes individuales fallidas de una transferencia de archivos sin reiniciar la transferencia desde el principio.

Además, el cliente S3 AWS CRT basado ofrece una mejor agrupación de conexiones y un equilibrio de carga del Sistema de Nombres de Dominio (DNS), lo que también mejora el rendimiento.

Puede utilizar el cliente S3 AWS CRT basado en lugar SDK del cliente asíncrono S3 estándar y aprovechar su rendimiento mejorado de forma inmediata.

AWS CRTbasado en componentes en el SDK

El cliente S3 AWS CRT basado, que se describe en este tema, y el HTTPcliente AWS CRT basado son componentes diferentes delSDK.

El cliente S3 AWS CRT basado es una implementación de la AsyncClient interfaz S3 y se utiliza para trabajar con el servicio Amazon S3. Es una alternativa a la implementación de la interfaz S3AsyncClient basada en Java y ofrece varias ventajas.

El HTTPcliente AWS CRT basado es una implementación de la SdkAsyncHttpClientinterfaz y se utiliza para la HTTP comunicación general. Es una alternativa a la implementación Netty de la interfaz SdkAsyncHttpClient basada en Java y ofrece varias ventajas.

Si bien ambos componentes utilizan bibliotecas del AWS Common Runtime, el cliente S3 AWS CRT basado utiliza la biblioteca aws-c-s 3 y admite las API funciones de carga multiparte de S3. Como el HTTP cliente AWS CRT basado está diseñado para un uso general, no admite las funciones de carga API multiparte de S3.

Añada dependencias para usar el cliente S3 AWS CRT basado

Para usar el cliente S3 AWS CRT basado, añada las dos dependencias siguientes a su archivo de proyecto de Maven. En el ejemplo siguiente se muestran las versiones mínimas que se utilizarán. Busque en el repositorio central de Maven las versiones más recientes de los artefactos s3 y aws-crt.

<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.27.21</version> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.30.11</version> </dependency>

Cree una instancia del cliente S3 AWS CRT basado

Cree una instancia del cliente S3 AWS CRT basado con la configuración predeterminada, como se muestra en el siguiente fragmento de código.

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();

Para configurar el cliente, utilice el generador de AWS CRT clientes. Puede cambiar del cliente asíncrono S3 estándar a un cliente AWS CRT basado cambiando el método de creación.

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_WEST_2) .targetThroughputInGbps(20.0) .minimumPartSizeInBytes(8 * 1025 * 1024L) .build();
nota

Es posible que algunas de las configuraciones del generador estándar no sean compatibles actualmente con el AWS CRT generador de clientes. Obtener el constructor estándar llamando a S3AsyncClient#builder().

Utilice el cliente S3 AWS CRT basado en

Utilice el cliente S3 AWS CRT basado para llamar a API las operaciones de Amazon S3. El siguiente ejemplo muestra las GetObjectoperaciones PutObjecty disponibles a través de AWS SDK for Java.

import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.PutObjectResponse; S3AsyncClient s3Client = S3AsyncClient.crtCreate(); // Upload a local file to Amazon S3. PutObjectResponse putObjectResponse = s3Client.putObject(req -> req.bucket(<BUCKET_NAME>) .key(<KEY_NAME>), AsyncRequestBody.fromFile(Paths.get(<FILE_NAME>))) .join(); // Download an object from Amazon S3 to a local file. GetObjectResponse getObjectResponse = s3Client.getObject(req -> req.bucket(<BUCKET_NAME>) .key(<KEY_NAME>), AsyncResponseTransformer.toFile(Paths.get(<FILE_NAME>))) .join();

Limitaciones de la configuración

El cliente S3 AWS CRT basado en Java y el cliente asíncrono S3 basado en Java ofrecen funciones comparables, mientras que el cliente S3 AWS CRT basado en Java ofrece una ventaja de rendimiento. Sin embargo, el cliente S3 AWS CRT basado en Java carece de los ajustes de configuración que tiene el cliente asíncrono S3 basado en Java. Esta configuración incluye:

  • Configuración a nivel de cliente: tiempo de espera del intento de API llamada, interceptores de ejecución por compresión, editores de métricas, atributos de ejecución personalizados, opciones avanzadas personalizadas, servicio de ejecución programado personalizado, encabezados personalizados

  • Configuración a nivel de solicitud: firmantes personalizados, proveedores de credenciales, tiempo de espera del intento de llamada API

Para obtener una lista completa de las diferencias de configuración, consulta la referencia. API

Cliente asíncrono S3 basado en Java AWS CRTcliente S3 basado en
Configuraciones a nivel de cliente

Configuraciones a nivel de solicitud

Configuraciones a nivel de cliente

Sin configuraciones a nivel de solicitud