Tutorial: Unggah objek melalui unggahan multipart dan verifikasi integritas datanya - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Unggah objek melalui unggahan multipart dan verifikasi integritas datanya

Unggahan multibagian memungkinkan Anda untuk mengunggah satu objek sebagai kumpulan bagian. Setiap bagian merupakan bagian data objek yang saling berkaitan. Anda dapat mengunggah bagian-bagian objek tersebut secara independen dan dengan urutan apa pun. Jika ada transmisi bagian mana pun yang gagal, Anda dapat mentransmisikan ulang bagian tersebut tanpa memengaruhi bagian lainnya. Setelah semua bagian objek Anda diunggah, Amazon S3 merakit bagian-bagian ini dan menciptakan objek. Secara umum, saat ukuran objek Anda mencapai 100 MB, Anda harus mempertimbangkan untuk menggunakan unggahan multibagian daripada mengunggah objek tersebut dalam satu operasi. Untuk informasi selengkapnya tentang unggahan multipart, lihat. Mengunggah dan menyalin objek menggunakan unggahan multibagian Untuk batasan yang terkait dengan unggahan multipart, lihat. Batas unggahan multibagian Amazon S3

Anda dapat menggunakan checksum untuk memverifikasi bahwa aset tidak diubah saat disalin. Melakukan checksum terdiri dari menggunakan algoritma untuk iterasi secara berurutan atas setiap byte dalam file. Amazon S3 menawarkan beberapa opsi checksum untuk memeriksa integritas data. Kami menyarankan Anda melakukan pemeriksaan integritas ini sebagai praktik terbaik daya tahan dan untuk mengonfirmasi bahwa setiap byte ditransfer tanpa perubahan. Amazon S3 juga mendukung algoritma berikut:: SHA -1, SHA -256,, dan. CRC32 CRC32C Amazon S3 menggunakan satu atau lebih algoritme ini untuk menghitung nilai checksum tambahan dan menyimpannya sebagai bagian dari metadata objek. Untuk informasi selengkapnya tentang checksum, lihat Memeriksa integritas objek.

Tujuan

Dalam tutorial ini, Anda akan belajar cara mengunggah objek ke Amazon S3 dengan menggunakan unggahan multipart dan checksum tambahan SHA -256 melalui AWS Command Line Interface ().AWS CLI Anda juga akan belajar cara memeriksa integritas data objek dengan menghitung MD5 hash dan SHA -256 checksum dari objek yang diunggah.

Prasyarat

  • Sebelum memulai tutorial ini, pastikan Anda memiliki akses ke bucket Amazon S3 yang dapat Anda unggah. Untuk informasi selengkapnya, lihat Membuat bucket.

  • Anda harus memiliki yang AWS CLI diinstal dan dikonfigurasi. Jika Anda belum menginstal, lihat Menginstal atau memperbarui ke versi terbaru dari AWS CLI Panduan AWS Command Line Interface Pengguna. AWS CLI

  • Atau, Anda dapat menjalankan AWS CLI perintah dari konsol dengan menggunakan AWS CloudShell. AWS CloudShell adalah shell berbasis browser dan pra-otentikasi yang dapat Anda luncurkan langsung dari file. AWS Management Console Untuk informasi lebih lanjut, lihat Apa itu CloudShell? dan Memulai dengan AWS CloudShell di Panduan AWS CloudShell Pengguna.

Langkah 1: Buat file besar

Jika Anda sudah memiliki file yang siap diunggah, Anda dapat menggunakan file untuk tutorial ini. Jika tidak, buat file 15 MB menggunakan langkah-langkah berikut. Untuk batasan yang terkait dengan unggahan multipart, lihat. Batas unggahan multibagian Amazon S3

Untuk membuat file besar

Gunakan salah satu perintah berikut untuk membuat file Anda, tergantung pada sistem operasi yang Anda gunakan.

Linux atau macOS

Untuk membuat file 15 MB, buka terminal lokal Anda dan jalankan perintah berikut:

dd if=/dev/urandom of=census-data.bin bs=1M count=15

Perintah ini membuat file bernama census-data.bin diisi dengan byte acak, dengan ukuran 15 MB.

Windows

Untuk membuat file 15 MB, buka terminal lokal Anda dan jalankan perintah berikut:

