Como usar o Amazon S3 Glacier na AWS CLI
| Introdução ao Amazon S3 Glacier |
|---|
|
|
Este tópico mostra exemplos de comandos da AWS CLI que executam tarefas comuns para o S3 Glacier. Os exemplos demonstram como usar a AWS CLI para fazer upload de um arquivo grande para o S3 Glacier dividindo-o em partes menores e fazendo upload a partir da linha de comando.
Você pode acessar os recursos do Amazon S3 Glacier usando a AWS Command Line Interface (AWS CLI). Para listar os comandos da AWS CLI para o S3 Glacier, use o comando a seguir.
aws glacier help
nota
Para obter referência de comandos e exemplos adicionais, consulte aws glacier na Referência de comandos da AWS CLI.
Tópicos
Pré-requisitos
Para executar os comandos glacier, você precisa:
Instale e configure a AWS CLI. Para obter mais informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI e Autenticação e credenciais de acesso para a AWS CLI.
-
Este tutorial usa várias ferramentas de linha de comando que normalmente vêm pré-instaladas em sistemas operacionais Unix, incluindo Linux e macOS. Os usuários do Windows podem usar as mesmas ferramentas instalando o Cygwin
e executando os comandos do terminal Cygwin. São observados comandos originários do Windows e utilitários que executam as mesmas funções onde disponível.
Criar um cofre do Amazon S3 Glacier
Crie um cofre com o create-vault.
$aws glacier create-vault --account-id - --vault-namemyvault{ "location": "/123456789012/vaults/myvault" }
nota
Todos os comandos do S3 Glacier exigem um parâmetro de ID de conta. Use o caractere de hífen (--account-id -) para usar a conta atual.
Preparar um arquivo para upload
Crie um arquivo para o upload de teste. Os comandos a seguir criam um arquivo com o nome largefile com exatamente 3 MiB de dados aleatórios.
Linux ou macOS
$dd if=/dev/urandom of=largefilebs=3145728 count=11+0 records in 1+0 records out 3145728 bytes (3.1 MB) copied, 0.205813 s, 15.3 MB/s
dd é um utilitário que copia um número de bytes a partir de um arquivo de entrada para um arquivo de saída. O exemplo anterior usa o arquivo de dispositivo do sistema /dev/urandom como uma fonte de dados aleatórios. O fsutil executa uma função semelhante no Windows.
Windows
C:\>fsutil file createnewlargefile3145728File C:\temp\largefile is created
Em seguida, divida o arquivo em blocos de 1 MiB (1.048.576 bytes) usando um divisor de arquivos.
$split -b 1048576 --verboselargefilechunkcreating file `chunkaa' creating file `chunkab' creating file `chunkac'
Iniciar um multipart upload e fazer upload de arquivos
Crie um upload fracionado no Amazon S3 Glacier usando o 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" }
O S3 Glacier exige o tamanho de cada parte em bytes (1 MiB neste exemplo), o nome do cofre e uma ID de conta para configurar o upload fracionado. A AWS CLI gera um ID de upload quando a operação é concluída. Salve o ID de upload para um shell variável para uso posterior.
Linux ou macOS
$UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
Windows
C:\>set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
Depois, use o comando upload-multipart-part para fazer upload das três partes.
$aws glacier upload-multipart-part --upload-id $UPLOADID --bodychunkaa--range 'bytes 0-1048575/*' --account-id - --vault-namemyvault{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }$aws glacier upload-multipart-part --upload-id $UPLOADID --bodychunkab--range 'bytes 1048576-2097151/*' --account-id - --vault-namemyvault{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }$aws glacier upload-multipart-part --upload-id $UPLOADID --bodychunkac--range 'bytes 2097152-3145727/*' --account-id - --vault-namemyvault{ "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553" }
nota
O exemplo anterior usa o sinal de dólar ($) para fazer referência ao conteúdo da variável de shell UPLOADID no Linux. Na linha de comando do Windows, use um sinal de porcentagem (%) nos dois lados do nome da variável (por exemplo, %UPLOADID%).
Especifique o intervalo de bytes de cada parte ao fazer upload para que o S3 Glacier possa remontá-lo na ordem correta. Cada parte é 1.048.576 bytes, portanto, a primeira parte ocupa 0-1048575 bytes, a segunda 1048576-2097151 e a terceira 2097152-3145727.
Concluir o upload
O Amazon S3 Glacier exige uma árvore hash do arquivo original para confirmar que todas as partes carregadas chegaram à AWS intactas.
Para calcular uma árvore hash, você deve dividir o arquivo em partes de 1 MiB e calcular um binário SHA-256 hash de cada item. Em seguida, divida a lista de hashes em pares, combine os dois binários hashes em cada par e execute hashes dos resultados. Repita esse processo até que haja apenas um hash à esquerda. Se houver um número ímpar de hashes em qualquer nível, envie para o próximo nível sem modificá-lo.
A chave para calcular uma árvore hash corretamente ao usar os utilitários de linha de comando é armazenar cada hash em formato binário e converter apenas para hexadecimal na última etapa. A combinação ou hash de qualquer versão hexadecimal hash em árvore gerará um resultado incorreto.
nota
Os usuários do Windows podem usar o comando type em vez do cat. OpenSSL está disponível para Windows em OpenSSL.org
Para calcular uma árvore hash
-
Se ainda não fez isso, divida o arquivo original em partes de 1 MiB.
$split --bytes=1048576 --verbose largefile chunkcreating file `chunkaa' creating file `chunkab' creating file `chunkac' -
Calcule e armazene o hash SHA-256 binário de cada fragmento.
$openssl dgst -sha256 -binary chunkaa >hash1$openssl dgst -sha256 -binary chunkab >hash2$openssl dgst -sha256 -binary chunkac >hash3 -
Combine os primeiros dois hashes e execute o hash binário do resultado.
$cat hash1 hash2 > hash12$openssl dgst -sha256 -binary hash12 > hash12hash -
Combine o pai de partes de hash
aaeabcom o hash de blocoace o resultado do hash, desta vez exibindo hexadecimal. Armazene o resultado em um shell variável.$cat hash12hash hash3 > hash123$openssl dgst -sha256 hash123SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67$TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
Por fim, preencha o upload com o comando complete-multipart-upload. Este comando usa o tamanho do arquivo original em bytes, o valor de hash em árvore final em hexadecimal, e a ID da conta e nome do cofre.
$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" }
Também é possível verificar o status do cofre usando o 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
O status do cofre é atualizado cerca de uma vez por dia. Consulte Como trabalhar com cofres para obter mais informações.
Já é seguro remover o bloco e os arquivos de hash que você criou.
$rm chunk* hash*
Para obter mais informações sobre uploads fracionados, consulte Upload de arquivos grandes em partes e Como computar somas de verificação no Guia do desenvolvedor do Amazon S3 Glacier.
Recursos
Referência da AWS CLI:
Referência do serviço:
-
Carregar arquivos grandes em partes no Guia do desenvolvedor do Amazon S3 Glacier
-
Calcular somas de verificação no Guia do desenvolvedor do Amazon S3 Glacier
-
Trabalhar com vaults no Guia do desenvolvedor do Amazon S3 Glacier