Caricamento di archivi di grandi dimensioni mediante l' AWS CLI - Amazon S3 Glacier

Questa pagina è riservata ai clienti esistenti del servizio S3 Glacier che utilizzano Vaults e l'originale del 2012. REST API

Se stai cercando soluzioni di archiviazione, ti consigliamo di utilizzare le classi di storage S3 Glacier in Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Per ulteriori informazioni su queste opzioni di storage, consulta le classi di storage S3 Glacier e lo storage dei dati a lungo termine con le classi di storage S3 Glacier nella Amazon S3 User Guide. Queste classi di storage utilizzano Amazon S3API, sono disponibili in tutte le regioni e possono essere gestite all'interno della console Amazon S3. Offrono funzionalità come Storage Cost Analysis, Storage Lens, funzionalità di crittografia opzionali avanzate e altro ancora.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Caricamento di archivi di grandi dimensioni mediante l' AWS CLI

Puoi caricare un archivio in Amazon S3 Glacier (S3 Glacier) utilizzando (). AWS Command Line Interface AWS CLI Per migliorare l'esperienza di caricamento per archivi di grandi dimensioni, S3 Glacier offre diverse operazioni per supportare i caricamenti in più parti. API Utilizzando queste API operazioni, puoi caricare gli archivi in parti. Queste parti possono essere caricate in modo indipendente, in qualsiasi ordine e in parallelo. Se il caricamento di una parte non ha esito positivo, è sufficiente caricare di nuovo quella parte e non l'intero archivio. Puoi utilizzare i caricamenti in più parti per archivi con una dimensione compresa tra 1 byte e 40.000 gibibyte (GiB).

Per ulteriori informazioni sui caricamenti in più parti di S3 Glacier, consulta Caricamento in parti di archivi di grandi dimensioni (caricamento in più parti).

(Prerequisito) Configurazione di AWS CLI

  1. Scarica e configura la AWS CLI. Per le istruzioni, consulta i seguenti argomenti nella Guida per l'utente dell'AWS Command Line Interface :

    Installazione di AWS Command Line Interface

    Configurazione di AWS Command Line Interface

  2. Verifica la AWS CLI configurazione inserendo i seguenti comandi al prompt dei comandi. Poiché entrambi questi comandi non forniscono credenziali in modo esplicito, vengono utilizzate le credenziali del profilo predefinito.

    • Prova a utilizzare il comando help.

      aws help
    • Per ottenere un elenco delle vault S3 Glacier sull'account configurato, utilizza il comando list-vaults. Replace (Sostituisci) 123456789012 con il tuo Account AWS ID.

      aws glacier list-vaults --account-id 123456789012
    • Per vedere i dati di configurazione correnti per AWS CLI, usa il aws configure list comando.

      aws configure list

(Prerequisito) Installa Python

Per completare un caricamento in più parti, devi calcolare l'hash SHA256 dell'albero dell'archivio che stai caricando. Questa operazione è diversa dal calcolo dell'hash SHA256 ad albero del file che desideri caricare. Per calcolare l'hash dell'SHA256albero dell'archivio che stai caricando, puoi usare Java C# (con. NET) o. Python In questo esempio verrà utilizzato Python. Per istruzioni sull'uso di Java o C#, consulta Calcolo di checksum.

Per informazioni sull'installazione di Python, consulta la pagina Installazione o aggiornamento di Python nella Guida per lo sviluppatore di Boto3.

(Prerequisito) Crea una vault di S3 Glacier

Per utilizzare l'esempio seguente, devi aver creato almeno una vault di S3 Glacier. Per ulteriori informazioni sulla creazione di vault, consulta Creazione di un vault in Amazon S3 Glacier.

Esempio: caricamento di archivi di grandi dimensioni in parti utilizzando AWS CLI

In questo esempio, creerai un file e utilizzerai API operazioni di caricamento in più parti per caricare questo file, in parti, su. Amazon S3 Glacier

Importante

Prima di intraprendere questa procedura, accertati di avere eseguito tutti i passaggi necessari. Per caricare un archivio, è necessario creare un archivio, AWS CLI configurarlo ed essere pronti a utilizzare Java C# o Python a calcolare l'hash di un SHA256 albero.

La procedura seguente utilizza i comandi initiate-multipart-upload eupload-multipart-part. complete-multipart-upload AWS CLI

