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
Argomenti
Prerequisiti
Per eseguire i glacier
comandi, è necessario:
Istalla e configura la AWS CLI. Per ulteriori informazioni, consulta Installazione, aggiornamento e disinstallazione di AWS CLI e Credenziali di autenticazione e accesso per AWS CLI.
-
Questo tutorial utilizza diversi strumenti a riga di comando che in genere vengono preinstallati su sistemi operativi di tipo Unix, tra cui Linux e macOS. Gli utenti Windows possono utilizzare gli stessi strumenti installando Cygwin
ed eseguendo i comandi dal terminale Cygwin. Le utilità e i comandi nativi di Windows che eseguono le stesse funzioni sono indicati, laddove disponibili.
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=11+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
3145728File 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
chunkcreating 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-namemyvault
{ "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-namemyvault
{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
$
aws glacier upload-multipart-part --upload-id $UPLOADID --body
chunkab
--range 'bytes 1048576-2097151/*' --account-id - --vault-namemyvault
{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
$
aws glacier upload-multipart-part --upload-id $UPLOADID --body
chunkac
--range 'bytes 2097152-3145727/*' --account-id - --vault-namemyvault
{ "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
-
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'
-
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
-
Combina i primi due hash e utilizza l'hash binario del risultato.
$
cat hash1 hash2 > hash12
$
openssl dgst -sha256 -binary hash12 > hash12hash
-
Combina l'hash padre dei blocchi
aa
eab
con l'hash del bloccoac
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:
-
Caricamento di archivi di grandi dimensioni in parti nella Amazon S3 Glacier Developer Guide
-
Elaborazione dei checksum nella Guida per gli sviluppatori di Amazon S3 Glacier
-
Utilizzo dei Vaults nella Guida per sviluppatori di Amazon S3 Glacier