Carga de archivos a un bucket de Lightsail con carga multiparte - Amazon Lightsail

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.

Carga de archivos a un bucket de Lightsail con carga multiparte

Con la carga multiparte, puede cargar un solo archivo al bucket como un conjunto de partes. Cada parte es una parte contigua de los datos del archivo. Puede cargar estas partes del archivo de forma independiente y en cualquier orden. Si la transmisión de cualquier parte falla, puede retransmitir esta parte sin que las demás partes se vean afectadas. Después de cargar todas las partes del archivo, Amazon S3 las combina y crea el objeto en su bucket de Amazon Lightsail. Por lo general, cuando el tamaño del objeto alcanza los 100 MB, deberá usar las cargas multipartes en lugar de cargar el objeto en una única operación. Para obtener más información sobre los buckets, consulte Almacenamiento de objetos.

El uso de la carga multiparte proporciona las siguientes ventajas:

  • Mayor velocidad: puede cargar las partes al mismo tiempo para aumentar la velocidad.

  • Recuperación rápida ante cualquier problema de red: una parte de tamaño más pequeño reduce el impacto de tener que reiniciar una carga fallida debido a un error de red.

  • Carga a lo largo del tiempo: puede cargar partes de archivos a lo largo del tiempo. Después de iniciar una carga multiparte, tiene 24 horas para completar la carga multiparte.

  • Inicio de una carga antes de conocer el tamaño final del archivo: puede cargar un archivo a medida que lo crea.

Le recomendamos que use la carga multiparte de las siguientes maneras:

  • Si carga archivos grandes en una red estable de banda ancha, la carga multiparte aumenta al máximo el uso de su ancho de banda disponible al cargar los archivos en partes y en paralelo para un rendimiento en varios subprocesos.

  • Si realiza la carga en una red irregular, use la carga multiparte para aumentar la resiliencia ante errores de red evitando reinicios de la carga. Al usar la carga multiparte, solo reintenta la carga de las partes que se han interrumpido. No es necesario volver a empezar o cargar el archivo completo de nuevo.

Contenido

Proceso de carga multiparte

La carga multiparte es un proceso de tres pasos que utiliza acciones de Amazon S3 para cargar archivos en un bucket de Lightsail:

  1. Inicia la carga multiparte utilizando la acción CreateMultipartUpload.

  2. Carga las partes del archivo utilizando la acción UploadPart.

  3. Completa la carga multiparte utilizando la acción CompleteMultipartUpload.

nota

Puede detener una carga multiparte después de iniciarla utilizando la acción AbortMultipartUpload.

Cuando se completa la solicitud de carga multiparte, Amazon Simple Storage Service construye el objeto a partir de las partes cargadas. Luego puede acceder al objeto de la misma manera que accedería a cualquier otro objeto en su bucket.

Puede mostrar todas las cargas multipartes en curso u obtener una lista de las partes que ha cargado en una carga multiparte específica. En esta sección, se explicarán cada una de estas operaciones.

Inicio de la carga multiparte

Al enviar una solicitud para iniciar una carga multiparte, Amazon Simple Storage Service devuelve una respuesta con un ID de carga. Se trata de un identificador único para la carga multiparte. Debe incluir el ID de carga siempre que cargue partes, muestre partes, complete una carga o pare una carga. Si desea proporcionar metadatos que describen el objeto que está cargando, debe proporcionarlos en la solicitud para iniciar la carga multiparte.

Carga de partes

Al cargar una parte, además del ID de carga, debe especificar un número de parte. Puede seleccionar cualquier número de parte comprendido entre 1 y 10 000. Un número de parte identifica exclusivamente una parte y su posición en el objeto que se está cargando. El número de parte que elija no tiene que ser necesariamente una secuencia consecutiva (por ejemplo: puede ser 1, 5 y 14). Si carga una parte nueva con el mismo número que una parte ya cargada, se sobrescribirá la parte existente.

Siempre que cargue una parte, Amazon Simple Storage Service devolverá un encabezado ETag en la respuesta. Para cada carga de parte, debe anotar el número de parte y el valor de ETag. Debe incluir estos valores en la solicitud posterior para completar la carga multiparte.

nota

Todas las partes cargadas de una carga multiparte se almacenan en su bucket. Consumirán el espacio de almacenamiento de su bucket hasta que complete la carga, detenga la carga o se agote el tiempo de espera de la carga. Para obtener más información, consulte Retención de cargas multiparte más adelante en esta guía.

Finalización de la carga multiparte

Al completar una carga multiparte, Amazon Simple Storage Service crea un objeto mediante la concatenación de las partes en orden ascendente según el número de parte. Si se proporcionaron los metadatos de algún objeto en la solicitud de inicio de carga multiparte, Amazon Simple Storage Service asocia estos metadatos al objeto. Después de una solicitud de finalización realizada correctamente, las partes ya no existirán.

