Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perlindungan integritas data dengan checksum
Amazon Simple Storage Service (Amazon S3) menyediakan kemampuan untuk menentukan checksum saat Anda mengunggah objek. Ketika Anda menentukan checksum, itu disimpan dengan objek dan dapat divalidasi ketika objek diunduh.
Checksum menyediakan lapisan integritas data tambahan saat Anda mentransfer file. Dengan checksum, Anda dapat memverifikasi konsistensi data dengan mengonfirmasi bahwa file yang diterima cocok dengan file asli. Untuk informasi selengkapnya tentang checksum dengan Amazon S3, lihat Panduan Pengguna Layanan Penyimpanan Sederhana Amazon termasuk algoritme yang didukung.
Anda memiliki fleksibilitas untuk memilih algoritma yang paling sesuai dengan kebutuhan Anda dan membiarkan SDK menghitung checksum. Atau, Anda dapat memberikan nilai checksum yang telah dihitung sebelumnya dengan menggunakan salah satu algoritme yang didukung.
catatan
Dimulai dengan versi 3.337.0 AWS SDK for PHP, SDK menyediakan perlindungan integritas default dengan secara otomatis menghitung checksum untuk CRC32 upload. SDK menghitung checksum ini jika Anda tidak memberikan nilai checksum yang telah dihitung sebelumnya atau jika Anda tidak menentukan algoritme yang harus digunakan SDK untuk menghitung checksum.
SDK juga menyediakan pengaturan global untuk perlindungan integritas data yang dapat Anda atur secara eksternal, yang dapat Anda baca di Panduan Referensi Alat AWS SDKs dan Alat.
penting
Untuk bekerja dengan CRC32C algoritma, lingkungan PHP Anda memerlukan instalasi ekstensi AWS Common Runtime (AWS CRT).
Kami membahas checksum dalam dua fase permintaan: mengunggah objek dan mengunduh objek.
Mengunggah objek
Anda meng-upload objek ke Amazon S3 dengan menggunakan metode putObject dari file. S3Client Gunakan ChecksumAlgorithm pasangan dalam array parameter untuk mengaktifkan perhitungan checksum dan menentukan algoritma.
$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.' ]);
Jika Anda tidak menyediakan algoritma checksum dengan permintaan, perilaku checksum bervariasi tergantung pada versi SDK yang Anda gunakan seperti yang ditunjukkan pada tabel berikut.
Perilaku checksum ketika tidak ada algoritma checksum yang disediakan
| Versi PHP SDK | Perilaku checksum |
|---|---|
| lebih awal dari 3.337.0 | SDK tidak secara otomatis menghitung checksum berbasis CRC dan menyediakannya dalam permintaan. |
| 3.337.0 atau yang lebih baru | SDK menggunakan |
Gunakan nilai checksum yang telah dihitung sebelumnya
Nilai checksum yang telah dihitung sebelumnya yang disertakan dengan permintaan menonaktifkan komputasi otomatis oleh SDK dan menggunakan nilai yang disediakan sebagai gantinya.
Contoh berikut menunjukkan permintaan dengan SHA256 checksum yang telah dihitung sebelumnya.
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 ]);
Jika Amazon S3 menentukan nilai checksum salah untuk algoritme yang ditentukan, layanan akan mengembalikan respons kesalahan.
Unggahan multipart
Anda juga dapat menggunakan checksum dengan unggahan multipart.
$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'] ]);
Unduh objek
Saat Anda menggunakan metode getObject untuk mengunduh objek, SDK secara otomatis memvalidasi checksum saat nilai kuncinya. ChecksumMode enabled
Permintaan dalam cuplikan berikut mengarahkan SDK untuk memvalidasi checksum dalam respons dengan menghitung checksum dan membandingkan nilainya.
$result = $client->getObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'test-checksum-key', 'ChecksumMode' => 'enabled', ]);
catatan
Jika objek tidak diunggah dengan checksum, tidak ada validasi yang terjadi.