Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memeriksa integritas objek di Amazon S3
Amazon S3 menggunakan nilai checksum untuk memverifikasi integritas data yang Anda unggah atau unduh. Selain itu, Anda dapat meminta agar nilai checksum lain dihitung untuk objek apa pun yang Anda simpan di Amazon S3. Anda dapat memilih algoritma checksum yang akan digunakan saat mengunggah, menyalin, atau menyalin data secara batch.
Saat mengunggah data, Amazon S3 menggunakan algoritme yang Anda pilih untuk menghitung checksum di sisi server dan memvalidasinya dengan nilai yang diberikan sebelum menyimpan objek dan menyimpan checksum sebagai bagian dari metadata objek. Validasi ini bekerja secara konsisten di seluruh mode enkripsi, ukuran objek, dan kelas penyimpanan untuk unggahan satu bagian dan multibagian. Namun, ketika Anda menyalin atau menyalin data secara batch, Amazon S3 menghitung checksum pada objek sumber dan memindahkannya ke objek tujuan.
catatan
Saat Anda melakukan unggahan satu bagian atau multibagian, Anda dapat secara opsional menyertakan checksum yang telah dihitung sebelumnya sebagai bagian dari permintaan Anda, dan menggunakan jenis checksum objek lengkap. Untuk menggunakan nilai yang telah dihitung sebelumnya dengan beberapa objek, gunakan AWS CLI atau AWS SDKs.
Menggunakan algoritma checksum yang didukung
Dengan Amazon S3, Anda dapat memilih algoritma checksum untuk memvalidasi data Anda selama pengunggahan. Algoritma checksum yang ditentukan kemudian disimpan dengan objek Anda dan dapat digunakan untuk memvalidasi integritas data selama unduhan. Anda dapat memilih salah satu algoritma checksum Secure Hash Algorithms (SHA) atau Cyclic Redundancy Check (CRC) berikut untuk menghitung nilai checksum:
-
CRC-64/NVME ()
CRC64NVME
-
CRC-32 ()
CRC32
-
CRC-32C ()
CRC32C
-
SHA-1 ()
SHA1
-
SHA-256 ()
SHA256
Selain itu, Anda dapat memberikan checksum dengan setiap permintaan menggunakan MD5 header Content-.
Saat Anda mengunggah objek, Anda menentukan algoritme yang ingin Anda gunakan:
-
Saat Anda menggunakan AWS Management Console, pilih algoritma checksum yang ingin Anda gunakan. Anda dapat secara opsional menentukan nilai checksum objek. Ketika Amazon S3 menerima objek, itu menghitung checksum dengan menggunakan algoritma yang Anda tentukan. Jika kedua nilai checksum tidak cocok, Amazon S3 menghasilkan kesalahan.
-
Saat Anda menggunakan SDK, perhatikan hal berikut:
-
Atur
ChecksumAlgorithm
parameter ke algoritme yang Anda inginkan Amazon S3 gunakan. Jika Anda sudah memiliki checksum yang telah dihitung sebelumnya, Anda meneruskan nilai checksum ke AWS SDK, dan SDK menyertakan nilai dalam permintaan. Jika Anda tidak meneruskan nilai checksum atau tidak menentukan algoritma checksum, SDK secara otomatis menghitung nilai checksum untuk Anda dan menyertakannya dengan permintaan untuk memberikan perlindungan integritas. Jika nilai checksum individual tidak cocok dengan nilai set algoritma checksum, Amazon S3 gagal permintaan dengan kesalahan.BadDigest
-
Jika Anda menggunakan SDK yang ditingkatkan, AWS SDK akan memilih algoritma checksum untuk Anda. Namun, Anda dapat mengganti algoritma checksum ini.
-
Jika Anda tidak menentukan algoritma checksum dan SDK juga tidak menghitung checksum untuk Anda, maka S3 secara otomatis memilih algoritma checksum CRC-64/NVME ().
CRC64NVME
-
-
Saat Anda menggunakan REST API, jangan gunakan
x-amz-sdk-checksum-algorithm
parameternya. Sebagai gantinya, gunakan salah satu header khusus algoritme (misalnya,).x-amz-checksum-crc32
Untuk menerapkan salah satu nilai checksum ini ke objek yang sudah diunggah ke Amazon S3, Anda dapat menyalin objek dan menentukan apakah Anda ingin menggunakan algoritma checksum yang ada atau yang baru. Jika Anda tidak menentukan algoritma, S3 menggunakan algoritma yang ada. Jika objek sumber tidak memiliki algoritma checksum atau nilai checksum tertentu, Amazon S3 menggunakan algoritma CRC-64/NVME untuk menghitung nilai checksum untuk objek tujuan. Anda juga dapat menentukan algoritma checksum saat menyalin objek menggunakan Operasi Batch S3.
penting
Jika Anda menggunakan unggahan multibagian dengan Checksum untuk checksum komposit (atau tingkat bagian), nomor bagian unggahan multibagian harus berurutan. Jika Anda mencoba menyelesaikan permintaan unggahan multibagian dengan nomor bagian yang tidak berurutan, Amazon S3 menghasilkan kesalahan. HTTP 500 Internal Server
Objek lengkap dan jenis checksum komposit
Di Amazon S3, ada dua jenis checksum yang didukung:
-
Checksum objek lengkap: Checksum objek lengkap dihitung berdasarkan semua konten unggahan multipart, yang mencakup semua data dari byte pertama bagian pertama hingga byte terakhir dari bagian terakhir.
catatan
Semua permintaan PUT memerlukan jenis checksum objek lengkap.
-
Checksum komposit: Checksum komposit dihitung berdasarkan checksum individual dari setiap bagian dalam unggahan multibagian. Alih-alih menghitung checksum berdasarkan semua konten data, pendekatan ini menggabungkan checksum tingkat bagian (dari bagian pertama hingga yang terakhir) untuk menghasilkan checksum gabungan tunggal untuk objek lengkap.
catatan
Ketika sebuah objek diunggah sebagai unggahan multipart, tag entitas (ETag) untuk objek bukanlah MD5 intisari dari seluruh objek. Sebagai gantinya, Amazon S3 menghitung MD5 intisari setiap bagian saat diunggah. MD5 Intisari digunakan ETag untuk menentukan objek akhir. Amazon S3 menggabungkan byte untuk MD5 intisari bersama-sama dan kemudian menghitung intisari nilai gabungan ini. MD5 Selama langkah ETag pembuatan terakhir, Amazon S3 menambahkan tanda hubung dengan jumlah total bagian sampai akhir.
Amazon S3 mendukung objek lengkap berikut dan jenis algoritma checksum komposit:
-
CRC-64/NVME (
CRC64NVME
): Mendukung tipe algoritma objek lengkap saja. -
CRC-32 (
CRC32
): Mendukung objek penuh dan jenis algoritma komposit. -
CRC-32C (
CRC32C
): Mendukung objek penuh dan jenis algoritma komposit. -
SHA-1 (
SHA1
): Mendukung objek penuh dan jenis algoritma komposit. -
SHA-256 (
SHA256
): Mendukung objek penuh dan jenis algoritma komposit.
Unggahan satu bagian
Checksum objek yang diunggah dalam satu bagian (menggunakan PutObject
) diperlakukan sebagai checksum objek lengkap. Saat mengunggah objek di konsol Amazon S3, Anda dapat memilih algoritma checksum yang ingin digunakan S3 dan juga (opsional) memberikan nilai yang telah dihitung sebelumnya. Amazon S3 kemudian memvalidasi checksum ini sebelum menyimpan objek dan nilai checksum-nya. Anda dapat memverifikasi integritas data objek saat meminta nilai checksum selama pengunduhan objek.
Unggahan multipart
Saat mengunggah objek di beberapa bagian menggunakan MultipartUpload
API, Anda dapat menentukan algoritma checksum yang ingin digunakan Amazon S3 dan jenis checksum (objek lengkap atau komposit).
Tabel berikut menunjukkan jenis algoritma checksum yang didukung untuk setiap algoritma checksum dalam unggahan multipart:
Algoritma checksum | Objek penuh | Komposit |
---|---|---|
CRC-64/NVME () CRC64NVME |
Ya | Tidak |
CRC-32 () CRC32 |
Ya | Ya |
CRC-32C () CRC32C |
Ya | Ya |
SHA-1 () SHA1 |
Tidak | Ya |
SHA-256 () SHA256 |
Tidak | Ya |
Menggunakan checksum objek lengkap untuk unggahan multipart
Saat membuat atau melakukan unggahan multibagian, Anda dapat menggunakan checksum objek lengkap untuk validasi saat diunggah. Ini berarti Anda dapat menyediakan algoritme checksum untuk MultipartUpload
API, menyederhanakan alat validasi integritas karena Anda tidak perlu lagi melacak batas bagian untuk objek yang diunggah. Anda dapat memberikan checksum seluruh objek dalam CompleteMultipartUpload
permintaan, bersama dengan ukuran objek.
Saat Anda memberikan checksum objek lengkap selama pengunggahan multibagian, AWS SDK meneruskan checksum ke Amazon S3, dan S3 memvalidasi sisi server integritas objek, membandingkannya dengan nilai yang diterima. Kemudian, Amazon S3 menyimpan objek jika nilainya cocok. Jika kedua nilai tidak cocok, S3 gagal permintaan dengan BadDigest
kesalahan. Checksum objek Anda juga disimpan dalam metadata objek yang Anda gunakan nanti untuk memvalidasi integritas data objek.
Untuk checksum objek lengkap, Anda dapat menggunakan algoritma checksum CRC-64/NVME (CRC64NVME
), CRC-32 (), atau CRC-32C (CRC32
) di S3. CRC32C
Checksum objek lengkap dalam unggahan multibagian hanya tersedia untuk checksum berbasis CRC karena mereka dapat linier menjadi checksum objek lengkap. Linearisasi ini memungkinkan Amazon S3 untuk memparalelkan permintaan Anda untuk meningkatkan kinerja. Secara khusus, S3 dapat menghitung checksum seluruh objek dari checksum tingkat bagian. Jenis validasi ini tidak tersedia untuk algoritma lain, seperti SHA dan. MD5 Karena S3 memiliki perlindungan integritas default, jika objek diunggah tanpa checksum, S3 secara otomatis melampirkan algoritma checksum objek penuh CRC-64/NVME () yang direkomendasikan ke objek. CRC64NVME
catatan
Untuk memulai unggahan multipart, Anda dapat menentukan algoritma checksum dan jenis checksum objek lengkap. Setelah Anda menentukan algoritma checksum dan jenis checksum objek lengkap, Anda dapat memberikan nilai checksum objek lengkap untuk unggahan multipart.
Menggunakan checksum tingkat suku cadang untuk unggahan multipart
Ketika objek diunggah ke Amazon S3, mereka dapat diunggah sebagai objek tunggal atau diunggah dalam beberapa bagian dengan proses pengunggahan multibagian. Anda dapat memilih jenis Checksum untuk unggahan multipart Anda. Untuk checksum tingkat suku cadang unggahan multibagian (atau checksum komposit), Amazon S3 menghitung checksum untuk setiap bagian individual dengan menggunakan algoritma checksum yang ditentukan. Anda dapat menggunakan UploadPart
untuk memberikan nilai checksum untuk setiap bagian. Jika objek yang Anda coba unggah di konsol Amazon S3 diatur untuk menggunakan algoritma checksum CRC-64/NVME (CRC64NVME
) dan melebihi 16 MB, objek tersebut secara otomatis ditetapkan sebagai checksum objek lengkap.
Amazon S3 kemudian menggunakan nilai checksum tingkat bagian yang disimpan untuk mengonfirmasi bahwa setiap bagian diunggah dengan benar. Ketika checksum setiap bagian (untuk seluruh objek) disediakan, S3 menggunakan nilai checksum yang disimpan dari setiap bagian untuk menghitung checksum objek lengkap secara internal, membandingkannya dengan nilai checksum yang disediakan. Ini meminimalkan biaya komputasi karena S3 dapat menghitung checksum seluruh objek menggunakan checksum bagian. Untuk informasi selengkapnya tentang unggahan multipart, lihat Mengunggah dan menyalin objek menggunakan unggahan multipart di Amazon S3 dan. Menggunakan checksum objek lengkap untuk unggahan multipart
Ketika objek benar-benar diunggah, Anda dapat menggunakan checksum terhitung akhir untuk memverifikasi integritas data objek.
Saat mengunggah bagian dari unggahan multipart, perhatikan hal-hal berikut:
-
Untuk mengambil informasi tentang objek, termasuk berapa banyak bagian yang membentuk seluruh objek, Anda dapat menggunakan
GetObjectAttributes
operasi. Dengan checksum tambahan, Anda juga dapat memulihkan informasi untuk setiap bagian individual yang menyertakan nilai checksum bagian tersebut. -
Untuk upload selesai, Anda bisa mendapatkan checksum bagian individual dengan menggunakan
HeadObject
operasiGetObject
atau dan menentukan nomor bagian atau rentang byte yang sejajar dengan satu bagian. Jika Anda ingin mengambil nilai checksum untuk masing-masing bagian dari unggahan multibagian yang masih berlangsung, Anda dapat menggunakannya.ListParts
-
Oleh karena cara Amazon S3 menghitung checksum untuk objek multibagian, nilai checksum untuk objek mungkin berubah jika Anda menyalinnya. Jika Anda menggunakan SDK atau REST API dan menelepon
CopyObject
, Amazon S3 menyalin objek apa pun hingga batasan ukuranCopyObject
operasi API. Amazon S3 melakukan penyalinan ini sebagai tindakan tunggal, terlepas dari apakah objek diunggah dalam satu permintaan atau sebagai bagian dari unggahan multibagian. Dengan perintah salin, checksum objek adalah checksum langsung dari objek penuh. Jika objek awalnya diunggah menggunakan unggahan multibagian, nilai checksum berubah meskipun datanya tidak. -
Objek yang lebih besar dari batasan ukuran operasi
CopyObject
API harus menggunakan perintah salinan unggah multibagian. -
Saat Anda melakukan beberapa operasi menggunakan AWS Management Console, Amazon S3 menggunakan unggahan multibagian jika objek berukuran lebih besar dari 16 MB.
Operasi Checksum
Setelah mengunggah objek, Anda bisa mendapatkan nilai checksum dan membandingkannya dengan nilai checksum yang telah dihitung sebelumnya atau disimpan sebelumnya dari jenis algoritma yang sama. Contoh berikut menunjukkan operasi atau metode checksum mana yang dapat Anda gunakan untuk memverifikasi integritas data.
Untuk mempelajari lebih lanjut tentang menggunakan konsol dan menentukan algoritma checksum yang akan digunakan saat mengunggah objek, lihat Mengunggah Objek dan Tutorial: Memeriksa integritas data di Amazon S3 dengan checksum tambahan
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan AWS SDKs untuk meng-upload file besar dengan upload multipart, men-download file besar, dan memvalidasi file upload multipart, semua dengan menggunakan SHA-256 untuk validasi file.
Anda dapat mengirim permintaan REST untuk mengunggah objek dengan nilai checksum untuk memverifikasi integritas data dengan PutObject. Anda juga dapat mengambil nilai checksum untuk objek yang menggunakan GetObjectatau. HeadObject
Anda dapat mengirim permintaan PUT
untuk mengunggah objek hingga 5 GB dalam satu operasi. Untuk informasi selengkapnya, lihat PutObject
di Referensi Perintah AWS CLI . Anda juga dapat menggunakan get-object
dan head-object
untuk mengambil checksum dari objek yang sudah diunggah guna memverifikasi integritas data.
Untuk selengkapnya, lihat FAQ Amazon S3 CLI di Panduan Pengguna.AWS Command Line Interface
Menggunakan Konten- MD5 saat mengunggah objek
Cara lain untuk memverifikasi integritas objek Anda setelah mengunggah adalah dengan memberikan MD5 intisari objek saat Anda mengunggahnya. Jika Anda menghitung MD5 intisari untuk objek Anda, Anda dapat memberikan intisari dengan PUT
perintah dengan menggunakan header. Content-MD5
Setelah mengunggah objek, Amazon S3 menghitung MD5 intisari objek dan membandingkannya dengan nilai yang Anda berikan. Permintaan hanya berhasil jika kedua intisari cocok.
Menyediakan MD5 intisari tidak diperlukan, tetapi Anda dapat menggunakannya untuk memverifikasi integritas objek sebagai bagian dari proses pengunggahan.
Menggunakan Konten- MD5 dan ETag untuk memverifikasi objek yang diunggah
Tag entitas (ETag) untuk objek mewakili versi tertentu dari objek tersebut. Perlu diingat bahwa ETag satu-satunya mencerminkan perubahan pada konten objek, bukan perubahan metadatanya. Jika hanya metadata suatu objek yang berubah, ETag tetap sama.
Tergantung pada objek, objek mungkin merupakan MD5 intisari dari data objek: ETag
-
Jika objek dibuat oleh,, atau
CopyObject
operasiPutObject
PostObject
, atau melalui AWS Management Console, dan objek itu juga teks biasa atau dienkripsi oleh enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3), objek tersebut memiliki intisari data objeknya. ETag MD5 -
Jika objek dibuat oleh,, atau
CopyObject
operasiPutObject
PostObject
, atau melalui AWS Management Console, dan objek itu dienkripsi oleh enkripsi sisi server dengan kunci yang disediakan pelanggan (SSE-C) atau enkripsi sisi server dengan () kunci (SSE-KMS AWS KMS), objek tersebut memiliki intisari data objeknya. AWS Key Management Service ETag MD5 -
Jika objek dibuat oleh proses upload multipart atau
UploadPartCopy
operasi, objek ETag bukanlah MD5 intisari, terlepas dari metode enkripsi. Jika objek lebih besar dari 16 MB, AWS Management Console upload atau copy objek tersebut sebagai upload multipart, dan oleh karena itu ETag bukan MD5 intisari.
Untuk objek yang ETag merupakan Content-MD5
intisari objek, Anda dapat membandingkan ETag nilai objek dengan Content-MD5
intisari yang dihitung atau disimpan sebelumnya.
Menggunakan checksum trailing
Saat mengunggah objek ke Amazon S3, Anda dapat memberikan checksum yang telah dihitung sebelumnya untuk objek tersebut atau menggunakan SDK untuk secara otomatis membuat checksum AWS tambahan untuk unggahan yang dipotong, atas nama Anda. Jika Anda menggunakan checksum tambahan, Amazon S3 secara otomatis menghasilkan checksum dengan menggunakan algoritme yang ditentukan untuk memvalidasi integritas objek dalam unggahan terpotong, saat Anda mengunggah objek.
Untuk membuat checksum tambahan saat menggunakan AWS SDK, isi ChecksumAlgorithm
parameter dengan algoritme pilihan Anda. SDK menggunakan algoritme tersebut untuk menghitung checksum untuk objek Anda (atau bagian objek) dan secara otomatis menambahkannya ke akhir permintaan unggahan yang terpotong. Perilaku ini menghemat waktu Anda, sebab Amazon S3 melakukan verifikasi dan pengunggahan data Anda dalam sekali jalan.
penting
Jika Anda menggunakan S3 Lambda Objek, semua permintaan ke S3 Lambda Objek ditandatangani menggunakan, s3-object-lambda
dan bukan s3
. Perilaku ini memengaruhi tanda tangan nilai checksum trailing. Untuk informasi selengkapnya tentang S3 Lambda Objek, lihat Mengubah objek dengan S3 Lambda Objek.
Header checksum tertinggal
Untuk membuat permintaan pengkodean konten yang terpotong, Amazon S3 mengharuskan server klien menyertakan beberapa header untuk mengurai permintaan dengan benar. Server klien harus menyertakan header berikut:
-
x-amz-decoded-content-length
: Header ini menunjukkan ukuran plaintext dari data aktual yang sedang diunggah ke Amazon S3 dengan permintaan. -
x-amz-content-sha256
: Header ini menunjukkan jenis unggahan chunked yang disertakan dalam permintaan. Untuk unggahan terpotong dengan checksum tambahan, nilai header adalahSTREAMING-UNSIGNED-PAYLOAD-TRAILER
untuk permintaan yang tidak menggunakan penandatanganan payload danSTREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
untuk permintaan yang menggunakan penandatanganan payload SigV4. (Untuk informasi selengkapnya tentang penerapan payload yang ditandatangani, lihat Perhitungan tanda tangan untuk header otorisasi: Mentransfer muatan dalam beberapa potongan.) -
x-amz-trailer
: Header ini menunjukkan nama header trailing dalam permintaan. Jika checksum tambahan ada (di mana AWS SDKs menambahkan checksum ke badan permintaan yang dikodekan), nilaix-amz-trailer
header menyertakan awalan dan diakhiri dengan nama algoritme.x-amz-checksum-
x-amz-trailer
Nilai-nilai berikut saat ini didukung:-
x-amz-checksum-crc32
-
x-amz-checksum-crc32c
-
x-amz-checksum-crc64nvme
-
x-amz-checksum-sha1
-
x-amz-checksum-sha256
-
catatan
Anda juga dapat menyertakan Content-Encoding
header, dengan nilai chunked, dalam permintaan Anda. Meskipun header ini tidak diperlukan, termasuk header ini dapat meminimalkan masalah proxy HTTP saat mentransmisikan data yang dikodekan. Jika Content-Encoding
header lain (seperti gzip) ada dalam permintaan, Content-Encoding
header menyertakan nilai chunked dalam daftar pengkodean yang dipisahkan koma. Misalnya, Content-Encoding:
aws-chunked, gzip
.
Bagian yang terpotong
Saat Anda mengunggah objek ke Amazon S3 menggunakan encoding chunked, permintaan upload menyertakan jenis potongan berikut (diformat dalam urutan yang tercantum):
-
Potongan badan objek: Mungkin ada satu, beberapa, atau nol potongan tubuh yang terkait dengan permintaan unggahan terpotong.
-
Potongan penyelesaian: Mungkin ada satu, beberapa, atau nol potongan tubuh yang terkait dengan permintaan unggahan yang terpotong.
-
Potongan trailing: Checksum trailing terdaftar setelah potongan penyelesaian. Hanya satu potongan trailing yang diizinkan.
catatan
Setiap unggahan yang terpotong harus diakhiri dengan CRLF akhir (seperti\r\n
) untuk menunjukkan akhir permintaan.
Untuk contoh pemformatan chunked, lihat. Contoh: Unggahan terpotong dengan checksum tambahan
Potongan tubuh objek
Potongan tubuh objek adalah potongan yang berisi data objek aktual yang sedang diunggah ke S3. Potongan ini memiliki batasan ukuran dan format yang konsisten.
Ukuran potongan tubuh objek
Potongan ini harus berisi setidaknya 8.192 byte (atau 8 KiB) data objek, kecuali untuk potongan tubuh akhir, yang bisa lebih kecil. Tidak ada ukuran potongan maksimum eksplisit tetapi Anda dapat mengharapkan semua potongan lebih kecil dari ukuran unggah maksimum 5 GB. Ukuran potongan dapat bervariasi dari satu potongan ke potongan berikutnya berdasarkan implementasi server klien Anda.
Format potongan tubuh objek
Potongan tubuh objek dimulai dengan pengkodean heksadesimal dari jumlah byte dalam potongan tubuh objek, diikuti oleh CRLF (Carriage Return Line Feed), byte objek untuk potongan itu, dan CRLF lainnya.
Sebagai contoh:
hex-encoding-of-object-bytes-in-chunk
\r\nchunk-object-bytes
\r\n
Namun, ketika potongan ditandatangani, potongan tubuh objek mengikuti format yang berbeda, di mana tanda tangan ditambahkan ke ukuran potongan dengan pembatas titik koma. Sebagai contoh:
hex-encoding-of-object-bytes-in-chunk
;chunk-signature
\r\nchunk-object-bytes
\r\n
Untuk informasi selengkapnya tentang penandatanganan potongan, lihat Perhitungan tanda tangan untuk Authorization Header: Mentransfer muatan dalam beberapa potongan (Versi AWS Tanda Tangan 4). Untuk informasi selengkapnya tentang pemformatan potongan, lihat Pengkodean transfer terpotong
Potongan penyelesaian
Potongan penyelesaian diperlukan untuk menjadi potongan tubuh objek terakhir dari setiap unggahan yang terpotong. Format potongan penyelesaian mirip dengan potongan tubuh, tetapi selalu berisi nol byte data objek. (Byte nol dari data objek menunjukkan bahwa semua data telah diunggah.) Unggahan terpotong harus menyertakan potongan penyelesaian sebagai potongan tubuh objek terakhirnya, mengikuti format seperti ini:
0\r\n
Namun, jika permintaan pengkodean konten menggunakan penandatanganan payload, itu mengikuti format ini sebagai gantinya:
0;
chunk-signature
\r\n
Potongan trailer
Potongan trailer menyimpan checksum yang dihitung untuk semua permintaan unggahan S3. Potongan trailer mencakup dua bidang: satu bidang nama header dan satu bidang nilai header. Bidang nama header untuk permintaan upload harus sesuai dengan nilai yang diteruskan ke header x-amz-trailer
permintaan. Misalnya, jika permintaan berisi x-amz-trailer: x-amz-checksum-crc32
dan potongan trailer memiliki nama headerx-amz-checksum-sha1
, permintaan gagal. Bidang nilai dalam potongan trailer mencakup pengkodean base64 dari nilai checksum endian besar untuk objek tersebut. (Pengurutan big-endian menyimpan byte data paling signifikan pada alamat memori terendah, dan byte paling tidak signifikan pada alamat memori terbesar). Algoritma yang digunakan untuk menghitung checksum ini sama dengan akhiran untuk nama header (misalnya,crc32
).
Format potongan trailer
Potongan trailer menggunakan format berikut untuk permintaan muatan yang tidak ditandatangani:
x-amz-checksum-
lowercase-checksum-algorithm-name
:base64-checksum-value
\n\r\n\r\n
Untuk permintaan dengan muatan yang ditandatangani SiGv4, potongan trailer menyertakan tanda tangan trailer setelah potongan trailer.
trailer-checksum
\n\r\ntrailer-signature
\r\n
Anda juga dapat menambahkan CRLF langsung ke akhir nilai checksum base64. Sebagai contoh:
x-amz-checksum-
lowercase-checksum-algorithm-name
:base64-checksum-value
\r\n\r\n
Contoh: Unggahan terpotong dengan checksum tambahan
Amazon S3 mendukung unggahan terpotong yang menggunakan pengkodean aws-chunked
konten untuk PutObject
dan permintaan dengan checksum tambahan. UploadPart
contoh 1 — PutObject
Permintaan potongan yang tidak ditandatangani dengan checksum CRC-32 tertinggal
Berikut ini adalah contoh PutObject
permintaan chunked dengan checksum CRC-32 tertinggal. Dalam contoh ini, klien mengunggah objek 17 KB dalam tiga potongan yang tidak ditandatangani dan menambahkan potongan checksum CRC-32 tertinggal dengan menggunakan header. 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
Berikut adalah contoh respon:
HTTP/1.1 200 ETag: ETag x-amz-checksum-crc32: YABb/g==
catatan
Penggunaan linefeed \n
di akhir nilai checksum dapat bervariasi antar klien.
contoh 2 — PutObject
Permintaan chunked yang ditandatangani SIGV4 dengan checksum CRC-32 () tertinggal CRC32
Berikut ini adalah contoh PutObject
permintaan chunked dengan checksum CRC-32 tertinggal. Permintaan ini menggunakan penandatanganan payload SiGv4. Dalam contoh ini, klien mengunggah objek 17 KB dalam tiga potongan yang ditandatangani. Selain object
body
potongan, completion chunk
dan trailer chunk
juga ditandatangani.
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
Berikut adalah contoh respon:
HTTP/1.1 200 ETag: ETag x-amz-checksum-crc32: YABb/g==