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.
Schutz der Datenintegrität mit Prüfsummen
Amazon Simple Storage Service (Amazon S3) bietet die Möglichkeit, beim Hochladen eines Objekts eine Prüfsumme anzugeben. Wenn Sie eine Prüfsumme angeben, wird diese zusammen mit dem Objekt gespeichert und kann beim Herunterladen des Objekts überprüft werden.
Prüfsummen bieten eine zusätzliche Ebene der Datenintegrität bei der Übertragung von Dateien. Mit Prüfsummen können Sie die Datenkonsistenz überprüfen, indem Sie sicherstellen, dass die empfangene Datei mit der Originaldatei übereinstimmt. Weitere Informationen zu Prüfsummen mit Amazon S3 finden Sie im Amazon Simple Storage Service-Benutzerhandbuch, einschließlich der unterstützten Algorithmen.
Sie haben die Flexibilität, den Algorithmus auszuwählen, der Ihren Anforderungen am besten entspricht, und das SDK die Prüfsumme berechnen zu lassen. Alternativ können Sie mithilfe eines der unterstützten Algorithmen einen vorab berechneten Prüfsummenwert angeben.
Anmerkung
Ab Version 3.337.0 von bietet das SDK standardmäßigen Integritätsschutz AWS SDK für PHP, indem es automatisch eine Prüfsumme für Uploads berechnet. CRC32 Das SDK berechnet diese Prüfsumme, wenn Sie keinen vorab berechneten Prüfsummenwert angeben oder wenn Sie keinen Algorithmus angeben, den das SDK zur Berechnung einer Prüfsumme verwenden soll.
Wichtig
Um mit dem CRC32C Algorithmus arbeiten zu können, erfordert Ihre PHP-Umgebung die Installation der AWS Common Runtime (AWS CRT) -Erweiterung.
Wir behandeln Prüfsummen in zwei Anforderungsphasen: beim Hochladen eines Objekts und beim Herunterladen eines Objekts.
Hochladen eines Objekts
Sie laden Objekte auf Amazon S3 hoch, indem Sie die PutObject-Methode von verwenden. S3Client Verwenden Sie das ChecksumAlgorithm Paar im Parameter-Array, um die Prüfsummenberechnung zu aktivieren und den Algorithmus anzugeben.
$client = new \Aws\S3\S3Client(['region' => 'us-east-2']); // See the note below. $result = $client->putObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'key', 'ChecksumAlgorithm' => 'CRC32', 'Body' => 'Object contents to test the checksum.' ]);
Wenn Sie mit der Anfrage keinen Prüfsummenalgorithmus angeben, variiert das Prüfsummenverhalten je nach der Version des verwendeten SDK, wie in der folgenden Tabelle dargestellt.
Prüfsummenverhalten, wenn kein Prüfsummenalgorithmus bereitgestellt wird
| PHP-SDK-Version | Verhalten der Prüfsumme |
|---|---|
| früher als 3.337.0 | Das SDK berechnet nicht automatisch eine CRC-basierte Prüfsumme und gibt sie in der Anfrage an. |
| 3.337.0 oder höher | Das SDK verwendet den |
Verwenden Sie einen vorberechneten Prüfsummenwert
Ein mit der Anfrage bereitgestellter vorberechneter Prüfsummenwert deaktiviert die automatische Berechnung durch das SDK und verwendet stattdessen den angegebenen Wert.
Das folgende Beispiel zeigt eine Anfrage mit einer vorberechneten Prüfsumme. SHA256
use Aws\S3\S3Client; use GuzzleHttp\Psr7; $client = new S3Client([ 'region' => 'us-east-1', ]); // Calculate the SHA256 checksum of the contents to be uploaded. $contents = 'Object contents to test the checksum.'; $body = Psr7\Utils::streamFor($contents); $sha256 = base64_encode(Psr7\Utils::hash($body, 'sha256', true)); $result = $client->putObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'key', 'Body' => $body, 'ChecksumSHA256' => $sha256 ]);
Wenn Amazon S3 feststellt, dass der Prüfsummenwert für den angegebenen Algorithmus falsch ist, gibt der Service eine Fehlerantwort zurück.
Mehrteilige Uploads
Sie können Prüfsummen auch bei mehrteiligen Uploads verwenden.
$s3Client = new S3Client([ 'region' => 'us-east-1' ]); $stream = fopen("/path/to/large/file", "r"); $mpUploader = new MultipartUploader($s3Client, $stream, [ 'bucket' => 'amzn-s3-demo-bucket', 'key' => 'key', 'params' => ['ChecksumAlgorithm' => 'CRC32'] ]);
Herunterladen eines Objekts
Wenn Sie die GetObject GetObject getObject(input:) verwenden, um ein Objekt herunterzuladen, validiert das SDK automatisch die Prüfsumme, wenn der Wert des Schlüssels lautet. ChecksumMode enabled
Die Anfrage im folgenden Codeausschnitt weist das SDK an, die Prüfsumme in der Antwort zu validieren, indem es die Prüfsumme berechnet und die Werte vergleicht.
$result = $client->getObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'test-checksum-key', 'ChecksumMode' => 'enabled', ]);
Anmerkung
Wenn das Objekt nicht mit einer Prüfsumme hochgeladen wurde, findet keine Überprüfung statt.