La solicitud de carga multiparte completa debe incluir el ID de carga y una lista de los números de parte y valores correspondientes de ETag. La respuesta de Amazon Simple Storage Service incluye una ETag que identifica de forma exclusiva los datos de objetos combinados. Esta ETag no es necesariamente un hash de MD5 de los datos del objeto.

Puede optar por parar la carga multiparte. Después de parar una carga multiparte, no puede volver a cargar ninguna parte con ese ID de carga. A continuación, se libera todo el almacenamiento de las partes de la carga multiparte cancelada. Si la carga de alguna de las partes estuviera en curso, todavía se puede ejecutar correctamente o producir un error una vez detenida. Para liberar todo el espacio de almacenamiento consumido por las partes, debe parar una carga multiparte solo después de haber completado las cargas de todas las partes.

Listas de cargas multiparte

Puede enumerar las partes de una carga multiparte específica o todas las cargas multipartes en curso. La operación de lista de partes devuelve la información de las partes que ha cargado para una carga multiparte específica. Para cada solicitud de lista de partes, Amazon Simple Storage Service devuelve la información de las partes para la carga multiparte específica, hasta un máximo de 1000 partes. Si hay más de 1 000 partes en la carga multiparte, debe enviar una serie de solicitudes de lista de partes para recuperar todas las partes. Tenga en cuenta que la lista de partes que se devuelve no incluye las partes en proceso de carga. Con la operación de enumeración de cargas multiparte, puede obtener una lista de las cargas multiparte en curso.

Una carga multiparte en curso es una carga iniciada, pero que aún no se ha completado ni parado. Cada solicitud devuelve 1 000 cargas multipartes como máximo. Si hay más de 1 000 cargas multiparte en curso, debe enviar otras solicitudes para recuperar las cargas multiparte restantes. Solamente utilice la lista devuelta para verificación. No utilice el resultado de esta lista al enviar una solicitud de finalización de carga multiparte. Como alternativa, mantenga su propia lista de números de parte que especificó al cargar las partes y los valores correspondientes de ETag que devuelve Amazon Simple Storage Service.

Operaciones de carga multiparte simultáneas

En un entorno de desarrollo distribuido, es posible que la aplicación inicie varias actualizaciones en el mismo objeto simultáneamente. La aplicación puede iniciar varias cargas multipartes con la misma clave de objeto. Para cada una de estas cargas, la aplicación puede cargar las partes y enviar una solicitud de carga completa a Amazon Simple Storage Service para crear el objeto. Cuando los buckets tienen el control de versiones habilitado, siempre se creará una nueva versión cuando se complete una carga multiparte. En el caso de los buckets que no tienen el control de versiones habilitado, es posible que tenga prioridad otra solicitud, como las solicitudes que se reciben después de iniciarse una carga multiparte y antes de que se complete.

nota

Es posible que otras solicitudes tengan prioridad, como las solicitudes que se reciben después de iniciar una carga multiparte y antes de que se complete. Por ejemplo, otra operación podría eliminar una clave después de que inicie una carga multiparte con esa clave y antes de que se complete la carga multiparte. Si esto ocurre, la respuesta de carga multiparte completa podría indicar una creación correcta del objeto sin que vea el objeto.

Retención de cargas multiparte

Todas las partes cargadas de una carga multiparte se almacenan en su bucket. Consumirán el espacio de almacenamiento de su depósito hasta que complete la carga, detenga la carga o se agote el tiempo de espera de la carga. Una carga multiparte agota el tiempo de espera y la carga multiparte se elimina 24 horas después de su creación. Cuando detiene una carga multiparte o se agota el tiempo de espera, se eliminan todas las partes cargadas y se libera el espacio de almacenamiento que utilizaban en el bucket.

Límites de carga multiparte de Amazon Simple Storage Service

En la siguiente tabla se proporcionan las especificaciones principales de la carga multiparte.

  • Tamaño máximo de objeto: 5 TB

  • Cantidad máxima de partes por carga: 10 000

  • Números de parte: 1-10 000 (inclusive)

  • Tamaño de las partes: 5 MB (mínimo) - 5 GB (máximo). No hay límite de tamaño en la última parte de la carga multiparte.

  • Cantidad máxima de partes devueltas para una solicitud de lista de partes: 1000

  • Cantidad máxima de cargas multiparte devueltas en una solicitud de lista de cargas multiparte: 1000

División del archivo para cargarlo

Utilice el comando split en el sistema operativo Linux o Unix para dividir un archivo en varias partes que luego cargará en su bucket. Hay aplicaciones gratuitas similares que puede usar en el sistema operativo Windows para dividir un archivo. Después de dividir el archivo en varias partes, continúe con la sección Inicio de una carga multiparte de esta guía.

