Carga de archivos grandes con la AWS CLI - Amazon S3 Glacier

Esta página es solo para los clientes actuales del servicio S3 Glacier que utilizan Vaults y el original de 2012. REST API

Si busca soluciones de almacenamiento de archivos, le sugerimos que utilice las clases de almacenamiento S3 Glacier en Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive. Para obtener más información sobre estas opciones de almacenamiento, consulte Clases de almacenamiento de S3 Glacier y Almacenamiento de datos a largo plazo con clases de almacenamiento de S3 Glacier en la Guía del usuario de Amazon S3. Estas clases de almacenamiento utilizan Amazon S3API, están disponibles en todas las regiones y se pueden gestionar en la consola de Amazon S3. Ofrecen funciones como el análisis de costos de almacenamiento, Storage Lens, funciones avanzadas de cifrado opcionales y más.

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 grandes con la AWS CLI

Puede cargar un archivo en Amazon S3 Glacier (S3 Glacier) mediante AWS Command Line Interface (AWS CLI). Para mejorar la experiencia de carga de archivos más grandes, S3 Glacier ofrece varias API operaciones para admitir las cargas de varias partes. Al usar estas API operaciones, puede cargar archivos en partes. Estas partes se pueden cargar por separado, en cualquier orden y en paralelo. Si se produce un error al cargar una parte, solo tendrá que volver a cargar esa parte, no el archivo completo. Puede usar la carga multiparte con archivos que tengan un tamaño entre 1 byte hasta 40 000 gibibytes (GiB) aproximadamente.

Para obtener más información acerca de las cargas multiparte de S3 Glacier, consulte Carga de archivos grandes por partes (carga multiparte).

(Requisito previo) Configurar el AWS CLI

  1. Descargue y configure la AWS CLI. Para obtener instrucciones, consulte los siguientes temas en la Guía del usuario de la AWS Command Line Interface :

    Instalación del AWS Command Line Interface

    Configuración del AWS Command Line Interface

  2. Compruebe AWS CLI la configuración introduciendo los siguientes comandos en la línea de comandos. Estos comandos no proporcionan las credenciales de forma explícita, por lo que se utilizan las credenciales del perfil predeterminado.

    • Pruebe a usar el comando de ayuda.

      aws help
    • Para obtener una lista de los almacenes de S3 Glacier en la cuenta configurada, use el comando list-vaults. Reemplazar 123456789012 con tu Cuenta de AWS ID.

      aws glacier list-vaults --account-id 123456789012
    • Para ver los datos de configuración actuales de AWS CLI, utilice el aws configure list comando.

      aws configure list

(Requisito previo) Instalación de Python

Para completar una carga multiparte, debe calcular el hash de SHA256 árbol del archivo que va a cargar. Hacerlo no es lo mismo que calcular el hash de SHA256 árbol del archivo que quieres subir. Para calcular el hash de SHA256 árbol del archivo que estás cargando, puedes usar Java C# (con. NET), o. Python En este ejemplo, se usará Python. Para obtener instrucciones sobre cómo usar Java o C#, consulte Cálculo de sumas de comprobación.

Para obtener más información sobre la instalación de Python, consulte Instalar o actualizar Python en la guía para desarrolladores de Boto3.

(Requisito previo) Creación de un almacén de S3 Glacier

Para usar el siguiente ejemplo, debe haber creado al menos un almacén de S3 Glacier. Para obtener más información acerca de la creación de almacenes, consulte Creación de un almacén en Amazon S3 Glacier.

Ejemplo: carga de archivos grandes en partes mediante el AWS CLI

En este ejemplo, creará un archivo y utilizará API operaciones de carga multiparte para cargar este archivo, en partes. Amazon S3 Glacier

importante

Antes de comenzar con este procedimiento, asegúrese de haber realizado todos los pasos que sean requisitos previos. Para cargar un archivo, debe tener un almacén creado, AWS CLI configurado y estar preparado para usar Java C# o Python calcular un hash de SHA256 árbol.

En el siguiente procedimiento se utilizan los complete-multipart-upload AWS CLI comandos initiate-multipart-uploadupload-multipart-part, y.

