Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Überprüfen der Objektintegrität in Amazon S3
Amazon S3 verwendet Prüfsummenwerte, um die Integrität von Daten zu verifizieren, die Sie hoch- oder herunterladen. Darüber hinaus können Sie anfordern, dass ein weiterer Prüfsummenwert für jedes Objekt berechnet wird, das Sie in Amazon S3 speichern. Sie können einen Prüfsummenalgorithmus auswählen, der beim Hochladen, Kopieren oder stapelweisen Kopieren Ihrer Daten verwendet werden soll.
Wenn Sie Ihre Daten hochladen, verwendet Amazon S3 den Algorithmus, den Sie für die Berechnung einer Prüfsumme auf der Serverseite ausgewählt haben, und validiert sie mit dem angegebenen Wert, bevor das Objekt gespeichert und die Prüfsumme als Teil der Objektmetadaten gespeichert wird. Diese Validierung funktioniert konsistent für alle Verschlüsselungsmodi, Objektgrößen und Speicherklassen, sowohl für einteilige als auch für mehrteilige Uploads. Wenn Sie Ihre Daten jedoch kopieren oder stapelweise kopieren, berechnet Amazon S3 die Prüfsumme für das Quellobjekt und verschiebt sie zum Zielobjekt.
Anmerkung
Wenn Sie einen einteiligen oder mehrteiligen Upload durchführen, können Sie optional eine vorberechnete Prüfsumme als Teil Ihrer Anforderung aufnehmen und den Prüfsummentyp für das gesamte Objekt verwenden. Um vorberechnete Werte mit mehreren Objekten zu verwenden, verwenden Sie das AWS CLI oder AWS SDKs.
Verwenden unterstützter Prüfsummenalgorithmen
Mit Amazon S3 können Sie einen Prüfsummenalgorithmus auswählen, um Ihre Daten während des Uploads zu validieren. Der angegebene Prüfsummenalgorithmus wird dann zusammen mit Ihrem Objekt gespeichert und kann zur Überprüfung der Datenintegrität bei Downloads verwendet werden. Sie können einen der folgenden Secure Hash Algorithms (SHA)- oder Cyclic Redundancy Check (CRC)-Prüfsummenalgorithmen auswählen, um den Prüfsummenwert zu berechnen:
-
CRC-64/NVME ()
CRC64NVME
-
CRC-32 ()
CRC32
-
CRC-32 C ()
CRC32C
-
SHA-1 ()
SHA1
-
SHA-256 ()
SHA256
Zusätzlich können Sie mit dem Content-Header für jede Anfrage eine Prüfsumme angeben. MD5
Wenn Sie ein Objekt hochladen, können Sie den Algorithmus angeben, den Sie verwenden möchten:
-
Wenn Sie den verwenden AWS Management Console, wählen Sie den Prüfsummenalgorithmus aus, den Sie verwenden möchten. Sie können den Prüfsummenwert des Objekts optional angeben. Wenn Amazon S3 das Objekt erhält, berechnet es die Prüfsumme mithilfe des von Ihnen angegebenen Algorithmus. Wenn die beiden Prüfsummenwerte nicht übereinstimmen, generiert Amazon S3 einen Fehler.
-
Wenn Sie ein SDK verwenden, beachten Sie Folgendes:
-
Legen Sie den
ChecksumAlgorithm
-Parameter auf den Algorithmus fest, den Amazon S3 verwenden soll. Wenn Sie bereits über eine vorberechnete Prüfsumme verfügen, übergeben Sie den Prüfsummenwert an das AWS SDK, und das SDK nimmt den Wert in die Anforderung auf. Wenn Sie keinen Prüfsummenwert übergeben oder keinen Prüfsummenalgorithmus angeben, berechnet das SDK automatisch einen Prüfsummenwert für Sie und fügt ihn zum Integritätsschutz in die Anforderung ein. Wenn der individuelle Prüfsummenwert nicht mit dem festgelegten Wert des Prüfsummenalgorithmus übereinstimmt, schlägt die Anforderung in Amazon S3 mit einemBadDigest
-Fehler fehl. -
Wenn Sie ein aktualisiertes AWS SDK verwenden, wählt das SDK einen Prüfsummenalgorithmus für Sie aus. Sie können jedoch diesen Prüfsummenalgorithmus außer Kraft setzen.
-
Wenn Sie keinen Prüfsummenalgorithmus angeben und das SDK auch keine Prüfsumme für Sie berechnet, wählt S3 automatisch den Prüfsummenalgorithmus CRC-64/NVME ().
CRC64NVME
-
-
Bei Verwendung der REST-API nutzen Sie den
x-amz-sdk-checksum-algorithm
-Parameter nicht. Verwenden Sie stattdessen einen der algorithmenspezifischen Header (z. B.x-amz-checksum-crc32
).
Um einen dieser Prüfsummenwerte auf Objekte anzuwenden, die bereits in Amazon S3 hochgeladen wurden, können Sie das Objekt kopieren und angeben, ob Sie den bestehenden Prüfsummenalgorithmus oder einen neuen verwenden möchten. Wenn Sie keinen Algorithmus angeben, verwendet S3 den vorhandenen Algorithmus. Wenn das Quellobjekt keinen angegebenen Prüfsummenalgorithmus oder Prüfsummenwert hat, verwendet Amazon S3 den CRC-64/NVME-Algorithmus, um den Prüfsummenwert für das Zielobjekt zu berechnen. Sie können auch einen Prüfsummenalgorithmus angeben, wenn Sie Objekte mit S3 Batch Operations kopieren.
Wichtig
Wenn Sie einen mehrteiligen Upload mit Prüfsummen für zusammengesetzte Prüfsummen (oder Prüfsummen auf Teilebene) verwenden, müssen die Artikelnummern des mehrteiligen Uploads fortlaufend sein und mit 1 beginnen. Wenn Sie versuchen, eine mehrteilige Upload-Anforderung mit nicht aufeinanderfolgenden Teilenummern abzuschließen, generiert Amazon S3 einen HTTP 500 Internal Server
-Fehler.
Vollständige Objekt- und zusammengesetzte Prüfsummentypen
In Amazon S3 gibt es zwei Arten von unterstützten Prüfsummen:
-
Vollständige Objektprüfsummen: Eine vollständige Objektprüfsumme wird auf der Grundlage des gesamten Inhalts eines mehrteiligen Uploads berechnet und deckt alle Daten vom ersten Byte des ersten Teils bis zum letzten Byte des letzten Teils ab.
Anmerkung
Alle PUT-Anforderungen erfordern einen vollständigen Objektprüfsummentyp.
-
Zusammengesetzte Prüfsummen: Eine zusammengesetzte Prüfsumme wird auf der Grundlage der einzelnen Prüfsummen jedes Teils in einem mehrteiligen Upload berechnet. Anstatt eine Prüfsumme auf der Grundlage des gesamten Dateninhalts zu berechnen, aggregiert dieser Ansatz die Prüfsummen auf Teilebene (vom ersten bis zum letzten Teil), um eine einzige, kombinierte Prüfsumme für das gesamte Objekt zu erhalten.
Anmerkung
Wenn ein Objekt als mehrteiliger Upload hochgeladen wird, ist das Entity-Tag (ETag) für das Objekt kein Digest des gesamten Objekts MD5 . Stattdessen berechnet Amazon S3 den MD5 Digest jedes einzelnen Teils beim Hochladen. Die MD5 Digests werden verwendet, um den Wert ETag für das endgültige Objekt zu bestimmen. Amazon S3 verkettet die Bytes für die MD5 Digests miteinander und berechnet dann den Digest dieser verketteten MD5 Werte. Während des letzten ETag Erstellungsschritts fügt Amazon S3 am Ende einen Bindestrich mit der Gesamtzahl der Teile hinzu.
Amazon S3 unterstützt die folgenden Typen von vollständigen Objekt- und zusammengesetzten Prüfsummenalgorithmen:
-
CRC-64/NVME (
CRC64NVME
): Unterstützt nur den vollständigen Objektalgorhythmus. -
CRC-32 (
CRC32
): Unterstützt sowohl vollständige Objekt- als auch zusammengesetzte Algorithmustypen. -
CRC-32C (
CRC32C
): Unterstützt sowohl vollständige Objekt- als auch zusammengesetzte Algorithmustypen. -
SHA-1 (
SHA1
): Unterstützt sowohl vollständige Objekt- als auch zusammengesetzte Algorithmustypen. -
SHA-256 (
SHA256
): Unterstützt sowohl vollständige Objekt- als auch zusammengesetzte Algorithmustypen.
Anmerkung
Wenn Sie einen SHA-1
oder SHA-256
Checksum-Algorithmus für einen mehrteiligen Upload verwenden, müssen Sie den Typ des zusammengesetzten Algorithmus verwenden. Wenn Sie einen SHA-1
oder SHA-256
Checksum-Algorithmus für einen einteiligen Upload verwenden, wird nur der Algorithmustyp „Voll Object“ unterstützt.
Uploads einzelner Teile
Prüfsummen von Objekten, die in einem einzigen Teil (mit PutObject
) hochgeladen werden, werden als vollständige Objektprüfsummen behandelt. Wenn Sie ein Objekt in die Amazon-S3-Konsole hochladen, können Sie den Prüfsummenalgorithmus auswählen, den S3 verwenden soll, und (optional) auch einen vorberechneten Wert angeben. Amazon S3 validiert dann diese Prüfsumme, bevor das Objekt und sein Prüfsummenwert gespeichert werden. Sie können die Datenintegrität eines Objekts überprüfen, wenn Sie den Prüfsummenwert beim Herunterladen von Objekten anfordern.
Mehrteilige Uploads
Wenn Sie das Objekt mithilfe der MultipartUpload
-API in mehreren Teilen hochladen, können Sie den Prüfsummenalgorithmus, den Amazon S3 verwenden soll, und den Prüfsummentyp (vollständiges Objekt oder zusammengesetzt) angeben.
Die folgende Tabelle zeigt, welcher Prüfsummenalgorithmus für jeden Prüfsummenalgorithmus in einem mehrteiligen Upload unterstützt wird:
Prüfsummenalgorithmus | Vollständiges Objekt | Zusammengesetzt |
---|---|---|
CRC-64/NVME () CRC64NVME |
Ja | Nein |
CRC-32 () CRC32 |
Ja | Ja |
CRC-32 C () CRC32C |
Ja | Ja |
SHA-1 () SHA1 |
Nein | Ja |
SHA-256 () SHA256 |
Nein | Ja |
Verwenden vollständiger Objektprüfsummen für den mehrteiligen Upload
Wenn Sie einen mehrteiligen Upload erstellen oder durchführen, können Sie vollständige Objektprüfsummen für die Validierung beim Upload verwenden. Das bedeutet, dass Sie den Prüfsummenalgorithmus für die MultipartUpload
-API bereitstellen können, was Ihre Tools zur Integritätsprüfung vereinfacht, da Sie die Teilgrenzen für hochgeladene Objekte nicht mehr verfolgen müssen. Sie können die Prüfsumme des gesamten Objekts in der CompleteMultipartUpload
-Anforderung zusammen mit der Objektgröße angeben.
Wenn Sie während eines mehrteiligen Uploads eine vollständige Objektprüfsumme angeben, übergibt das AWS SDK die Prüfsumme an Amazon S3, und S3 validiert die Objektintegrität serverseitig und vergleicht sie mit dem empfangenen Wert. Anschließend speichert Amazon S3 das Objekt, wenn die Werte übereinstimmen. Wenn die beiden Werte nicht übereinstimmen, schlägt S3 mit einem BadDigest
-Fehler fehl. Die Prüfsumme Ihres Objekts wird auch in den Objektmetadaten gespeichert, die Sie später zur Validierung der Datenintegrität des Objekts verwenden.
Für vollständige Objektprüfsummen können Sie die Prüfsummenalgorithmen CRC-64/NVME (CRC64NVME
), CRC-32 () oder CRC-32C () in S3 verwenden. CRC32
CRC32C
Vollständige Objektprüfsummen in mehrteiligen Uploads sind nur für CRC-basierte Prüfsummen verfügbar, da sie zu einer vollständigen Objektprüfsumme linearisiert werden können. Diese Linearisierung ermöglicht es Amazon S3, Ihre Anfragen zu parallelisieren, um die Leistung zu verbessern. Insbesondere kann S3 die Prüfsumme des gesamten Objekts aus den Prüfsummen auf Teilebene berechnen. Diese Art der Überprüfung ist für andere Algorithmen wie SHA und nicht verfügbar. MD5 Da S3 über standardmäßige Integritätsschutzmaßnahmen verfügt, hängt S3, wenn Objekte ohne Prüfsumme hochgeladen werden, automatisch den empfohlenen CRC-64/NVME () -Prüfsummenalgorithmus für das vollständige Objekt an das Objekt an. CRC64NVME
Anmerkung
Um den mehrteiligen Upload zu initiieren, können Sie den Prüfsummenalgorithmus und den vollständigen Objektprüfsummentyp angeben. Nachdem Sie den Prüfsummenalgorithmus und den Prüfsummentyp für das vollständige Objekt angegeben haben, können Sie den vollständigen Objektprüfsummenwert für den mehrteiligen Upload angeben.
Verwenden von Prüfsummen auf Teilebene für mehrteilige Uploads
Wenn Objekte zu Amazon S3 hochgeladen werden, können sie entweder als einzelnes Objekt oder mithilfe des mehrteiligen Upload-Prozesses in Teilen hochgeladen werden. Sie können einen Prüfsummentyp für Ihren mehrteiligen Upload wählen. Für mehrteilige Uploads mit Prüfsummen auf Teilebene (oder zusammengesetzte Prüfsummen) berechnet Amazon S3 die Prüfsumme für jeden einzelnen Teil mithilfe des angegebenen Prüfsummenalgorithmus. Sie können UploadPart
verwenden, um die Prüfsummenwerte für jeden Teil anzugeben. Wenn das Objekt, das Sie in die Amazon S3 S3-Konsole hochladen möchten, auf die Verwendung des CRC-64/NVME (CRC64NVME
) -Prüfsummenalgorithmus eingestellt ist und 16 MB überschreitet, wird es automatisch als vollständige Objektprüfsumme ausgewiesen.
Amazon S3 verwendet dann die gespeicherten Prüfsummenwerte auf Teilebene, um zu bestätigen, dass jeder Teil korrekt hochgeladen wurde. Wenn die Prüfsumme jedes Teils (für das gesamte Objekt) angegeben wird, verwendet S3 die gespeicherten Prüfsummenwerte der einzelnen Teile, um intern die vollständige Objektprüfsumme zu berechnen und sie mit dem angegebenen Prüfsummenwert zu vergleichen. Dadurch werden die Rechenkosten minimiert, da S3 anhand der Prüfsumme der Teile eine Prüfsumme des gesamten Objekts berechnen kann. Weitere Informationen über mehrteilige Uploads finden Sie unter Hochladen und Kopieren von Objekten mit mehrteiligen Uploads in Amazon S3 und Verwenden vollständiger Objektprüfsummen für den mehrteiligen Upload.
Wenn das Objekt vollständig hochgeladen ist, können Sie die endgültige berechnete Prüfsumme verwenden, um die Datenintegrität des Objekts zu überprüfen.
Beachten Sie Folgendes beim Hochladen eines Teils des mehrteiligen Uploads:
-
Um Informationen über das Objekt abzurufen, einschließlich der Anzahl der Teile, aus denen das gesamte Objekt besteht, können Sie die
GetObjectAttributes
-Operation verwenden. Mit zusätzlichen Prüfsummen können Sie auch Informationen für jeden einzelnen Teil wiederherstellen, der den Prüfsummenwert jedes Teils enthält. -
Alternativ können Sie die Prüfsumme eines einzelnen Teils abrufen, indem Sie die
GetObject
- oderHeadObject
-Operation verwenden und eine Teilenummer oder einen Bytebereich angeben, der an einem einzelnen Teil ausgerichtet ist. Wenn Sie die Prüfsummenwerte für einzelne Teile von mehrteiligen Uploads abrufen möchten, die noch in Bearbeitung sind, können SieListParts
verwenden. -
Aufgrund der Art und Weise, wie Amazon S3 die Prüfsumme für mehrteilige Objekte berechnet, kann sich der Prüfsummenwert für das Objekt ändern, wenn Sie es kopieren. Wenn Sie ein SDK oder die REST-API verwenden und
CopyObject
aufrufen, kopiert Amazon S3 jedes Objekt bis zu den Größenbeschränkungen derCopyObject
-API-Operation. Amazon S3 führt diese Kopie als einzelne Aktion aus, unabhängig davon, ob das Objekt in einer einzigen Anforderung oder im Rahmen eines mehrteiligen Uploads hochgeladen wurde. Mit einem Kopierbefehl ist die Prüfsumme des Objekts eine direkte Prüfsumme des vollständigen Objekts. Wenn das Objekt ursprünglich mithilfe eines mehrteiligen Uploads hochgeladen wurde, ändert sich der Prüfsummenwert, obwohl die Daten unverändert bleiben. -
Objekte, die die Größenbeschränkungen der
CopyObject
-API-Operation überschreiten, müssen mehrteilige Upload-Kopierbefehle verwenden. -
Wenn Sie einige Operationen mit dem ausführen AWS Management Console, verwendet Amazon S3 einen mehrteiligen Upload, wenn das Objekt größer als 16 MB ist.
Prüfsummenoperationen
Nach dem Hochladen von Objekten können Sie den Prüfsummenwert abrufen und ihn mit einem zuvor berechneten oder gespeicherten Prüfsummenwert desselben Algorithmustyps vergleichen. Die folgenden Beispiele zeigen Ihnen, mit welchen Prüfsummenoperationen oder Methoden Sie die Datenintegrität überprüfen können.
Weitere Informationen zur Verwendung der Konsole und zum Angeben von Prüfsummenalgorithmen, die beim Hochladen von Objekten verwendet werden, finden Sie unter Objekte hochladen und unter Tutorial: Überprüfen der Integrität von Daten in Amazon S3 mit zusätzlichen Prüfsummen
Das folgende Beispiel zeigt, wie Sie mithilfe von SHA-256 eine große Datei mit mehrteiligem Upload hochladen, eine große Datei herunterladen und eine mehrteilige Upload-Datei validieren können. AWS SDKs
Sie können REST-Anfragen senden, um ein Objekt mit einem Prüfsummenwert hochzuladen, mit PutObjectdem die Integrität der Daten überprüft werden kann. Sie können den Prüfsummenwert für Objekte auch mit GetObjectoder abrufen. HeadObject
Sie können eine PUT
-Anforderung zum Hochladen eines Objekts von bis zu 5 GB in einem einzigen Vorgang senden. Weitere Informationen finden Sie unter PutObject
in der AWS CLI -Befehlszeilenreferenz. Sie können auch get-object
und head-object
verwenden, um die Prüfsumme eines bereits hochgeladenen Objekts abzurufen und die Integrität der Daten zu überprüfen.
Weitere Informationen finden Sie unter Häufig gestellte Fragen zur Amazon-S3-CLI im AWS Command Line Interface -Benutzerhandbuch.
Inhalte verwenden — MD5 beim Hochladen von Objekten
Eine weitere Möglichkeit, die Integrität Ihres Objekts nach dem Hochladen zu überprüfen, besteht darin, MD5 beim Hochladen eine Zusammenfassung des Objekts bereitzustellen. Wenn Sie den MD5 Digest für Ihr Objekt berechnen, können Sie den Digest mit dem PUT
Befehl bereitstellen, indem Sie den Header verwenden. Content-MD5
Nach dem Hochladen des Objekts berechnet Amazon S3 den MD5 Digest des Objekts und vergleicht ihn mit dem von Ihnen angegebenen Wert. Die Anforderung ist nur erfolgreich, wenn die beiden Digests übereinstimmen.
Die Angabe eines MD5 Digest ist nicht erforderlich, Sie können ihn jedoch verwenden, um die Integrität des Objekts im Rahmen des Upload-Vorgangs zu überprüfen.
Verwenden Sie Content- MD5 und the, um hochgeladene ETag Objekte zu verifizieren
Das Entity-Tag (ETag) für ein Objekt steht für eine bestimmte Version dieses Objekts. Beachten Sie, dass dies ETag nur Änderungen am Inhalt eines Objekts widerspiegelt, keine Änderungen an seinen Metadaten. Wenn sich nur die Metadaten eines Objekts ändern, ETag bleiben die gleichen.
Je nach Objekt kann es sich ETag bei dem Objekt um eine MD5 Zusammenfassung der Objektdaten handeln:
-
Wenn ein Objekt durch die
CopyObject
OperationPutObject
,PostObject
, oder durch die AWS Management Console, erstellt wird und dieses Objekt auch Klartext oder durch serverseitige Verschlüsselung mit Amazon S3 S3-verwalteten Schlüsseln (SSE-S3) verschlüsselt ist, hat dieses Objekt eine ETag MD5 Zusammenfassung seiner Objektdaten. -
Wenn ein Objekt durch die
CopyObject
OperationPutObject
,PostObject
, oder durch die AWS Management Console, erstellt wird und dieses Objekt durch serverseitige Verschlüsselung mit vom Kunden bereitgestellten Schlüsseln (SSE-C) oder serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS) Schlüsseln (SSE-KMS) verschlüsselt wird, hat dieses Objekt eine, ETag die kein MD5 Digest seiner Objektdaten ist. -
Wenn ein Objekt entweder durch den mehrteiligen Upload-Prozess oder durch den
UploadPartCopy
Vorgang erstellt wird, ETag handelt es sich bei dem Objekt unabhängig von der Verschlüsselungsmethode nicht um einen MD5 Digest. Wenn ein Objekt größer als 16 MB ist, wird dieses Objekt als mehrteiliger AWS Management Console Upload hochgeladen oder kopiert, es handelt sich also ETag nicht um einen Digest. MD5
Bei Objekten, bei denen ETag es sich um den Content-MD5
Digest des Objekts handelt, können Sie den ETag Wert des Objekts mit einem berechneten oder zuvor gespeicherten Digest vergleichen. Content-MD5
Verwenden von nachfolgenden Prüfsummen
Wenn Sie Objekte auf Amazon S3 hochladen, können Sie entweder eine vorberechnete Prüfsumme für das Objekt angeben oder ein AWS SDK verwenden, um in Ihrem Namen automatisch abschließende Prüfsummen für aufgeteilte Uploads zu erstellen. Wenn Sie eine abschließende Prüfsumme verwenden, generiert Amazon S3 die Prüfsumme automatisch mithilfe Ihres angegebenen Algorithmus, um die Integrität des Objekts in aufgeteilten Uploads zu überprüfen, wenn Sie ein Objekt hochladen.
Um bei der Verwendung eines AWS SDK eine abschließende Prüfsumme zu erstellen, füllen Sie den Parameter mit Ihrem bevorzugten Algorithmus auf. ChecksumAlgorithm
Das SDK verwendet diesen Algorithmus, um die Prüfsumme für Ihr Objekt (oder Ihre Objektteile) zu berechnen, und hängt sie automatisch an das Ende Ihrer Anfrage für den gebündelten Upload an. Dank dieser Funktionsweise sparen Sie Zeit, da Amazon S3 sowohl die Überprüfung als auch das Hochladen Ihrer Daten in einem einzigen Durchgang durchführt.
Wichtig
Wenn Sie S3 Object Lambda verwenden, werden alle Anfragen an S3 Object Lambda mit s3-object-lambda
anstelle von s3
signiert. Dieses Verhalten wirkt sich auf die Signatur der nachfolgenden Prüfsummenwerte aus. Weitere Informationen zu S3 Object Lambda finden Sie unter Transformieren von Objekten mit S3 Object Lambda.
Nachfolgende Prüfsummen-Header
Um eine Anfrage zur Codierung einzelner Inhalte zu stellen, verlangt Amazon S3 von den Clients, dass sie mehrere Header angeben, um die Anfrage korrekt zu analysieren. Clients müssen die folgenden Header enthalten:
-
x-amz-decoded-content-length
: Dieser Header gibt die Klartextgröße der tatsächlichen Daten an, die mit der Anfrage auf Amazon S3 hochgeladen werden. -
x-amz-content-sha256
: Dieser Header gibt den Typ des blockierten Uploads an, der in der Anfrage enthalten ist. Bei Chunk-Uploads mit abschließenden Prüfsummen gilt der Header-Wert für Anfragen, die keine Nutzlastsignatur verwenden, undSTREAMING-UNSIGNED-PAYLOAD-TRAILER
STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
für Anfragen, die SigV4-Nutzlastsignatur verwenden. (Weitere Informationen zur Implementierung signierter Payloads finden Sie unter Signaturberechnungen für den Autorisierungsheader: Payload in mehreren Chunks übertragen.) -
x-amz-trailer
: Dieser Header gibt den Namen des nachfolgenden Headers in der Anfrage an. Wenn abschließende Prüfsummen existieren (wobei Prüfsummen an die codierten Anforderungstexte AWS SDKs angehängt werden), enthält derx-amz-trailer
Header-Wert dasx-amz-checksum-
Präfix und endet mit dem Namen des Algorithmus. Die folgenden Werte werden derzeit unterstützt:x-amz-trailer
-
x-amz-checksum-crc32
-
x-amz-checksum-crc32c
-
x-amz-checksum-crc64nvme
-
x-amz-checksum-sha1
-
x-amz-checksum-sha256
-
Anmerkung
Sie können auch den Content-Encoding
Header mit dem aufgeteilten Wert in Ihre Anfrage aufnehmen. Dieser Header ist zwar nicht erforderlich, aber durch die Aufnahme dieses Headers können HTTP-Proxyprobleme bei der Übertragung codierter Daten minimiert werden. Wenn in der Anfrage ein anderer Content-Encoding
Header (z. B. gzip) vorhanden ist, enthält der Content-Encoding
Header den aufgeteilten Wert in einer durch Kommas getrennten Liste von Kodierungen. Beispiel, Content-Encoding:
aws-chunked, gzip
.
Teile in Einzelteilen
Wenn Sie ein Objekt mit Chunked-Codierung auf Amazon S3 hochladen, umfasst die Upload-Anfrage die folgenden Arten von Chunks (in der angegebenen Reihenfolge formatiert):
-
Textteile des Objekts: Einer Upload-Anfrage können ein, mehrere oder keine Textteile zugeordnet sein.
-
Abschlussteile: Einer Upload-Anfrage in Teilen können ein, mehrere oder keine Textteile zugeordnet sein.
-
Nachfolgende Chunks: Die abschließende Prüfsumme wird nach dem Abschluss-Chunk aufgeführt. Nur ein abschließender Chunk ist zulässig.
Anmerkung
Jeder Chunk-Upload muss mit einer abschließenden CRLF (z. B.\r\n
) enden, die das Ende der Anfrage anzeigt.
Beispiele für die Formatierung in Teilen finden Sie unter. Beispiele: Aufgeteilte Uploads mit abschließenden Prüfsummen
Teile des Objektkörpers
Objektkörper-Chunks sind die Chunks, die die eigentlichen Objektdaten enthalten, die auf S3 hochgeladen werden. Für diese Chunks gelten konsistente Größen- und Formatbeschränkungen.
Größe des Objektkörpers (Chunk)
Diese Blöcke müssen mindestens 8.192 Byte (oder 8 KiB) an Objektdaten enthalten, mit Ausnahme des letzten Body-Chunks, der kleiner sein kann. Es gibt keine explizite maximale Chunk-Größe, aber Sie können davon ausgehen, dass alle Chunks kleiner als die maximale Upload-Größe von 5 GB sind. Die Chunk-Größe kann je nach Ihrer Client-Server-Implementierung von einem Chunk zum nächsten variieren.
Format des Objektkörpers (Chunk-Format)
Objekttextblöcke beginnen mit der hexadezimalen Kodierung der Anzahl der Byte im Textteil des Objektkörpers, gefolgt von einer CRLF (Carriage Return Line Feed), den Objektbytes für diesen Abschnitt und einer weiteren CRLF.
Zum Beispiel:
hex-encoding-of-object-bytes-in-chunk
\r\nchunk-object-bytes
\r\n
Wenn der Abschnitt jedoch signiert ist, folgt der Objekttextabschnitt einem anderen Format, bei dem die Signatur mit einem Semikolon-Trennzeichen an die Chunk-Größe angehängt wird. Zum Beispiel:
hex-encoding-of-object-bytes-in-chunk
;chunk-signature
\r\nchunk-object-bytes
\r\n
Weitere Informationen zur Blocksignierung finden Sie unter Signaturberechnungen für den Authorization Header: Übertragung einer Nutzlast in mehreren Abschnitten (Signature Version 4).AWS Weitere Informationen zur Chunk-Formatierung finden Sie unter Chunked Transfer
Blöcke zur Fertigstellung
Abschluss-Chunks müssen der letzte Teil des Objekttextes jedes Chunk-Uploads sein. Das Format eines Completion-Chunks ähnelt einem Body-Chunk, enthält aber immer null Byte an Objektdaten. (Die Null Byte der Objektdaten geben an, dass alle Daten hochgeladen wurden.) Aufgeteilte Uploads müssen einen Abschlussteil als abschließenden Abschnitt des Hauptteils des Objekts enthalten, und zwar in einem Format wie dem folgenden:
0\r\n
Wenn die Inhaltscodierungsanforderung jedoch Nutzlastsignatur verwendet, folgt sie stattdessen diesem Format:
0;
chunk-signature
\r\n
Teile des Trailers
Trailer-Chunks enthalten die berechnete Prüfsumme für alle S3-Upload-Anfragen. Trailer-Chunks enthalten zwei Felder: ein Header-Namensfeld und ein Header-Wertefeld. Das Header-Namensfeld für eine Upload-Anfrage muss mit dem Wert übereinstimmen, der in den x-amz-trailer
Anforderungsheader übergeben wurde. Wenn eine Anfrage beispielsweise den Header-Namen enthält x-amz-trailer: x-amz-checksum-crc32
und der Trailer-Chunk den Header-Namen hatx-amz-checksum-sha1
, schlägt die Anfrage fehl. Das Wertfeld im Trailer-Chunk enthält eine Base64-Kodierung des Big-Endian-Prüfsummenwerts für dieses Objekt. (Bei der Big-Endian-Reihenfolge wird das höchstwertige Datenbyte an der niedrigsten Speicheradresse und das niedrigstwertige Byte an der größten Speicheradresse gespeichert.) Der zur Berechnung dieser Prüfsumme verwendete Algorithmus entspricht dem Suffix für den Header-Namen (z. B.). crc32
Format des Trailer-Chunks
Trailer-Chunks verwenden das folgende Format für unsignierte Payload-Anfragen:
x-amz-checksum-
lowercase-checksum-algorithm-name
:base64-checksum-value
\n\r\n\r\n
Bei Anfragen mit SigV4-signierten Payloads enthält der Trailer-Chunk nach dem Trailer-Chunk eine Trailer-Signatur.
trailer-checksum
\n\r\ntrailer-signature
\r\n
Sie können die CRLF auch direkt am Ende des Base64-Prüfsummenwerts hinzufügen. Zum Beispiel:
x-amz-checksum-
lowercase-checksum-algorithm-name
:base64-checksum-value
\r\n\r\n
Beispiele: Aufgeteilte Uploads mit abschließenden Prüfsummen
Amazon S3 unterstützt blockierte Uploads, die aws-chunked
Inhaltskodierung verwenden, PutObject
und UploadPart
Anfragen mit abschließenden Prüfsummen.
Beispiel 1 — Unsignierte blockierte Anfrage mit einer abschließenden CRC-32-Prüfsumme PutObject
Im Folgenden finden Sie ein Beispiel für eine abgeschnittene Anfrage mit einer abschließenden CRC-32-Prüfsumme. PutObject
In diesem Beispiel lädt der Client ein 17-KB-Objekt in drei unsignierten Chunks hoch und fügt mithilfe des Headers einen abschließenden CRC-32-Prüfsummenblock an. x-amz-checksum-crc32
PUT /Key+ HTTP/1.1 Host:
amzn-s3-demo-bucket
Content-Encoding: aws-chunked x-amz-decoded-content-length:17408
x-amz-content-sha256: STREAMING-UNSIGNED-PAYLOAD-TRAILER x-amz-trailer: x-amz-checksum-crc322000
\r\n // Object body chunk 1 (8192 bytes)object-bytes
\r\n2000
\r\n // Object body chunk 2 (8192 bytes)object-bytes
\r\n400
\r\n // Object body chunk 3 (1024 bytes)object-bytes
\r\n0
\r\n // Completion chunk x-amz-checksum-crc32:YABb/g==
\n\r\n\r\n // Trailer chunk (note optional \n character) \r\n // CRLF
Hier ist ein Beispiel für eine Antwort:
HTTP/1.1 200 ETag: ETag x-amz-checksum-crc32: YABb/g==
Anmerkung
Die Verwendung des Zeilenvorschubs \n
am Ende des Prüfsummenwerts kann je nach Client variieren.
Beispiel 2 — SigV4-signierte PutObject
Chunk-Anfrage mit abschließender CRC-32 () -Prüfsumme CRC32
Das Folgende ist ein Beispiel für eine abschnittsweise Anfrage mit einer abschließenden CRC-32-Prüfsumme. PutObject
Diese Anfrage verwendet die SigV4-Nutzlastsignatur. In diesem Beispiel lädt der Client ein 17-KB-Objekt in drei signierten Abschnitten hoch. Zusätzlich zu den object
body
Chunks sind auch die und signiertcompletion chunk
. trailer chunk
PUT /Key+ HTTP/1.1 Host:
amzn-s3-demo-bucket
.s3.amazonaws.com Content-Encoding: aws-chunked x-amz-decoded-content-length:17408
x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER x-amz-trailer: x-amz-checksum-crc32authorization-code
// SigV4 headers authorization2000
;chunk-signature=signature-value
...\r\n // Object body chunk 1 (8192 bytes)object-bytes
\r\n2000
;chunk-signature
\r\n // Object body chunk 2 (8192 bytes)object-bytes
\r\n400
;chunk-signature
\r\n // Object body chunk 3 (1024 bytes)object-bytes
\r\n0
;chunk-signature
\r\n // Completion chunk x-amz-checksum-crc32:YABb/g==
\n\r\n // Trailer chunk (note optional \n character)trailer-signature
\r\n \r\n // CRLF
Hier ist ein Beispiel für eine Antwort:
HTTP/1.1 200 ETag: ETag x-amz-checksum-crc32: YABb/g==