Salta al contenuto

Come posso verificare l'integrità di un oggetto caricato in Amazon S3?

4 minuti di lettura
0

Desidero caricare un oggetto in un bucket Amazon Simple Storage Service (Amazon S3). Inoltre, desidero verificare l'integrità dell'oggetto caricato.

Risoluzione

Nel caso dei bucket per uso generico, utilizza l'intestazione Content-MD5 per verificare l'integrità degli oggetti caricati. Nel caso dei bucket di directory, utilizza un algoritmo di checksum supportato per verificare l'integrità degli oggetti caricati.

Nota: Amazon S3 non supporta i controlli dell'integrità con Content-MD5 quando utilizzi l'operazione PutObject in bucket di directory. Amazon S3 inoltre non supporta i controlli dell'integrità per bucket vettoriali o di tabelle.

Bucket per uso generico

Nel caso dei bucket per uso generico, calcola il valore Content-MD5 dell'oggetto.

Nota: quando utilizzi l'intestazione Content-MD5, Amazon S3 verifica l'oggetto rispetto al valore Content-MD5 fornito. Se i valori non corrispondono, ricevi un errore.

Sistema operativo Windows

Se utilizzi un sistema operativo Windows, puoi utilizzare il cmdlet Get-FileHash di Microsoft PowerShell Utility per calcolare un digest MD5.

  1. Il comando seguente ottiene un digest MD5:

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

    Nota: sostituisci**\path\to\file** con il percorso del tuo oggetto.

    Nota: il cmdlet Get-FileHash è disponibile con Microsoft PowerShell Utility versione 4.0 e successive.

    Ecco un esempio di output:

    Algorithm : MD5Hash      : C9A5A6878D97B48CC965C1E41859F034  
    Path      : \path\to\file
  2. Applica la codifica base64 al valore MD5Hash calcolato per ottenere il valore content-MD5 richiesto:

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

    In questo esempio, l'output di Echo ContentMD5, yaWmh42XtIzJZcHkGFnwNA==, è il valore Content-MD5 richiesto.

Sistema operativo Linux

Se utilizzi un sistema operativo Linux, esegui questo comando OpenSSL per ottenere il valore Content-MD5 del file:

openssl md5 -binary path/to/file | base64

Nota: sostituisci path/to/file con il percorso del tuo oggetto.

Bucket di directory

Verifica l'integrità degli oggetti caricati nei bucket di directory con un algoritmo di checksum supportato diverso da MD5. Ad esempio, utilizza i seguenti passaggi per verificare l'integrità degli oggetti caricati con l'intestazione x-amz-checksum-sha256 header (SHA256).

Nota: quando utilizzi l'intestazione x-amz-checksum-sha256, Amazon S3 verifica l'oggetto rispetto al valore x-amz-checksum-sha256 fornito. Se i valori non corrispondono, ricevi un errore.

Sistema operativo Windows

Se utilizzi un sistema operativo Windows, puoi utilizzare il cmdlet Get-FileHash di Microsoft PowerShell Utility per calcolare un digest SHA256.

  1. Il comando seguente ottiene un digest SHA256:

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

    Nota: sostituisci**\path\to\file** con il percorso del tuo oggetto.

    Ecco un esempio di output:

    Algorithm : SHA256  
    Hash      : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855  
    Path      : \path\to\file
  2. Applica la codifica base64 al digest SHA256 calcolato per ottenere il valore SHA256 richiesto:

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

    In questo esempio, l'output di Echo ContentSHA256, 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=, è il valore SHA256 richiesto.

Sistema operativo Linux

Se utilizzi un sistema operativo Linux, esegui questo comando OpenSSL per ottenere il valore SHA256 del file:

openssl sha256 -binary path/to/file | base64

Nota: sostituisci path/to/file con il percorso del tuo oggetto.

Verifica l'integrità dell'oggetto caricato

Quando utilizzi PutObject per caricare oggetti in Amazon S3, passa il valore Content-MD5 come intestazione della richiesta nel caso dei bucket per uso generico.

Nel caso dei bucket di directory, passa invece un valore x-amz-checksum-sha256 e un'intestazione x-amz-checksum-algorithm impostata su SHA256 come intestazioni della richiesta. Amazon S3 verifica l'oggetto rispetto al valore Content-MD5/SHA256 fornito. Se i valori non corrispondono, ricevi un errore. Puoi anche utilizzare l'intestazione della richiesta SHA256 con l'API Amazon S3 UploadPart.

Informazioni correlate

Common request headers (Intestazioni della richiesta comuni)

Error responses (Risposte di errore)

AWS UFFICIALEAggiornata 5 mesi fa