Para obtener más detallada sobre cada uno de estos comandos, consulte initiate-multipart-upload, upload-multipart-part y complete-multipart-upload en la Referencia de los comandos de la AWS CLI .

  1. Utilice el comando initiate-multipart-upload para crear un recurso de carga multiparte. En la solicitud, especifique el tamaño de la parte en número de bytes. Todas las partes que se carguen, salvo la última, tendrán este tamaño. Al iniciar una carga, no es necesario saber el tamaño total del archivo. Sin embargo, necesitará el tamaño total (en bytes) de cada una de las partes al completar la carga en el paso final.

    En el siguiente comando, reemplace los valores de los parámetros --vault-name y --account-ID por su información propia. Este comando especifica que cargará un archivo con un tamaño de parte de 1 mebibyte (MiB) (1024 x 1024 bytes) por archivo. Sustituya el valor del parámetro --part-size si es necesario.

    aws glacier initiate-multipart-upload --vault-name awsexamplevault --part-size 1048576 --account-id 123456789012

    Resultado previsto:

    { "location": "/123456789012/vaults/awsexamplevault/multipart-uploads/uploadId", "uploadId": "uploadId" }

    Cuando termine, el comando mostrará el ID de carga y la ubicación del recurso de carga multiparte en S3 Glacier. Este ID de carga se usará en los pasos posteriores.

  2. Para este ejemplo, puede usar los siguientes comandos para crear un archivo de 4,4 MiB, dividirlo en fragmentos de 1 MiB y cargar cada uno de los fragmentos. Para cargar sus propios archivos, puede seguir un procedimiento similar: dividir los datos en fragmentos y cargar cada una de las partes.

    Linux o macOS

    El siguiente comando crea un archivo de 4,4 MiB denominado file_to_upload en Linux o macOS.

    mkfile -n 9000b file_to_upload
    Windows

    El siguiente comando crea un archivo de 4,4 MiB denominado file_to_upload en Windows.

    fsutil file createnew file_to_upload 4608000
  3. A continuación, dividirá este archivo en fragmentos de 1 MiB.

    split -b 1048576 file_to_upload chunk

    Ahora tiene los cinco fragmentos siguientes. Los cuatro primeros son de 1 MiB y el último es de aproximadamente 400 kibibytes (KiB).

    chunkaa chunkab chunkac chunkad chunkae
  4. Use el comando upload-multipart-part para cargar una parte de un archivo. Las partes de archivo se pueden cargar en cualquier orden. También puede cargarlas en paralelo. En una carga multiparte, se pueden cargar hasta 10 000 partes.

    En el siguiente comando, reemplace los valores de los parámetros --vault-name, --account-ID y --upload-id. El ID de carga debe coincidir con el ID proporcionado como salida del comando initiate-multipart-upload. El parámetro --range especifica que cargará una parte con un tamaño de 1 MiB (1024 x 1024 bytes). Este tamaño debe coincidir con el especificado en el comando initiate-multipart-upload. Ajuste este valor de tamaño si es necesario. El parámetro --body especifica el nombre de la parte que está cargando.

    aws glacier upload-multipart-part --body chunkaa --range='bytes 0-1048575/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID

    Si se ejecuta correctamente, el comando generará un resultado que contiene la suma de comprobación de la parte cargada.

  5. Vuelva a ejecutar el comando upload-multipart-part para cargar las partes restantes de la carga multiparte. Actualice los valores de los parámetros --range y –-body de cada comando para que coincidan con la parte que está cargando.

    aws glacier upload-multipart-part --body chunkab --range='bytes 1048576-2097151/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkac --range='bytes 2097152-3145727/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkad --range='bytes 3145728-4194303/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    aws glacier upload-multipart-part --body chunkae --range='bytes 4194304-4607999/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
    nota

    El valor del parámetro --range del comando final es más pequeño porque la parte final de nuestra carga es inferior a 1 MiB. Si se ejecuta correctamente, cada comando generará un resultado que contiene la suma de comprobación de cada parte cargada.

  6. A continuación, se ensamblará el archivo y se finalizará la carga. Debe incluir el tamaño total y el hash de SHA256 árbol del archivo.

    Para calcular el hash de SHA256 árbol del archivo, puede usar Java C# oPython. En este ejemplo, se usará Python. Para obtener instrucciones sobre cómo usar Java o C#, consulte Cálculo de sumas de comprobación.

    Cree el archivo checksum.py de Python e inserte el código siguiente. Si es necesario, sustituya el nombre del archivo original.

    from botocore.utils import calculate_tree_hash checksum = calculate_tree_hash(open('file_to_upload', 'rb')) print(checksum)
  7. Ejecute checksum.py para calcular el hash del SHA256 árbol. Es posible que el hash siguiente no coincida con la salida.

    $ python3 checksum.py $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
  8. Use el comando complete-multipart-upload para finalizar la carga del archivo. Sustituya los valores de los parámetros --vault-name, --account-ID, --upload-ID y --checksum. El valor del parámetro --archive especifica el tamaño total del archivo en bytes. Este valor debe ser la suma de todos los tamaños de las partes individuales que ha cargado. Sustituya este valor si es necesario.

    aws glacier complete-multipart-upload --archive-size 4608000 --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID --checksum checksum

    Al finalizar, el comando mostrará el ID, la suma de comprobación y la ubicación del archivo en S3 Glacier.