Ir para o conteúdo

Como posso verificar a integridade de um objeto carregado no Amazon S3?

4 minuto de leitura
0

Quero fazer upload de um objeto em um bucket do Amazon Simple Storage Service (Amazon S3). Além disso, quero verificar a integridade do objeto carregado.

Resolução

Em buckets de uso geral, use o cabeçalho Content-MD5 para verificar a integridade dos objetos carregados. Em buckets de diretório, use um algoritmo de soma de verificação compatível para verificar a integridade dos objetos carregados.

Observação: o Amazon S3 não oferece suporte a verificações de integridade com o Content-MD5 quando você usa a operação PutObject em buckets de diretório. O Amazon S3 também não oferece suporte a verificações de integridade para buckets de vetor ou de tabela.

Buckets de uso geral

Em buckets de uso geral, calcule o valor Content-MD5 do objeto.

Observação: ao utilizar o cabeçalho Content-MD5, o Amazon S3 verifica o objeto em relação ao valor do Content-MD5 fornecido. Se os valores não corresponderem, você receberá uma mensagem de erro.

Sistema operacional Windows (SO)

Se você estiver usando um sistema operacional Windows, é possível usar o cmdlet Get-FileHash do Microsoft PowerShell Utility para calcular um resumo do MD5.

  1. O comando a seguir recebe um resumo do MD5:

    Get-FileHash \path\to\file -algorithm MD5 | Format-List

    Observação: substitua \path\to\file pelo caminho para seu objeto.

    Observação: o cmdlet Get-FileHash está disponível no Microsoft PowerShell Utility versão 4.0 e posterior.

    Aqui está um exemplo de saída:

    Algorithm : MD5Hash      : C9A5A6878D97B48CC965C1E41859F034  
    Path      : \path\to\file
  2. Aplique a codificação base64 ao valor calculado de MD5Hash para obter o valor do Content-MD5 necessário:

    hashString ='C9A5A6878D97B48CC965C1E41859F034'$hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')  
    ContentMD5 = [System.Convert]::ToBase64String($hashByteArray)  
    Echo ContentMD5  
    yaWmh42XtIzJZcHkGFnwNA==

    Neste exemplo, a saída do Echo ContentMD5, yaWmh42XtIzJZcHkGFnwNA==, é o valor do Content-MD5 necessário.

Sistema operacional Linux (SO)

Se você estiver usando um sistema operacional Linux, execute o seguinte comando OpenSSL para obter o valor de Content-MD5 do seu arquivo:

openssl md5 -binary path/to/file | base64

Observação: substitua path/to/file pelo caminho para seu objeto.

Buckets de diretório

Verifique a integridade dos objetos carregados em buckets de diretório com um algoritmo de soma de verificação compatível diferente do MD5. Por exemplo, use as etapas a seguir para verificar a integridade dos objetos carregados com o cabeçalho x-amz-checksum-sha256 (SHA256).

Observação: quando você usa o cabeçalho x-amz-checksum-sha256, o Amazon S3 compara o objeto com o valor de x-amz-checksum-sha256 fornecido. Se os valores não corresponderem, você receberá uma mensagem de erro.

SO Windows

Se você estiver usando um sistema operacional Windows, é possível usar o cmdlet Get-FileHash do Microsoft PowerShell Utility para calcular um resumo do SHA256.

  1. O comando a seguir recebe um resumo do SHA256:

    Get-FileHash \path\to\file -algorithm SHA256 | Format-List

    Observação: substitua \path\to\file pelo caminho para seu objeto.

    Aqui está um exemplo de saída:

    Algorithm : SHA256  
    Hash      : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855  
    Path      : \path\to\file
  2. Aplique a codificação base64 ao resumo do SHA256 calculado para obter o valor de SHA256 necessário:

    hashString ='E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855'  
    hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')  
    ContentSHA256 = [System.Convert]::ToBase64String($hashByteArray)  
    Echo ContentSHA256  
    `47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=`

    Neste exemplo, a saída de Echo ContentSHA256, 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= é o valor de SHA256 necessário.

SO Linux

Se você estiver usando um sistema operacional Linux, execute o seguinte comando OpenSSL para obter o valor de SHA256 do seu arquivo:

openssl sha256 -binary path/to/file | base64

Observação: substitua path/to/file pelo caminho para seu objeto.

Verifique a integridade do objeto carregado

Ao usar PutObject para carregar objetos para o Amazon S3, passe o valor de Content-MD5 como um cabeçalho de solicitação em buckets de uso geral.

Em buckets de diretório, transmita um valor x-amz-checksum-sha256 e um cabeçalho x-amz-checksum-algorithm definido como SHA256 como cabeçalhos de solicitação. O Amazon S3 verifica o objeto em relação ao valor de Content-MD5/SHA256 fornecido. Se os valores não corresponderem, você receberá uma mensagem de erro. Também é possível usar o cabeçalho de solicitação SHA256 com a API UploadPart do Amazon S3.

Informações relacionadas

Common request headers (Cabeçalhos de solicitação comuns)

Amazon S3 error responses (Respostas a erros Amazon S3)

AWS OFICIALAtualizada há 4 meses
Sem comentários