Utilizzo di Amazon Glacier in AWS CLI - AWS Command Line Interface

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à.

Utilizzo di Amazon Glacier in AWS CLI

Un'introduzione ad Amazon Glacier

Questo argomento mostra esempi di AWS CLI comandi che eseguono attività comuni per Amazon Glacier. Gli esempi mostrano come utilizzare AWS CLI per caricare un file di grandi dimensioni su Amazon Glacier suddividendolo in parti più piccole e caricandole dalla riga di comando.

Puoi accedere alle funzionalità di Amazon Glacier utilizzando AWS Command Line Interface ().AWS CLI Per elencare i AWS CLI comandi per Amazon Glacier, usa il seguente comando.

aws glacier help
Nota

Per i riferimenti e ulteriori esempi sui comandi, consulta aws glacier in AWS CLI Command Reference.

Prerequisiti

Per eseguire i comandi glacier, è necessario:

Crea un vault Amazon Glacier

Creazione di un insieme di credenziali con il comando create-vault.

$ aws glacier create-vault --account-id - --vault-name myvault { "location": "/123456789012/vaults/myvault" }
Nota

Tutti i comandi Amazon Glacier richiedono un parametro ID account. Utilizza il trattino (--account-id -) per utilizzare l'account corrente.

Preparazione di un file per il caricamento

Creazione di un file per il caricamento di prova. I seguenti comandi creano un file denominato largefile che contiene esattamente 3 MiB di dati casuali.

Linux o macOS

$ dd if=/dev/urandom of=largefile bs=3145728 count=1 1+0 records in 1+0 records out 3145728 bytes (3.1 MB) copied, 0.205813 s, 15.3 MB/s

dd è un'utilità che consente di copiare una serie di byte da un file di input a un file di output. L'esempio precedente usa il file del dispositivo di sistema /dev/urandom come origine dei dati casuali. fsutil esegue una funzione simile in Windows.

Windows

C:\> fsutil file createnew largefile 3145728 File C:\temp\largefile is created

Quindi, suddividi il file in blocchi da 1 MiB (1048576 byte) con un file splitter.

$ split -b 1048576 --verbose largefile chunk creating file `chunkaa' creating file `chunkab' creating file `chunkac'

Avvio di un caricamento in più parti e caricamento dei file

Crea un caricamento multiparte in Amazon Glacier utilizzando il comando. initiate-multipart-upload

$ aws glacier initiate-multipart-upload --account-id - --archive-description "multipart upload test" --part-size 1048576 --vault-name myvault { "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ", "location": "/123456789012/vaults/myvault/multipart-uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ" }

Amazon Glacier richiede la dimensione di ogni parte in byte (1 MiB in questo esempio), il nome del vault e un ID account per configurare il caricamento multiparte. Al termine dell' AWS CLI operazione, emette un ID di caricamento. Salva l'ID in una variabile shell da utilizzare in futuro.

Linux o macOS

$ UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

Windows

C:\> set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"

Quindi, utilizza il comando upload-multipart-part per caricare singolarmente le tre parti.

$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkaa --range 'bytes 0-1048575/*' --account-id - --vault-name myvault { "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" } $ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkab --range 'bytes 1048576-2097151/*' --account-id - --vault-name myvault { "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" } $ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkac --range 'bytes 2097152-3145727/*' --account-id - --vault-name myvault { "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
Nota

L'esempio precedente utilizza il simbolo del dollaro ($) per fare riferimento ai contenuti della variabile della shell UPLOADID in Linux. Nella riga di comando di Windows, utilizza un segno di percentuale (%) su entrambe le estremità del nome di variabile (ad esempio, %UPLOADID%).

È necessario specificare l'intervallo di byte di ogni parte al momento del caricamento in modo che Amazon Glacier possa riassemblarla nell'ordine corretto. Ogni parte è 1048576 byte, pertanto la prima parte occupa i byte 0-1048575, la seconda i byte 1048576-2097151 e la terza i byte 2097152-3145727.

Completamento del caricamento

Amazon Glacier richiede un tree hash del file originale per confermare che tutti i pezzi caricati siano rimasti intatti. AWS

Per calcolare una struttura hash, devi suddividere il file in parti da 1 MiB e calcolare un hash SHA-256 binario di ogni parte. Quindi si suddivide l'elenco di hash in coppie, si combinano i due hash binari in ciascuna coppia e si utilizzano gli hash risultanti. Ripeti il processo fino a esaurire tutti gli hash. Se il numero di hash è dispari a qualsiasi livello, promuovilo al livello successivo senza modificarlo.

La chiave per calcolare correttamente una struttura hash quando si usano le utility a riga di comando consiste nel memorizzare ogni hash in formato binario ed effettuare la conversione in esadecimale solo nell'ultima fase. Combinando ed eseguendo l'hashing della versione esadecimale di qualsiasi hash nella struttura si otterrà un risultato non corretto.

Nota

Gli utenti Windows possono utilizzare il comando type anziché cat. OpenSSL è disponibile per Windows all'indirizzo OpenSSL.org.

Per calcolare una struttura hash
  1. Se non lo hai già fatto, suddividi il file originale in parti da 1 MiB.

    $ split --bytes=1048576 --verbose largefile chunk creating file `chunkaa' creating file `chunkab' creating file `chunkac'
  2. Calcola e memorizza l'hash binario SHA-256 di ogni blocco.

    $ openssl dgst -sha256 -binary chunkaa > hash1 $ openssl dgst -sha256 -binary chunkab > hash2 $ openssl dgst -sha256 -binary chunkac > hash3
  3. Combina i primi due hash e utilizza l'hash binario del risultato.

    $ cat hash1 hash2 > hash12 $ openssl dgst -sha256 -binary hash12 > hash12hash
  4. Combina l'hash padre dei blocchi aa e ab con l'hash del blocco ac ed esegui l'hashing del risultato, questa volta con un output esadecimale. Memorizza il risultato in una variabile della shell.

    $ cat hash12hash hash3 > hash123 $ openssl dgst -sha256 hash123 SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67 $ TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67

Infine, completa il caricamento con il comando complete-multipart-upload. Questo comando utilizza le dimensioni del file originale in byte, il valore hash nella struttura finale esadecimale, il tuo ID account e il nome dell'insieme di credenziali.

$ aws glacier complete-multipart-upload --checksum $TREEHASH --archive-size 3145728 --upload-id $UPLOADID --account-id - --vault-name myvault { "archiveId": "d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg", "checksum": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67", "location": "/123456789012/vaults/myvault/archives/d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg" }

Puoi anche controllare lo stato del vault utilizzando il comando describe-vault.

$ aws glacier describe-vault --account-id - --vault-name myvault { "SizeInBytes": 3178496, "VaultARN": "arn:aws:glacier:us-west-2:123456789012:vaults/myvault", "LastInventoryDate": "2018-12-07T00:26:19.028Z", "NumberOfArchives": 1, "CreationDate": "2018-12-06T21:23:45.708Z", "VaultName": "myvault" }
Nota

Lo stato dell'insieme di credenziali viene aggiornato circa una volta al giorno. Per ulteriori informazioni, consulta l'argomento relativo all'utilizzo di vault.

Ora puoi rimuovere i file di blocco e hash creati in modo sicuro.

$ rm chunk* hash*

Per ulteriori informazioni sui caricamenti in più parti, consulta Uploading Large Archives in Parts and Computing Checksums nella Amazon Glacier Developer Guide.

Resources

AWS CLI riferimento:

Riferimento al servizio: