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

Se você for novato no armazenamento de arquivo no Amazon Simple Storage Service (Amazon S3), recomendamos que comece aprendendo mais sobre as classes de armazenamento do S3 Glacier no Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive. Para obter mais informações, consulte Classes de armazenamento S3 Glacier e Classes de armazenamento para arquivamento de objetos no Guia do usuário do Amazon S3.

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á.

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:

  • Megabyte alinhado - Um intervalo [StartByte, EndBytes] é um megabyte (1024*1024) alinhado quando StartBytesé divisível por 1 MB e EndBytesmais 1 é divisível por 1 MB ou é igual ao final do arquivo especificado (tamanho do byte do arquivo menos 1). Um intervalo usado na Initiate Job API, se especificado, é deverá estar alinhado a megabytes.

  • Alinhado com hash de árvore - Um intervalo [StartBytes, EndBytes] é um hash de árvore alinhado em relação a um arquivo se e somente se a raiz do hash de árvore construído sobre o 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 arquivamento alinhado com o hash da á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