As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando o Amazon S3 Glacier no AWS CLI
Introdução ao Amazon S3 Glacier |
---|
|
Este tópico mostra exemplos de AWS CLI comandos que realizam tarefas comuns para o S3 Glacier. Os exemplos demonstram como usar o AWS CLI para fazer upload de um arquivo grande para o S3 Glacier dividindo-o em partes menores e enviando-as a partir da linha de comando.
Você pode acessar os recursos do Amazon S3 Glacier usando o AWS Command Line Interface ().AWS CLI Para listar os AWS CLI comandos do 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 ter mais informações, consulte Instalando ou atualizando para a versão mais recente do AWS CLI e Credenciais de autenticação e acesso para o 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-name
myvault
{ "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 chamado largefile
que contém exatamente 3 MiB de dados aleatórios.
Linux ou 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
é 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 createnew
largefile
3145728File C:\temp\largefile is created
Em seguida, divida o arquivo em pedaços de 1 MiB (1.048.576 bytes) usando um divisor de arquivos.
$
split -b 1048576 --verbose
largefile
chunkcreating 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 saída é uma 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 --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
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 um hash de árvore do arquivo original para confirmar que todas as partes enviadas chegaram intactas. AWS
Para calcular um hash de árvore, você deve dividir o arquivo em partes de 1 MiB e calcular um hash SHA binário -256 de cada peça. 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
. SSLO Open está disponível para Windows em SSLOpen.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 chunk
creating file `chunkaa' creating file `chunkab' creating file `chunkac'
-
Calcule e armazene o hash binário SHA -256 de cada bloco.
$
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
aa
eab
com o hash de blocoac
e o resultado do hash, desta vez exibindo hexadecimal. Armazene o resultado em um shell variável.$
cat hash12hash hash3 > hash123
$
openssl dgst -sha256 hash123
SHA256(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
AWS CLI referência:
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