Inicio de una carga multiparte con la AWS CLI

Complete el siguiente procedimiento para iniciar una carga multiparte mediante la AWS Command Line Interface (AWS CLI). Para ello, utilice el comando create-multipart-upload. Para obtener más información, consulte create-multipart-upload en la Referencia de comandos de la AWS CLI.

nota

Debe instalar la AWS CLI y configurarla para Lightsail y Amazon S3 para poder continuar con este procedimiento. Para obtener más información, consulte Configuración de la AWS CLI para trabajar con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para crear una carga multiparte para el bucket.

    aws s3api create-multipart-upload --bucket BucketName --key ObjectKey --acl bucket-owner-full-control

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • BucketName: nombre del bucket para el que desea crear una carga multiparte.

    • ObjectKey: clave de objeto que se va a utilizar para el archivo que se va a cargar.

    Ejemplo:

    aws s3api create-multipart-upload --bucket amzn-s3-demo-bucket --key sailbot.mp4 --acl bucket-owner-full-control

    Debería ver un resultado similar al del siguiente ejemplo: La respuesta incluye un UploadID, que debe especificar en los siguientes comandos para cargar partes y para completar la carga multiparte de este objeto.

    Resultado del comando create-multipart-upload

    Después de tener el UploadID para la carga multiparte, continúe a la siguiente sección Carga de una parte con la AWS CLI de esta guía y comience a cargar partes.

Carga de una parte con la AWS CLI

Complete el siguiente procedimiento para cargar una parte de una carga multiparte mediante la AWS Command Line Interface (AWS CLI). Para ello, utilice el comando upload-part. Para obtener más información, consulte upload-part en la Referencia de comandos de la AWS CLI.

nota

Debe instalar la AWS CLI y configurarla para Lightsail y Amazon S3 para poder continuar con este procedimiento. Para obtener más información, consulte Configuración de la AWS CLI para trabajar con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para cargar una parte en su bucket.

    aws s3api upload-part --bucket BucketName --key ObjectKey --part-number Number --body FilePart --upload-id "UploadID" --acl bucket-owner-full-control

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • BucketName: nombre del bucket para el que desea crear una carga multiparte.

    • ObjectKey: clave de objeto que se va a utilizar para el archivo que se va a cargar.

    • Number: número de parte de la parte que está cargando. Un número de parte identifica exclusivamente una parte y su posición en el objeto que se está cargando. Asegúrese de aumentar gradualmente el parámetro --part-number con cada parte que cargue. Para ello, numérelas en el orden en que Amazon Simple Storage Service debe ensamblar el objeto cuando complete la carga multiparte.

    • FilePart: archivo de parte que se va a cargar desde el ordenador.

    • UploadID: ID de carga de la carga multiparte que ha creado anteriormente en esta guía.

    Ejemplo:

    aws s3api upload-part --bucket amzn-s3-demo-bucket --key sailbot.mp4 --part-number 1 --body sailbot.mp4.001 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    Debería ver un resultado similar al del siguiente ejemplo: Repita el comando upload-part para cada pieza que cargue. La respuesta para cada una de las solicitudes de carga de partes incluirá un valor ETag para la parte que cargue. Registre los valores ETag para cada una de las partes que cargue. Necesitará todos los valores ETag para completar la carga multiparte, que se aborda más adelante en esta guía.

    Resultado del comando upload-part

Enumeración de partes de una carga multiparte con AWS CLI

Complete el siguiente procedimiento para enumerar partes de una carga multiparte mediante la AWS Command Line Interface (AWS CLI). Para ello, utilice el comando list-parts. Para obtener más información, consulte list-parts en la Referencia de comandos de la AWS CLI.

Complete este procedimiento para obtener los valores ETag para todas las partes cargadas en una carga multiparte. Necesitará estos valores para completar la carga multiparte más adelante en esta guía. Sin embargo, si registró todos los valores ETag de la respuesta de las cargas de partes, puede omitir este procedimiento y continuar con la sección Creación de un archivo .json de carga multiparte de esta guía.

nota

Debe instalar la AWS CLI y configurarla para Lightsail y Amazon S3 para poder continuar con este procedimiento. Para obtener más información, consulte Configuración de la AWS CLI para trabajar con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para enumerar las partes de una carga multiparte en su bucket.

    aws s3api list-parts --bucket BucketName --key ObjectKey --upload-id "UploadID"

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • BucketName: nombre del bucket para el que desea mostrar las partes de una carga multiparte.

    • ObjectKey: clave de objeto de la carga multiparte.

    • UploadID: ID de carga de la carga multiparte que ha creado anteriormente en esta guía.

    Ejemplo:

    aws s3api list-parts --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG"

    Debería ver un resultado similar al del siguiente ejemplo: La respuesta enumera todos los números de parte y valores ETag para las piezas que ha cargado en la carga multiparte. Copie estos valores en el portapapeles y continúe con la sección Creación de un archivo .json de carga multiparte de esta guía.

    Resultado del comando list-parts