fsutil file createnew census-data.bin 15728640

Perintah ini membuat file bernama census-data.bin dengan ukuran 15 MB data arbitrer (15728640 byte).

Langkah 2: Pisahkan file menjadi beberapa file

Untuk melakukan pengunggahan multipart, Anda harus membagi file besar Anda menjadi bagian-bagian yang lebih kecil. Anda kemudian dapat mengunggah bagian-bagian yang lebih kecil dengan menggunakan proses upload multipart. Langkah ini menunjukkan cara membagi file besar yang dibuat di Langkah 1 menjadi bagian-bagian yang lebih kecil. Contoh berikut menggunakan file 15 MB bernamacensus-data.bin.

Untuk membagi file besar menjadi beberapa bagian

Linux atau macOS

Untuk membagi file besar menjadi bagian 5 MB, gunakan split perintah. Buka terminal Anda dan jalankan yang berikut:

split -b 5M -d census-data.bin census-part

Perintah ini dibagi census-data.bin menjadi 5 MB bagian bernamacensus-part**, di mana ** sufiks numerik dimulai dari. 00

Windows

Untuk membagi file besar, gunakan PowerShell. Buka Powershell, dan jalankan skrip berikut:

$inputFile = "census-data.bin" $outputFilePrefix = "census-part" $chunkSize = 5MB $fs = [System.IO.File]::OpenRead($inputFile) $buffer = New-Object byte[] $chunkSize $fileNumber = 0 while ($fs.Position -lt $fs.Length) { $bytesRead = $fs.Read($buffer, 0, $chunkSize) $outputFile = "{0}{1:D2}" -f $outputFilePrefix, $fileNumber $fileStream = [System.IO.File]::Create($outputFile) $fileStream.Write($buffer, 0, $bytesRead) $fileStream.Close() $fileNumber++ } $fs.Close()

PowerShell Script ini membaca file besar dalam potongan 5 MB dan menulis setiap potongan ke file baru dengan akhiran numerik.

Setelah menjalankan perintah yang sesuai, Anda akan melihat bagian-bagian di direktori tempat Anda menjalankan perintah. Setiap bagian akan memiliki akhiran yang sesuai dengan nomor bagiannya, misalnya:

census-part00 census-part01 census-part02

Langkah 3: Buat unggahan multipart dengan checksum tambahan

Untuk memulai proses upload multipart, Anda perlu membuat permintaan upload multipart. Langkah ini melibatkan memulai unggahan multibagian dan menentukan checksum tambahan untuk integritas data. Contoh berikut menggunakan checksum SHA -256. Jika Anda ingin memberikan metadata apa pun yang menjelaskan objek yang sedang diunggah, Anda harus menyediakannya dalam permintaan untuk memulai unggahan multibagian.

catatan

Pada langkah ini dan langkah selanjutnya, tutorial ini menggunakan algoritma tambahan SHA -256. Anda mungkin secara opsional menggunakan checksum tambahan lain untuk langkah-langkah ini, seperti, CRC32CRC32C, atau SHA -1. Jika Anda menggunakan algoritma yang berbeda, Anda harus menggunakannya di seluruh langkah-langkah tutorial.

Untuk memulai unggahan multipart

Di terminal Anda, gunakan create-multipart-upload perintah berikut untuk memulai unggahan multipart untuk bucket Anda. Ganti amzn-s3-demo-bucket1 dengan nama bucket Anda yang sebenarnya. Juga, ganti census_data_file dengan nama file yang Anda pilih. Nama file ini menjadi kunci objek saat unggahan selesai.

aws s3api create-multipart-upload --bucket amzn-s3-demo-bucket1 --key 'census_data_file' --checksum-algorithm sha256

Jika permintaan Anda berhasil, Anda akan melihat JSON output seperti berikut:

{ "ServerSideEncryption": "AES256", "ChecksumAlgorithm": "SHA256", "Bucket": "amzn-s3-demo-bucket1", "Key": "census_data_file", "UploadId": "cNV6KCSNANFZapz1LUGPC5XwUVi1n6yUoIeSP138sNOKPeMhpKQRrbT9k0ePmgoOTCj9K83T4e2Gb5hQvNoNpCKqyb8m3.oyYgQNZD6FNJLBZluOIUyRE.qM5yhDTdhz" }
catatan

