Uso de S3CrtClient para operaciones de Amazon S3 - AWS SDK para C++

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.

Uso de S3CrtClient para operaciones de Amazon S3

La clase S3CrtClient está disponible en la versión 1.9 del AWS SDK para C++ y mejora el rendimiento de la carga y descarga de archivos de datos de gran tamaño desde y hacia Amazon S3. Para obtener más información sobre las mejoras de esta versión, consulte Mejora del rendimiento de Amazon S3 con AWS SDK para C++ v1.9.

El S3CrtClient se implementa sobre las bibliotecas Common Runtime (CRT) de AWS.

nota

Para evitar que se le cobre por cargas incompletas o parciales, le recomendamos que active la regla de ciclo de vida AbortIncompleteMultipartUpload en sus buckets de Amazon S3.

Esta regla le indica a Amazon S3 que anule las cargas multiparte que no se completen en un número especificado de días después de iniciarse. Cuando se supera el plazo establecido, Amazon S3 anula la carga y, a continuación, elimina los datos de la carga incompleta.

Para obtener más información, consulte Configuración del ciclo de vida de un bucket en la Guía del usuario de Amazon S3.

Requisitos previos

Antes de comenzar, le recomendamos que lea Primeros pasos con el AWS SDK para C++.

Descargue el código de ejemplo y compile la solución tal y como se describe en Introducción a los ejemplos de código.

Para ejecutar los ejemplos, el perfil de usuario que su código utilice para realizar las solicitudes debe tener los permisos adecuados en AWS (para el servicio y la acción). Para obtener más información, consulte Proporcionar credenciales de AWS.

Carga y descarga de un objeto mediante S3CrtClient

En este ejemplo se muestra cómo usar S3CrtClient. En el ejemplo se crea un bucket, se carga un objeto, se descarga el objeto y, a continuación, se eliminan el archivo y el bucket. Una operación PUT se convierte en una carga multiparte. Una operación GET se convierte en varias solicitudes GET "ordenadas". Para obtener más información sobre cargas multiparte, consulte Carga y copia de objetos con carga multiparte en la Guía del usuario de Amazon S3.

En este ejemplo, el archivo de datos proporcionado, ny.json, se carga como una carga multiparte. Puede confirmarlo consultando los registros de depuración después de ejecutar correctamente el programa.

Si se produce un error en la carga, AbortMultipartUpload se emite en una en la biblioteca CRT subyacente para limpiar las partes ya cargadas. Sin embargo, no todos los fallos se pueden solucionar internamente (por ejemplo, si se desconecta un cable de red). Le recomendamos crear una regla de ciclo de vida en su bucket de Amazon S3 para garantizar que los datos cargados parcialmente no permanezcan en su cuenta (los datos cargados parcialmente siguen siendo facturables). Para obtener información sobre cómo configurar una regla de ciclo de vida, consulte Descubrimiento y eliminación de cargas multiparte incompletas para reducir los costos de Amazon S3

Uso del registro de depuración para explorar los detalles de las cargas multiparte
  1. En main(), tenga en cuenta que hay comentarios "TODO" con instrucciones para actualizar el código.

    1. Para file_name: desde el enlace proporcionado en el comentario del código, descargue un archivo de datos de muestra ny.json o utilice un archivo de datos de gran tamaño que sea suyo.

    2. Para region: actualice la variable region, mediante la enumeración, de la Región de AWS de su cuenta. Para encontrar la región de su cuenta, inicie sesión en la Consola de administración de AWS y localice la región en la esquina superior derecha.

  2. Compile el ejemplo.

  3. Copie el archivo especificado en la variable file_name en su carpeta de ejecutables y ejecute el archivo ejecutable s3-crt-demo.

  4. En la carpeta de ejecutables, busque el archivo .log más reciente.

  5. Abra el archivo de registro, seleccione buscar y escriba partNumber.

  6. El registro contiene entradas similares a las siguientes, donde se especifican uploadId y partNumber para cada parte del archivo cargado:

    PUT /my-object partNumber=1&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD

    y

    PUT /my-object partNumber=2&uploadId=gsk8vDbmnlA5EseDo._LDEgq22Qmt0SeuszYxMsZ9ABt503VqDIFOP8xzZI1P0zp.ToS.qo5kK16HNWogZF3KpRo.Dc7QnLZIK0BTmzCWwWoPax4T21hvP6nPdz9591F content-length:8388608 host:my-bucketasdfasdf.s3.us-east-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD

Consulte el ejemplo completo en Github.