Creación de un archivo .json de carga multiparte

Complete el siguiente procedimiento para crear un archivo .json de carga multiparte que defina todas las partes que ha cargado y sus valores ETag. Esto es necesario más adelante en esta guía para completar la carga multiparte.

  1. Abra un editor de texto y pegue la respuesta del comando list-parts que solicitó en la sección anterior de esta guía.

    El resultado debe ser similar al siguiente ejemplo:

    Carga multiparte del archivo JSON número 1
  2. Vuelva a formatear el archivo de texto como se muestra en el ejemplo siguiente:

    Carga multiparte del archivo JSON número 2
  3. Guarde el archivo de texto en su ordenador como mpstructure.json y continúe con la sección Finalización de una carga multiparte con AWS CLI de esta guía.

Finalización de una carga multiparte con AWS CLI

Complete el siguiente procedimiento para completar una carga multiparte mediante la AWS Command Line Interface (AWS CLI). Para ello, utilice el comando complete-multipart-upload. Para obtener más información, consulte complete-multipart-upload en la Referencia de comandos de la AWS CLI.

nota

Debe instalar la AWS CLI y configurarla para Lightsail y Amazon S3 para poder continuar con este procedimiento. Para obtener más información, consulte Configuración de la AWS CLI para trabajar con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para cargar una parte en su bucket.

    aws s3api complete-multipart-upload --multipart-upload file://JSONFileName --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • JSONFileName: nombre del archivo .json que creó anteriormente en esta guía (por ejemplo, mpstructure.json).

    • BucketName: nombre del bucket para el que desea completar una carga multiparte.

    • ObjectKey: clave de objeto de la carga multiparte.

    • UploadID: ID de carga de la carga multiparte que ha creado anteriormente en esta guía.

    aws s3api complete-multipart-upload --multipart-upload file://mpstructure.json --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    Debería ver una respuesta similar a la del siguiente ejemplo. Esto confirma que se ha completado la carga multiparte. El objeto ahora está ensamblado y disponible en el bucket.

    Resultado del comando complete-multipart-upload

Enumeración de cargas multiparte para un bucket mediante AWS CLI

Complete el siguiente procedimiento para enumerar todas las cargas multiparte de un bucket mediante la AWS Command Line Interface (AWS CLI). Para ello, utilice el comando list-multipart-uploads. Para obtener más información, consulte list-multipart-uploads en la Referencia de comandos de la AWS CLI.

nota

Debe instalar la AWS CLI y configurarla para Lightsail y Amazon S3 para poder continuar con este procedimiento. Para obtener más información, consulte Configuración de la AWS CLI para trabajar con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para cargar una parte en su bucket.

    aws s3api list-multipart-uploads --bucket BucketName

    En el comando, sustituya BucketName por el nombre del bucket para el que desea enumerar todas las cargas multiparte.

    Ejemplo:

    aws s3api list-multipart-uploads --bucket amzn-s3-demo-bucket

    Debería ver una respuesta similar a la del siguiente ejemplo.

    Resultado del comando list-multipart-uploads

Detención de una carga multiparte con AWS CLI

Complete el siguiente procedimiento para detener una carga multiparte mediante la AWS Command Line Interface (AWS CLI). Haga esto si inició una carga multiparte pero ya no desea continuar. Para ello, utilice el comando abort-multipart-upload. Para obtener más información, consulte abort-multipart-upload en la Referencia de comandos de la AWS CLI.

nota

Debe instalar la AWS CLI y configurarla para Lightsail y Amazon S3 para poder continuar con este procedimiento. Para obtener más información, consulte Configuración de la AWS CLI para trabajar con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para cargar una parte en su bucket.

    aws s3api abort-multipart-upload --bucket BucketName --key ObjectKey --upload-id "UploadID" --acl bucket-owner-full-control

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • BucketName: nombre del bucket para el que desea detener una carga multiparte.

    • ObjectKey: clave de objeto de la carga multiparte.

    • UploadID: ID de carga de la carga multiparte que desea detener.

    Ejemplo:

    aws s3api abort-multipart-upload --bucket amzn-s3-demo-bucket --key sailbot.mp4 --upload-id "R4QU.mO.exampleiHWiLOeNw7JtXX7OotRhTLsXXCzF21CZdYlfj5lfjtiMnpzVw2WPj.exampleBTmL_N_.42.DlHYOTsITFsX.tO3XOUTTAHiCxY5VR8jWRGdkVkUG" --acl bucket-owner-full-control

    Este comando no devuelve ninguna respuesta. Puede ejecutar un comando list-multipart-uploads para confirmar que se detuvo la carga multiparte.