Saat Anda mengirim permintaan untuk memulai unggahan multibagian, Amazon S3 mengirimkan respons dengan ID unggahan, yang merupakan pengidentifikasi unik untuk unggahan multibagian Anda. Anda harus menyertakan ID unggahan ini setiap kali Anda mengunggah bagian, mendaftar bagian, menyelesaikan unggahan, atau menghentikan sebuah unggahan. Anda harus menggunakanUploadId,Key, dan Bucket nilai untuk langkah-langkah selanjutnya, jadi pastikan untuk menyimpannya.

Selain itu, jika Anda menggunakan unggahan multibagian dengan checksum tambahan, nomor bagian harus berurutan. Jika Anda menggunakan nomor bagian yang tidak berurutan, complete-multipart-upload permintaan dapat menghasilkan. HTTP 500 Internal Server Error

Langkah 4: Unggah bagian dari unggahan multipart Anda

Pada langkah ini, Anda akan mengunggah bagian dari unggahan multipart Anda ke bucket S3 Anda. Gunakan upload-part perintah untuk mengunggah setiap bagian satu per satu. Proses ini memerlukan penentuan ID unggahan, nomor bagian, dan file yang akan diunggah untuk setiap bagian.

Untuk mengunggah bagian-bagiannya
  1. Saat mengunggah bagian, selain ID unggahan, Anda harus menentukan nomor bagian dengan menggunakan --part-number argumen. Anda dapat memilih nomor bagian antara 1 hingga 10.000. Nomor bagian secara unik mengidentifikasi sebuah bagian dan posisinya dalam objek yang Anda unggah. Nomor bagian yang Anda pilih harus dalam urutan berurutan (misalnya, bisa 1, 2, atau 3). Jika Anda mengunggah sebuah bagian baru menggunakan nomor yang sama dengan bagian yang diunggah sebelumnya, bagian yang diunggah sebelumnya akan ditimpa.

  2. Gunakan upload-part perintah untuk mengunggah setiap bagian dari unggahan multipart Anda. Sama seperti pada output yang dibuat oleh create-multipart-upload perintah di Langkah 3. --upload-id Untuk mengunggah bagian pertama data Anda, gunakan perintah berikut:

    aws s3api upload-part --bucket amzn-s3-demo-bucket1 --key 'census_data_file' --part-number 1 --body census-part00 --upload-id "cNV6KCSNANFZapz1LUGPC5XwUVi1n6yUoIeSP138sNOKPeMhpKQRrbT9k0ePmgoOTCj9K83T4e2Gb5hQvNoNpCKqyb8m3.oyYgQNZD6FNJLBZluOIUyRE.qM5yhDTdhz" --checksum-algorithm SHA256

    Setelah menyelesaikan setiap upload-part perintah, Anda akan melihat output seperti contoh berikut:

    { "ServerSideEncryption": "AES256", "ETag": "\"e611693805e812ef37f96c9937605e69\"", "ChecksumSHA256": "QLl8R4i4+SaJlrl8ZIcutc5TbZtwt2NwB8lTXkd3GH0=" }
  3. Untuk bagian selanjutnya, tambahkan nomor bagian yang sesuai:

    aws s3api upload-part --bucket amzn-s3-demo-bucket1 --key 'census_data_file' --part-number <part-number> --body <file-path> --upload-id "<your-upload-id>" --checksum-algorithm SHA256

    Misalnya, gunakan perintah berikut untuk mengunggah bagian kedua:

    aws s3api upload-part --bucket amzn-s3-demo-bucket1 --key 'census_data_file' --part-number 2 --body census-part01 --upload-id "cNV6KCSNANFZapz1LUGPC5XwUVi1n6yUoIeSP138sNOKPeMhpKQRrbT9k0ePmgoOTCj9K83T4e2Gb5hQvNoNpCKqyb8m3.oyYgQNZD6FNJLBZluOIUyRE.qM5yhDTdhz" --checksum-algorithm SHA256

    Amazon S3 mengembalikan tag entitas (ETag) dan checksum tambahan untuk setiap bagian yang diunggah sebagai header dalam respons.

  4. Lanjutkan menggunakan upload-part perintah sampai Anda mengunggah semua bagian objek Anda.

