Receber somas de verificação durante o download de dados - Amazon S3 Glacier

Esta página destina-se somente a clientes atuais do serviço S3 Glacier que usam cofres e a API REST original de 2012.

Se você estiver procurando soluções de armazenamento de arquivos, sugerimos usar as classes de armazenamento do S3 Glacier no Amazon S3: S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Para saber mais sobre essas opções de armazenamento, consulte Classes de armazenamento do Amazon S3 Glacier e Noções básicas sobre as classes de armazenamento S3 Glacier para armazenamento de dados de longo prazo no Guia do usuário do Amazon S3. Essas classes de armazenamento usam a API do Amazon S3, estão disponíveis em todas as regiões e podem ser gerenciadas no console do Amazon S3. Elas oferecem análise de custos de armazenamento, Lente de Armazenamento, recursos avançados de criptografia opcionais e muito mais.

Receber somas de verificação durante o download de dados

Ao recuperar um arquivo usando a Initiate Job API (consulte Initiate Job (trabalhos POST)), você pode especificar um intervalo para recuperação do arquivo. Da mesma maneira, ao fazer download dos dados usando a Get Job Output API (consulte Get Job Output (GET output)), você pode especificar um intervalo de dados para download. Existem duas características desses intervalos que precisam ser compreendidas quando você está recuperando e fazendo download dos dados do arquivo. O intervalo a ser recuperado precisa estar alinhado em megabytes ao arquivo. O intervalo de recuperação e o intervalo de download devem estar alinhados ao hash de árvore para receber valores da soma de verificação quando você faz download dos seus dados. A definição desses dois tipos de alinhamentos de intervalo é a seguinte:

  • Alinhado a megabytes – Um intervalo [StartByte, EndBytes] está alinhado a megabytes (1024*1024) quando StartBytes é divisível por 1 MB e EndBytes mais 1 é divisível por 1 MB ou é igual ao final do arquivo especificado (tamanho de bytes do arquivo menos 1). Um intervalo usado na Initiate Job API, se especificado, é deverá estar alinhado a megabytes.

  • Alinhado ao hash de árvore – Um intervalo [StartBytes, EndBytes] estará alinhado ao hash de árvore em relação a um arquivo se e somente se a raiz do hash de árvore compilada ao longo do intervalo for equivalente a um nó no hash de árvore de todo o arquivo. O intervalo de recuperação e o intervalo de download devem estar alinhados ao hash de árvore para receber valores da soma de verificação dos dados cujo download você fez. Para obter um exemplo de intervalos e a relação com o hash de árvore do arquivo, consulte Exemplo de hash de árvore: recuperar um intervalo de arquivo que esteja alinhado ao hash de árvore.

    Um intervalo alinhado ao hash de árvore também está alinhado a megabytes. No entanto, um intervalo alinhado a megabytes não necessariamente está alinhado ao hash de árvore.

Os seguintes casos descrevem quando você recebe um valor da soma de verificação ao fazer download dos dados do arquivo:

  • Se você não especificar um intervalo a ser recuperado na solicitação Initiate Job e fizer download de todo o arquivo na solicitação Get Job.

  • Se você não especificar um intervalo a ser recuperado na solicitação Initiate Job e especificar um intervalo alinhado ao hash de árvore para download na solicitação Get Job.

  • Se você especificar um intervalo alinhado ao hash de árvore a ser recuperado na solicitação Initiate Job e fizer download de todo o intervalo na solicitação Get Job.

  • Se você especificar um intervalo alinhado ao hash de árvore a ser recuperado na solicitação Initiate Job e especificar um intervalo alinhado ao hash de árvore para download na solicitação Get Job.

Se especificar um intervalo a ser recuperado na solicitação Initiate Job que não esteja alinhado ao hash de árvore, você ainda poderá obter os dados do arquivo, mas nenhum valor de soma de verificação retornará quando fizer download dos dados na solicitação Get Job.

Exemplo de hash de árvore: recuperar um intervalo de arquivo que esteja alinhado ao hash de árvore

Suponhamos que você tenha um arquivo de 6,5 MB no cofre e queira recuperar 2 MB do arquivo. A maneira como você especifica o intervalo de 2 MB na solicitação Initiate Job determina se recebe valores de soma de verificação de dados quando faz download dos dados. O diagrama a seguir ilustra dois intervalos de 2 MB para o arquivo de 6,5 MB cujo download você pode fazer. Ambos os intervalos estão alinhados a megabytes, mas somente um está alinhado ao hash de árvore.

Diagrama mostrando a recuperação de um intervalo de arquivo alinhado com o hash de árvore.

Especificação do intervalo alinhado ao hash de árvore

Esta seção fornece a especificação exata para o que constitui um intervalo alinhado ao hash de árvore. Os intervalos alinhados ao hash de árvore são importantes quando você está fazendo download de uma parte de um arquivo e especifica o intervalo de dados a serem recuperados, além do intervalo de download dos dados recuperados. Se ambos os intervalos estiverem alinhados ao hash de árvore, você receberá dados da soma de verificação ao fazer download dos dados.

Um intervalo [A, B] estará alinhado ao hash de árvore em relação a um arquivo se e somente se quando um novo hash de árvore for compilado ao longo do [A, B], a raiz do hash de árvore desse intervalo for equivalente a um nó no hash de árvore de todo o arquivo. Você pode ver isso mostrado no diagrama em Exemplo de hash de árvore: recuperar um intervalo de arquivo que esteja alinhado ao hash de árvore. Nesta seção, fornecemos a especificação do alinhamento do hash de árvore.

Considere [P, Q) como a consulta de intervalo de um arquivo de N megabytes (MB) e que P e Q sejam múltiplos de um MB. O intervalo real inclusivo é [P MB, Q MB – 1 byte], mas por uma questão de simplicidade, mostramos esse intervalo como [P, Q). Assim, com essas considerações,

  • Se P for um número ímpar, haverá somente um intervalo alinhado ao hash de árvore possível – ou seja, [P, P +1 MB).

  • Se P for um número par e k for um número máximo em que P pode ser gravado como 2k * X, haverá, no máximo, k intervalos alinhados ao hash de árvore de intervalo começando com P. X é um número inteiro maior que 0. Os intervalos alinhados ao hash de árvore estão nas seguintes categorias:

    • Para cada i, em que (0 <= i <= k) e P + 2i < N, [P, Q + 2i] é um intervalo alinhado ao hash de árvore.

    • P = 0 é o caso especial em que A = 2[lgN]*0