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. Como posso fazer isso?
Breve descrição
Siga estas etapas para verificar a integridade dos objetos carregados usando o cabeçalho Content-MD5:
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á um erro.
1. Calcule o valor do Content-MD5 do objeto.
2. Verifique a integridade do objeto carregado passando o valor do Content-MD5 como cabeçalho da solicitação durante o carregamento do objeto.
Resolução
Calcule o valor do Content-MD5 do objeto
SO Windows
Se você estiver usando um sistema operacional Windows, poderá usar o cmdlet Get-FileHash do Microsoft PowerShell Utility para calcular o resumo MD5, assim:
Get-FileHash \path\to\file -algorithm MD5 | Format-List
Observação: O cmdlet Get-FileHash está disponível com o Microsoft PowerShell Utility versão 4.0 e posterior.
Aqui está um exemplo de saída:
Algorithm : MD5
Hash : C9A5A6878D97B48CC965C1E41859F034
Path : \path\to\file
Em seguida, aplique a codificação base64 ao resumo MD5 calculado 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.
SO Linux
Se você estiver usando um sistema operacional Linux, execute o seguinte comando OpenSSL para obter o valor do Content-MD5 do seu arquivo:
openssl md5 -binary PATH/TO/FILE | base64
Verificar a integridade do objeto carregado
Ao usar o PutObject para carregar objetos para o Amazon S3, passe o valor do Content-MD5 como cabeçalho da solicitação. O Amazon S3 verifica o objeto em relação ao valor do Content-MD5 fornecido. Se os valores não corresponderem, você receberá um erro.
O cabeçalho Content-MD5 da solicitação também pode ser usado com a API S3 UploadPart.
Informações relacionadas
Cabeçalhos de solicitação comuns
Respostas de erro do S3