Langkah 5: Buat daftar semua bagian dari unggahan multipart Anda

Untuk menyelesaikan unggahan multibagian, Anda memerlukan daftar semua bagian yang telah diunggah untuk unggahan multibagian tertentu. Output dari list-parts perintah memberikan informasi seperti nama bucket, kunci, ID unggah, nomor bagian, checksum tambahaneTag, dan banyak lagi. Sangat membantu untuk menyimpan output ini dalam file sehingga Anda dapat menggunakannya untuk langkah berikutnya saat menyelesaikan proses pengunggahan multibagian. Anda dapat membuat file JSON output yang dipanggil parts.json dengan menggunakan metode berikut.

Untuk membuat file yang mencantumkan semua bagian
  1. Untuk menghasilkan JSON file dengan detail semua bagian yang diunggah, gunakan list-parts perintah berikut. Ganti amzn-s3-demo-bucket1 dengan nama bucket Anda yang sebenarnya dan <your-upload-id> dengan ID unggahan yang Anda terima di Langkah 3. Untuk informasi selengkapnya tentang list-parts perintah, lihat list-parts di Panduan Pengguna AWS Command Line Interface .

    aws s3api list-parts --bucket amzn-s3-demo-bucket1 --key 'census_data_file' --upload-id <your-upload-id> --query '{Parts: Parts[*].{PartNumber: PartNumber, ETag: ETag, ChecksumSHA256: ChecksumSHA256}}' --output json > parts.json

    Sebuah file baru bernama parts.json dihasilkan. File berisi informasi yang JSON diformat untuk semua bagian yang Anda unggah. parts.jsonFile tersebut menyertakan informasi penting untuk setiap bagian dari unggahan multibagian Anda, seperti nomor bagian dan ETag nilai yang sesuai, yang diperlukan untuk menyelesaikan proses pengunggahan multibagian.

  2. Buka parts.json dengan menggunakan editor teks apa pun atau melalui terminal. Berikut contoh outputnya:

    { "Parts": [ { "PartNumber": 1, "ETag": "\"3c3097f89e2a2fece47ac54b243c9d97\"", "ChecksumSHA256": "fTPVHfyNHdv5VkR4S3EewdyioXECv7JBxN+d4FXYYTw=" }, { "PartNumber": 2, "ETag": "\"03c71cc160261b20ab74f6d2c476b450\"", "ChecksumSHA256": "VDWTa8enjOvULBAO3W2a6C+5/7ZnNjrnLApa1QVc3FE=" }, { "PartNumber": 3, "ETag": "\"81ae0937404429a97967dffa7eb4affb\"", "ChecksumSHA256": "cVVkXehUlzcwrBrXgPIM+EKQXPUvWist8mlUTCs4bg8=" } ] }

Langkah 6: Selesaikan unggahan multipart

Setelah mengunggah semua bagian dari unggahan multipart Anda dan mencantumkannya, langkah terakhir adalah menyelesaikan unggahan multipart. Langkah ini menggabungkan semua bagian yang diunggah menjadi satu objek di bucket S3 Anda.

catatan

Anda dapat menghitung checksum objek sebelum menelepon complete-multipart-upload dengan memasukkan --checksum-sha256 permintaan Anda. Jika checksum tidak cocok, Amazon S3 gagal permintaan. Untuk informasi selengkapnya, silakan lihat complete-multipart-upload di Panduan Pengguna AWS Command Line Interface .

Untuk menyelesaikan unggahan multipart

Untuk menyelesaikan unggahan multipart, gunakan perintah. complete-multipart-upload Perintah ini memerlukan parts.json file yang dibuat di Langkah 5, nama bucket Anda, dan ID unggahan. Ganti <amzn-s3-demo-bucket1> dengan nama bucket Anda dan <your-upload-id> dengan ID unggah dariparts.json.

aws s3api complete-multipart-upload --multipart-upload file://parts.json --bucket amzn-s3-demo-bucket1 --key 'census_data_file' --upload-id <your-upload-id>

Berikut contoh outputnya:

