Trabajo con Amazon S3 - AWS SDK for Java 2.x

Trabajo con Amazon S3

En esta sección se proporciona información básica para trabajar con Amazon S3 mediante AWS SDK for Java 2.x. Esta sección complementa los ejemplos de Java v2 de Amazon S3 presentados en la sección Ejemplos de código de esta guía.

Clientes de S3 en AWS SDK for Java 2.x

AWS SDK for Java 2.x ofrece diferentes tipos de clientes de S3. La siguiente tabla muestra las diferencias y puede ayudarle a decidir qué es lo mejor para sus casos de uso.

Diferentes tipos de clientes de Amazon S3
Cliente de S3 Descripción breve Cuándo se debe usar Limitación o inconveniente

Cliente de S3 basado en AWS CRT

Interfaz: S3AsyncClient

Compilador: S3CrtAsyncClientBuilder

  • Proporciona las mismas operaciones de API asincrónicas que el cliente asincrónico de S3 basado en Java, pero con mayor rendimiento.

  • Requiere la dependencia de aws-crt.

  • Admite transferencias paralelas automáticas (multiparte).

Consulte Utilizar un cliente S3 de alto rendimiento: cliente S3 basado en CRT AWS.

  • La aplicación transfiere objetos grandes (más de 8 MB) y desea maximizar el rendimiento.

  • Desea cargar objetos con una longitud de contenido desconocida.

  • Desea mejorar la agrupación de conexiones y el equilibrio de carga de DNS, lo que mejora el rendimiento.

  • Desea mejorar la fiabilidad de las transferencias en caso de que se produzca un fallo en la red. Las partes individuales fallidas se reintentan sin reiniciar la transferencia desde el principio.

Cliente asincrónico S3 basado en Java con multiparte habilitada

Interfaz: S3AsyncClient

Compilador: S3AsyncClientBuilder

  • Proporciona una API asincrónica.

  • Admite transferencias paralelas automáticas (multiparte) cuando se habilita la multiparte en el momento de la creación.

Consulte Configuración del cliente asincrónico S3 basado en Java para usar transferencias paralelas.

  • La aplicación transfiere objetos grandes y desea maximizar el rendimiento.

  • Desea cargar objetos con una longitud de contenido desconocida.

  • Desea mejorar la fiabilidad de las transferencias en caso de que se produzca un fallo en la red. Las partes individuales fallidas se reintentan sin reiniciar la transferencia desde el principio.

  • Necesita opciones de configuración que no están disponibles en el cliente de S3 basado en AWS CRT.

Menor rendimiento que el cliente de S3 basado en AWS CRT.

Cliente asincrónico de S3 basado en Java sin multiparte habilitada

Interfaz: S3AsyncClient

Compilador: S3AsyncClientBuilder

  • Proporciona una API asincrónica.

  • Transfiere objetos con menos de 8 MB.

  • Desea una API asincrónica.

Sin optimización del rendimiento

Cliente asincrónico de S3 basado en Java

Interfaz: S3Client

Compilador: S3ClientBuilder

  • Proporciona una API asincrónica.

  • Transfiere objetos con menos de 8 MB.

  • Desea una API asincrónica.

Sin optimización del rendimiento

nota

A partir de la versión 2.18.x, AWS SDK for Java 2.x utiliza un direccionamiento virtual de estilo host al incluir una anulación de punto de conexión. Esto se aplica siempre que el nombre del bucket sea una etiqueta DNS válida.

Llame al método forcePathStyle con true en su constructor de clientes para forzar al cliente a utilizar el direccionamiento estilo ruta para los buckets.

En el siguiente ejemplo se muestra un cliente de servicio configurado con una anulación de punto de conexión y utilizando direccionamiento estilo ruta.

S3Client client = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://s3.us-west-2.amazonaws.com")) .forcePathStyle(true) .build();