Per ulteriori informazioni dettagliate su ognuno di questi comandi, consulta initiate-multipart-upload, upload-multipart-part e complete-multipart-upload nella Guida di riferimento ai comandi AWS CLI .

  1. Usa il comando initiate-multipart-upload per creare una risorsa di caricamento in più parti. Nella richiesta, specifica la dimensione della parte in numero di byte. Ogni parte che carichi, tranne l'ultima, deve essere di quella dimensione. Non è necessario conoscere la dimensione globale dell'archivio quando si avvia un caricamento. Tuttavia, avrai bisogno della dimensione totale, in byte, di ogni parte per completare il caricamento nella fase finale.

    Nel comando seguente, sostituisci i valori per i parametri --vault-name e --account-ID con le tue informazioni. Questo comando specifica che caricherai un archivio con una dimensione parziale di 1 mebibyte (MiB) (1024 x 1024 byte) per file. Se necessario, sostituisci il valore di questo parametro --part-size.

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

    Output previsto:

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

    Al termine, il comando restituirà l'ID e la posizione di caricamento della risorsa di caricamento in più parti in S3 Glacier. Sarà necessario usare questo ID di caricamento nei passaggi successivi.

  2. Per questo esempio, è possibile utilizzare i seguenti comandi per creare un file da 4,4 MiB, dividerlo in blocchi da 1 MiB e caricare ogni blocco. Per caricare i propri file, è possibile seguire una procedura simile suddividendo i dati in blocchi e caricando ogni parte.

    Linux o macOS:

    Il comando seguente crea un file da 4,4 MiB, denominato file_to_upload, su Linux o macOS.

    mkfile -n 9000b file_to_upload
    Windows

    Il comando seguente crea un file da 4,4 MiB, denominato file_to_upload, su Windows.

    fsutil file createnew file_to_upload 4608000
  3. Successivamente, dividerai questo file in blocchi da 1 MiB.

    split -b 1048576 file_to_upload chunk

    Ora hai le seguenti cinque parti. Le prime quattro sono da 1 MiB e l'ultima è di circa 400 kibibyte (KiB).

    chunkaa chunkab chunkac chunkad chunkae
  4. Usa il comandi upload-multipart-part per caricare una parte di un archivio. Puoi caricare gli archivi in parti in un qualsiasi ordine. Puoi anche caricare le parti in parallelo. In un caricamento in più parti è consentito caricare fino a 10.000 parti.

    Nel comando seguente, sostituisci i valori per i parametri --vault-name, --account-ID e --upload-id. L'ID di caricamento deve corrispondere all'ID fornito come output del comando initiate-multipart-upload. Il parametro --range specifica che caricherai una parte con una dimensione di 1 MiB (1024 x 1024 byte). Questa dimensione deve corrispondere a quella specificata nel comando initiate-multipart-upload. Regola il valore della dimensione, se necessario. Il parametro --body specifica il nome della parte che stai caricando.

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

    In caso di successo, il comando produrrà un output contenente il checksum per la parte caricata.

  5. Esegui nuovamente il comando upload-multipart-part per caricare le parti rimanenti del caricamento in più parti. Aggiorna i valori dei parametri --range e –-body per ogni comando in modo che corrispondano alla parte che stai caricando.

    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

    Il valore del parametro --range del comando finale è inferiore perché la parte finale del nostro caricamento è inferiore a 1 MiB. In caso di successo, ogni comando produrrà un output contenente il checksum per ogni parte caricata.

  6. Successivamente, assemblerai l'archivio e completerai il caricamento. È necessario includere la dimensione totale e l'hash dell'SHA256albero dell'archivio.

    Per calcolare l'hash ad SHA256 albero dell'archivio, puoi usare Java C# o. Python In questo esempio verrà utilizzato Python. Per istruzioni sull'uso di Java o C#, consulta Calcolo di checksum.

    Crea il file checksum.py di Python e inserisci il codice seguente. Se necessario, sostituisci il nome del file originale.

    from botocore.utils import calculate_tree_hash checksum = calculate_tree_hash(open('file_to_upload', 'rb')) print(checksum)
  7. Esegui checksum.py per calcolare l'hash dell'SHA256albero. Il seguente hash potrebbe non corrispondere al tuo output.

    $ python3 checksum.py $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
  8. Usa il comando complete-multipart-upload per completare il caricamento dell'archivio. Sostituisci i valori per i parametri --vault-name, --account-ID, --upload-ID e --checksum. Il valore del parametro --archive specifica la dimensione totale, in byte, dell'archivio. Questo valore deve essere la somma di tutte le dimensioni delle singole parti caricate. Se necessario, sostituisci questo valore.

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

    Al termine, il comando mostrerà l'ID, il checksum e la posizione dell'archivio in S3 Glacier.