{ "ServerSideEncryption": "AES256", "Location": "https://amzn-s3-demo-bucket1.s3.us-east-2.amazonaws.com/census_data_file", "Bucket": "amzn-s3-demo-bucket1", "Key": "census_data_file", "ETag": "\"f453c6dccca969c457efdf9b1361e291-3\"", "ChecksumSHA256": "aI8EoktCdotjU8Bq46DrPCxQCGuGcPIhJ51noWs6hvk=-3" }
catatan

Jangan menghapus file bagian individual. Anda akan memerlukan bagian-bagian individual sehingga Anda dapat melakukan checksum pada mereka untuk memverifikasi integritas objek yang digabungkan bersama.

Langkah 7: Konfirmasikan bahwa objek diunggah ke bucket Anda

Setelah menyelesaikan pengunggahan multipart, Anda dapat memverifikasi bahwa objek telah berhasil diunggah ke bucket S3 Anda. Untuk membuat daftar objek di bucket Anda dan mengonfirmasi keberadaan file yang baru diunggah, gunakan perintah list-objects-v2

Untuk daftar objek yang diunggah

Untuk membuat daftar objek di Anda, gunakan bucket list-objects-v2 perintah. Ganti amzn-s3-demo-bucket1 dengan nama bucket Anda yang sebenarnya:

aws s3api list-objects-v2 --bucket amzn-s3-demo-bucket1

Perintah ini mengembalikan daftar objek di bucket Anda. Cari file yang Anda unggah (misalnya,census_data_file) dalam daftar objek.

Untuk informasi selengkapnya, lihat bagian Contoh untuk list-objects-v2 perintah di Panduan AWS Command Line Interface Pengguna.

Langkah 8: Verifikasi integritas objek dengan MD5 checksum

Saat mengunggah objek, Anda dapat menentukan algoritma checksum untuk Amazon S3 untuk digunakan. Secara default, Amazon S3 menyimpan MD5 intisari byte sebagai objek. ETag Untuk unggahan multipart, ETag ini bukan checksum untuk seluruh objek, melainkan gabungan checksum untuk setiap bagian individu.

Untuk memverifikasi integritas objek dengan menggunakan MD5 checksum
  1. Untuk mengambil objek ETag yang diunggah, lakukan permintaan: head-object

    aws s3api head-object --bucket amzn-s3-demo-bucket1 --key census_data_file

    Berikut contoh outputnya:

    { "AcceptRanges": "bytes", "LastModified": "2024-07-26T19:04:13+00:00", "ContentLength": 16106127360, "ETag": "\"f453c6dccca969c457efdf9b1361e291-3\"", "ContentType": "binary/octet-stream", "ServerSideEncryption": "AES256", "Metadata": {} }

    Etag ini memiliki “-3" yang ditambahkan ke akhir. Ini menunjukkan bahwa objek diunggah dalam tiga bagian menggunakan unggahan multipart.

  2. Selanjutnya, hitung MD5 checksum setiap bagian menggunakan md5sum perintah. Pastikan Anda memberikan jalur yang benar ke file bagian Anda:

    md5sum census-part*

    Berikut contoh outputnya:

    e611693805e812ef37f96c9937605e69 census-part00 63d2d5da159178785bfd6b6a5c635854 census-part01 95b87c7db852451bb38b3b44a4e6d310 census-part02
  3. Untuk langkah ini, gabungkan MD5 hash secara manual menjadi satu string. Kemudian, jalankan perintah berikut untuk mengubah string menjadi biner dan menghitung MD5 checksum dari nilai biner:

    echo "e611693805e812ef37f96c9937605e6963d2d5da159178785bfd6b6a5c63585495b87c7db852451bb38b3b44a4e6d310" | xxd -r -p | md5sum

    Berikut contoh outputnya:

    f453c6dccca969c457efdf9b1361e291 -

    Nilai hash ini harus sesuai dengan nilai hash dari ETag nilai asli di Langkah 1, yang memvalidasi integritas objek. census_data_file

Saat Anda menginstruksikan Amazon S3 untuk menggunakan checksum tambahan, Amazon S3 menghitung nilai checksum untuk setiap bagian dan menyimpan nilainya. Jika Anda ingin mengambil nilai checksum untuk masing-masing bagian dari unggahan multibagian yang masih berlangsung, Anda dapat menggunakannya. list-parts

