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 S3S3AsyncClient
basada en Java y ofrece varias ventajas.
El HTTPcliente AWS CRT basado es una implementación de la SdkAsyncHttpClientSdkAsyncHttpClient
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
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
<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 GetObject
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 |