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

Questa documentazione è valida AWS CLI solo per la versione 1. Per la documentazione relativa alla versione 2 di AWS CLI, consulta la Guida per l'utente della versione 2.

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 S3 Glacier in AWS CLI

Un'introduzione ad Amazon S3 Glacier

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

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

aws glacier help
Nota

Per riferimenti ai comandi ed esempi aggiuntivi, aws glacier consultate la sezione Command Reference.AWS CLI

Prerequisiti

Per eseguire i glacier comandi, è necessario:

Crea un vault Amazon S3 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 S3 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

Successivamente, dividi il file in blocchi da 1 MiB (1.048.576 byte) utilizzando uno splitter di file.

$ 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 S3 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" }

S3 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. AWS CLI Emette un ID di caricamento quando l'operazione è completa. 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, utilizzate il segno di percentuale (%) su entrambi i lati del nome della variabile (ad esempio,%UPLOADID%).

È necessario specificare l'intervallo di byte di ogni parte al momento del caricamento in modo che S3 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 S3 Glacier richiede un tree hash del file originale per confermare che tutte le parti caricate siano rimaste intatte. AWS

Per calcolare un hash ad albero, è necessario dividere il file in parti da 1 MiB e calcolare un hash SHA binario -256 per ogni pezzo. 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. Open SSL è disponibile per Windows all'indirizzo Open.org. SSL

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 S3 Glacier Developer Guide.

Risorse

AWS CLI riferimento:

Riferimento del servizio: