Direkt zum Inhalt

Wie kann ich die Integrität eines auf Amazon S3 hochgeladenen Objekts überprüfen?

Lesedauer: 3 Minute
0

Ich möchte ein Objekt in einen Amazon Simple Storage Service (Amazon S3)-Bucket hochladen. Außerdem möchte ich die Integrität des hochgeladenen Objekts überprüfen.

Lösung

Verwende für Allzweck-Buckets den Content-MD5-Header, um die Integrität hochgeladener Objekte zu überprüfen. Verwende für Verzeichnis-Buckets einen unterstützten Prüfsummenalgorithmus, um die Integrität hochgeladener Objekte zu überprüfen.

Hinweis: Amazon S3 unterstützt keine Integritätsprüfungen mit Content-MD5, wenn du den PutObject-Vorgang für Verzeichnis-Buckets verwendest. Amazon S3 unterstützt auch keine Integritätsprüfungen für Vektor- oder Tabellen-Buckets.

Allzweck-Buckets

Berechne bei Allzweck-Buckets den Content-MD5-Wert des Objekts.

Hinweis: Wenn du den Content-MD5-Header verwendest, überprüft Amazon S3 das Objekt anhand des bereitgestellten Content-MD5-Werts. Wenn die Werte nicht übereinstimmen, erhältst du eine Fehlermeldung.

Windows-Betriebssystem

Wenn du ein Windows-Betriebssystem verwendest, kannst du das Get-FileHash-cmdlet der Microsoft PowerShell Utility verwenden, um einen MD5-Digest zu berechnen.

  1. Mit dem folgenden Befehl wird ein MD5-Digest abgerufen:

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

    Hinweis: Ersetze \path\to\file durch den Pfad zu deinem Objekt.

    Hinweis: Das Get-FileHash-cmdlet ist mit Microsoft PowerShell Utility Version 4.0 und höher verfügbar.

    Hier ist ein Beispiel für eine Ausgabe:

    Algorithm : MD5Hash      : C9A5A6878D97B48CC965C1E41859F034  
    Path      : \path\to\file
  2. Wende die Base64-Codierung auf den berechneten MD5Hash-Wert an, um den erforderlichen Content-MD5-Wert zu erhalten:

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

    In diesem Beispiel ist die Ausgabe von Echo ContentMD5, yaWmh42XtIzJZcHkGFnwNA==, der erforderliche Content-MD5-Wert.

Linux-Betriebssystem

Wenn du ein Linux-Betriebssystem verwendest, führe den folgenden OpenSSL-Befehl aus, um den Content-MD5-Wert der Datei abzurufen:

openssl md5 -binary path/to/file | base64

Hinweis: Ersetze path/to/file durch den Pfad zu deinem Objekt.

Verzeichnis-Buckets

Überprüfe die Integrität hochgeladener Objekte in Verzeichnis-Buckets mit einem anderen unterstützten Prüfsummenalgorithmus als MD5. Verwende beispielsweise die folgenden Schritte, um die Integrität hochgeladener Objekte mit dem x-amz-checksum-sha256-Header (SHA256) zu überprüfen.

Hinweis: Wenn du den x-amz-checksum-sha256-Header verwendest, vergleicht Amazon S3 das Objekt mit dem angegebenen x-amz-checksum-sha256-Wert. Wenn die Werte nicht übereinstimmen, erhältst du eine Fehlermeldung.

Windows-Betriebssystem

Wenn du ein Windows-Betriebssystem verwendest, kannst du das Get-FileHash-cmdlet der Microsoft PowerShell Utility verwenden, um einen SHA256-Digest zu berechnen.

  1. Mit dem folgenden Befehl wird ein SHA256-Digest abgerufen:

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

    Hinweis: Ersetze \path\to\file durch den Pfad zu deinem Objekt.

    Hier ist ein Beispiel für eine Ausgabe:

    Algorithm : SHA256  
    Hash      : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855  
    Path      : \path\to\file
  2. Wende die Base64-Codierung auf den berechneten SHA256-Digest an, um den erforderlichen SHA256-Wert zu erhalten:

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

    In diesem Beispiel ist die Ausgabe von Echo ContentSHA256, 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=, der erforderliche SHA256-Wert.

Linux-Betriebssystem

Wenn du ein Linux-Betriebssystem verwendest, führe den folgenden OpenSSL-Befehl aus, um den SHA256-Wert der Datei abzurufen:

openssl sha256 -binary path/to/file | base64

Hinweis: Ersetze path/to/file durch den Pfad zu deinem Objekt.

Überprüfen der Integrität des hochgeladenen Objekts

Wenn du PutObject verwendest, um Objekte auf Amazon S3 hochzuladen, übergib den Content-MD5-Wert als Anforderungs-Header für Allzweck-Buckets.

Übergib für Verzeichnis-Buckets einen x-amz-checksum-sha256-Wert und einen x-amz-checksum-algorithm-Header, der auf SHA256 gesetzt ist, als Anforderungs-Header. Amazon S3 überprüft das Objekt anhand des angegebenen Content-MD5-/SHA256-Werts. Wenn die Werte nicht übereinstimmen, erhältst du eine Fehlermeldung. Du kannst den SHA256-Anforderungs-Header auch mit der UploadPart-API von Amazon S3 verwenden.

Ähnliche Informationen

Allgemeine Anforderungs-Header

Amazon-S3-Fehlerantworten

AWS OFFICIALAktualisiert vor 5 Monaten