Untuk informasi selengkapnya tentang cara kerja checksum dengan objek unggahan multibagian, lihat. Memeriksa integritas objek

Langkah 9: Verifikasi integritas objek dengan checksum tambahan

Pada langkah ini, tutorial ini menggunakan SHA -256 sebagai checksum tambahan untuk memvalidasi integritas objek. Jika Anda telah menggunakan checksum tambahan yang berbeda, gunakan nilai checksum itu sebagai gantinya.

Untuk memverifikasi integritas objek dengan SHA256
  1. Jalankan perintah berikut di terminal Anda, termasuk --checksum-mode enabled argumen, untuk menampilkan ChecksumSHA256 nilai objek Anda:

    aws s3api head-object --bucket amzn-s3-demo-bucket1 --key census_data_file --checksum-mode enabled

    Berikut contoh outputnya:

    { "AcceptRanges": "bytes", "LastModified": "2024-07-26T19:04:13+00:00", "ContentLength": 16106127360, "ChecksumSHA256": "aI8EoktCdotjU8Bq46DrPCxQCGuGcPIhJ51noWs6hvk=-3", "ETag": "\"f453c6dccca969c457efdf9b1361e291-3\"", "ContentType": "binary/octet-stream", "ServerSideEncryption": "AES256", "Metadata": {} }
  2. Gunakan perintah berikut untuk memecahkan kode ChecksumSHA256 nilai untuk masing-masing bagian menjadi base64 dan menyimpannya ke dalam file biner yang disebut. outfile Nilai-nilai ini dapat ditemukan di parts.json file Anda. Ganti contoh string base64 dengan nilai aktual ChecksumSHA256 Anda.

    echo "QLl8R4i4+SaJlrl8ZIcutc5TbZtwt2NwB8lTXkd3GH0=" | base64 --decode >> outfile echo "xCdgs1K5Bm4jWETYw/CmGYr+m6O2DcGfpckx5NVokvE=" | base64 --decode >> outfile echo "f5wsfsa5bB+yXuwzqG1Bst91uYneqGD3CCidpb54mAo=" | base64 --decode >> outfile
  3. Jalankan perintah berikut untuk menghitung SHA256 checksum darioutfile:

    sha256sum outfile

    Berikut contoh outputnya:

    688f04a24b42768b6353c06ae3a0eb3c2c50086b8670f221279d67a16b3a86f9 outfile

    Pada langkah berikutnya, ambil nilai hash dan ubah menjadi nilai biner. Nilai biner ini harus sesuai dengan ChecksumSHA256 nilai dari Langkah 1.

  4. Ubah SHA256 checksum dari Langkah 3 menjadi biner, lalu kodekan ke base64 untuk memverifikasi bahwa itu cocok dengan ChecksumSHA256 nilai dari Langkah 1:

    echo "688f04a24b42768b6353c06ae3a0eb3c2c50086b8670f221279d67a16b3a86f9" | xxd -r -p | base64

    Berikut contoh outputnya:

    aI8EoktCdotjU8Bq46DrPCxQCGuGcPIhJ51noWs6hvk=

    Output ini harus mengkonfirmasi bahwa output base64 cocok dengan ChecksumSHA256 nilai dari output head-object perintah. Jika output cocok dengan nilai checksum, maka objek tersebut valid.

penting
  • Saat Anda menginstruksikan Amazon S3 untuk menggunakan checksum tambahan, Amazon S3 menghitung nilai checksum untuk setiap bagian dan menyimpan nilai ini.

  • Jika Anda ingin mengambil nilai checksum untuk masing-masing bagian dari unggahan multibagian yang masih berlangsung, Anda dapat menggunakan perintah tersebut. list-parts

Langkah 10: Bersihkan sumber daya Anda

Jika Anda ingin membersihkan file yang dibuat dalam tutorial ini, gunakan metode berikut. Untuk petunjuk cara menghapus file yang diunggah ke bucket S3 Anda, lihat. Menghapus objek Amazon S3

Hapus file lokal yang dibuat di Langkah 1:

Untuk menghapus file yang Anda buat untuk upload multipart Anda, jalankan perintah berikut dari direktori kerja Anda:

rm census-data.bin census-part* outfile parts.json