Mengunggah dan menyalin objek menggunakan unggahan multibagian - Amazon Simple Storage Service

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

Mengunggah dan menyalin objek menggunakan unggahan multibagian

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.

Penggunaan unggahan multibagian memberikan keuntungan sebagai berikut:

  • Peningkatan throughput–Anda dapat mengunggah bagian-bagian secara paralel untuk meningkatkan throughput.

  • Pemulihan yang cepat dari masalah jaringan apa pun–Ukuran bagian yang lebih kecil meminimalkan dampak pengunggahan ulang karena kesalahan jaringan.

  • Jeda dan pelanjutan pengunggahan objek–Anda dapat mengunggah bagian-bagian objek kapan saja. Setelah Anda memulai unggahan multibagian, tidak ada kedaluwarsa; Anda harus secara eksplisit menyelesaikan atau menghentikan unggahan multibagian.

  • Mulai unggahan sebelum Anda mengetahui ukuran akhir objek–Anda dapat mengunggah sebuah objek selagi Anda membuatnya.

Kami menyarankan agar Anda menggunakan unggahan multibagian dengan cara berikut:

  • Jika Anda mengunggah objek besar melalui jaringan dengan bandwidth tinggi yang stabil, gunakan unggahan multibagian untuk memaksimalkan penggunaan bandwidth yang tersedia dengan mengunggah bagian-bagian objek secara paralel untuk performa multi-thread.

  • Jika Anda mengunggah melalui jaringan yang tidak teratur, gunakan unggahan multibagian untuk meningkatkan ketahanan terhadap kesalahan jaringan dengan menghindari pengunggahan ulang. Saat menggunakan unggahan multibagian, Anda harus mencoba mengunggah lagi bagian-bagian yang terganggu selama pengunggahan. Anda tidak perlu mengunggah ulang objek Anda dari awal.

catatan

Untuk informasi selengkapnya tentang menggunakan kelas penyimpanan Amazon S3 Express One Zone dengan bucket direktori, lihat Ember direktori dan S3 Express One Zone dan Ikhtisar ember direktori. Untuk informasi selengkapnya tentang penggunaan unggahan multibagian dengan S3 Express One Zone dan bucket direktori, lihat Menggunakan unggahan multibagian dengan bucket direktori.

Proses pengunggahan multibagian

Pengunggahan multibagian merupakan proses tiga langkah: Anda memulai pengunggahan, Anda mengunggah bagian objek, dan setelah Anda mengunggah semua bagiannya, Anda menyelesaikan pengunggahan multibagian tersebut. Setelah menerima permintaan unggahan multibagian yang selesai, Amazon S3 membangun objek dari bagian-bagian yang diunggah, dan kemudian Anda dapat mengakses objek tersebut sebagaimana Anda ingin mengakses objek lain di dalam bucket Anda.

Anda dapat membuat daftar semua unggahan multibagian yang sedang berlangsung, atau mendapatkan daftar bagian yang telah Anda unggah untuk unggahan multibagian tertentu. Setiap operasi ini dijelaskan dalam bagian ini.

Menginisiasi unggahan multibagian

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. Jika Anda ingin memberikan metadata apa pun yang menjelaskan objek yang sedang diunggah, Anda harus menyediakannya dalam permintaan untuk memulai unggahan multibagian.

Pengunggahan bagian-bagian

Saat mengunggah sebuah bagian, selain ID pengunggahan, Anda harus menentukan nomor bagiannya. 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 tidak harus berurutan (misalnya, nomornya dapat berupa 1, 5, dan 14). Jika Anda mengunggah sebuah bagian baru menggunakan nomor yang sama dengan bagian yang diunggah sebelumnya, bagian yang diunggah sebelumnya akan ditimpa.

Saat Anda mengunggah bagian, Amazon S3 mengembalikan tag entitas (ETag) untuk bagian tersebut sebagai header dalam respons. Untuk setiap unggahan bagian, Anda harus mencatat nomor bagian dan ETag nilainya. Anda harus memasukkan nilai-nilai ini dalam permintaan selanjutnya untuk menyelesaikan unggahan multibagian. Setiap bagian akan memiliki sendiri ETag pada saat diunggah. Namun, setelah unggahan multipart selesai dan semua bagian dikonsolidasikan, semua bagian akan berada di bawah satu ETag sebagai checksum checksum.

catatan

Setelah Anda memulai pengunggahan multibagian dan mengunggah satu atau beberapa bagian, Anda harus menyelesaikan atau menghentikan pengunggahan multibagian agar tidak dikenakan biaya penyimpanan dari bagian yang diunggah. Hanya setelah Anda menyelesaikan atau menghentikan unggahan multibagian, Amazon S3 akan mengosongkan penyimpanan suku cadang dan berhenti menagih Anda untuk penyimpanan suku cadang.

Setelah menghentikan unggahan multibagian, Anda tidak dapat mengunggah bagian apa pun yang menggunakan ID unggahan tersebut lagi. Jika terdapat unggahan bagian yang sedang berlangsung, bagian tersebut masih bisa berhasil atau gagal bahkan setelah Anda menghentikan pengunggahan. Untuk memastikan Anda mengosongkan semua penyimpanan yang digunakan oleh semua bagian, Anda harus menghentikan unggahan multibagian hanya setelah semua unggahan bagian selesai.

Penyelesaian unggahan multibagian

Saat Anda menyelesaikan unggahan multibagian, Amazon S3 membuat objek dengan menggabungkan bagian-bagian dalam urutan menaik berdasarkan nomor bagian. Jika metadata objek disediakan dalam permintaan mulai unggahan multibagian, Amazon S3 akan mengaitkan metadatanya dengan objek tersebut. Setelah permintaan selesai sepenuhnya, bagiantersebut tidak akan ada lagi.

Permintaan unggahan multibagian lengkap Anda harus menyertakan ID unggahan dan daftar nomor bagian dan ETag nilai yang sesuai. Respons Amazon S3 mencakup ETag yang secara unik mengidentifikasi data objek gabungan. ETagIni belum tentu MD5 hash dari data objek.

Contoh panggilan unggahan multibagian

Untuk contoh ini, asumsikan bahwa Anda membuat unggahan multibagian untuk file yang berukuran 100 GB. Dalam hal ini, Anda akan memiliki API panggilan berikut untuk seluruh proses. Akan ada total 1002 API panggilan.

Pendaftaran unggahan multibagian

Anda dapat mendaftar bagian-bagian dari unggahan multibagian tertentu atau semua unggahan multibagian yang sedang berlangsung. Operasi daftar bagian menampilkan informasi bagian yang telah Anda unggah untuk unggahan multibagian tertentu. Untuk setiap permintaan daftar bagian, Amazon S3 akan menampilkan informasi bagian untuk unggahan multibagian tertentu, hingga maksimum 1.000 bagian. Jika ada lebih dari 1.000 bagian dalam unggahan multibagian, Anda harus mengirim serangkaian permintaan daftar bagian untuk mengambil semua bagian. Perhatikan bahwa daftar bagian yang ditampilkan tidak mencakup bagian yang belum selesai diunggah. Dengan menggunakan operasi daftar unggahan multibagian, Anda dapat memperoleh daftar unggahan multibagian yang sedang berlangsung.

Unggahan multibagian yang sedang berlangsung adalah unggahan yang telah Anda mulai, tetapi belum selesai atau dihentikan. Setiap permintaan akan ditampilkan sebanyak maksimum 1.000 unggahan multibagian. Jika ada lebih dari 1.000 unggahan multibagian yang sedang berlangsung, Anda harus mengirim permintaan tambahan untuk mengambil unggahan multibagian yang tersisa. Gunakan pendaftaran yang ditampilkan untuk verifikasi. Jangan menggunakan hasil pendaftaran ini saat mengirim permintaan selesaikan unggahan multibagian. Sebagai gantinya, pertahankan daftar nomor bagian Anda sendiri yang Anda tentukan saat mengunggah bagian dan ETag nilai terkait yang dikembalikan Amazon S3.

Checksum dengan operasi unggahan multibagian

Saat mengunggah sebuah objek ke Amazon S3, Anda dapat menentukan algoritma checksum untuk Amazon S3 untuk digunakan. Amazon S3 menggunakan secara MD5 default untuk memverifikasi integritas data; Namun, Anda dapat menentukan algoritma checksum tambahan untuk digunakan. Saat menggunakanMD5, Amazon S3 menghitung checksum dari seluruh objek multipart setelah unggahan selesai. Checksum ini bukan merupakan checksum dari seluruh objek, melainkan checksum untuk setiap bagian individu.

Saat Anda menginstruksikan Amazon S3 untuk menggunakan checksum tambahan, Amazon S3 menghitung nilai checksum untuk setiap bagian dan menyimpan nilainya. Anda dapat menggunakan API atau SDK untuk mengambil nilai checksum untuk masing-masing bagian dengan menggunakan GetObject atau. HeadObject Jika Anda ingin mengambil nilai checksum untuk masing-masing bagian dari unggahan multibagian yang masih dalam proses, Anda dapat menggunakan ListParts.

penting

Jika Anda menggunakan unggahan multibagian dengan checksum tambahan, nomor bagian multibagian harus menggunakan nomor bagian berturut-turut. Saat menggunakan checksum tambahan, jika Anda mencoba menyelesaikan permintaan unggahan multibagian dengan nomor bagian yang tidak berurutan, Amazon S3 menghasilkan kesalahan. HTTP 500 Internal Server Error

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

Untuk end-to-end prosedur mengunggah objek dengan unggahan multipart dengan checksum tambahan, lihat. Tutorial: Unggah objek melalui unggahan multipart dan verifikasi integritas datanya

Operasi pengunggahan multibagian serentak

Dalam lingkungan pengembangan terdistribusi, aplikasi Anda dapat memulai beberapa pembaruan pada objek yang sama secara bersamaan. Aplikasi Anda dapat memulai beberapa unggahan multibagian menggunakan kunci objek yang sama. Untuk setiap unggahan ini, aplikasi Anda kemudian dapat mengunggah bagian dan mengirim sebuah permintaan menyelesaikan unggahan ke Amazon S3 untuk membuat objek. Jika Penentuan Versi S3 diaktifkan pada bucket, menyelesaikan pengunggahan multibagian akan selalu membuat versi baru. Saat Anda memulai beberapa unggahan multibagian yang menggunakan kunci objek yang sama dalam bucket berkemampuan versi, versi objek saat ini ditentukan oleh pengunggahan yang paling baru dimulai (). createdDate Misalnya, anggaplah Anda memulai CreateMultipartUpload permintaan objek pada pukul 10:00 pagi. Kemudian Anda mengirimkan CreateMultipartUpload permintaan kedua untuk objek yang sama pada pukul 11:00. Karena permintaan kedua dikirimkan baru-baru ini, objek yang diunggah oleh permintaan 11:00 AM akan menjadi versi saat ini, bahkan jika unggahan pertama selesai setelah yang kedua. Untuk bucket dengan Penentuan Versi yang tidak diaktifkan, ada kemungkinan bahwa permintaan lain yang diterima antara saat unggahan multibagian dimulai dan diselesaikan akan didahulukan.

catatan

Ada kemungkinan permintaan lain yang diterima antara saat Anda memulai unggahan multibagian dan menyelesaikannya akan didahulukan. Misalnya, jika operasi lain menghapus kunci setelah Anda memulai unggahan multibagian dengan kunci tersebut, tetapi sebelum Anda menyelesaikannya, keseluruhan respons unggahan multibagian mungkin mengindikasikan sebuah keberhasilan penciptaan objek tanpa Anda dapat melihat objek tersebut.

Mencegah mengunggah objek dengan nama kunci yang identik selama pengunggahan multipart

Anda dapat memeriksa keberadaan objek di bucket Anda sebelum membuatnya menggunakan penulisan bersyarat pada operasi unggahan. Ini dapat mencegah penimpaan data yang ada. Penulisan bersyarat akan memvalidasi tidak ada objek yang ada dengan nama kunci yang sama yang sudah ada di bucket Anda saat mengunggah.

Anda dapat menggunakan penulisan bersyarat untuk PutObjectatau CompleteMultipartUploadpermintaan.

Untuk informasi selengkapnya tentang permintaan bersyarat, lihat,Tambahkan prasyarat ke operasi S3 dengan permintaan bersyarat.

Unggahan multibagian dan harga

Setelah Anda memulai unggahan multibagian, Amazon S3 akan menyimpan semua bagian hingga Anda menyelesaikan atau menghentikan unggahan. Sepanjang masa pakainya, Anda akan ditagih untuk semua penyimpanan, bandwidth, dan permintaan untuk unggahan multibagian ini dan bagian terkaitnya.

Bagian-bagian ini dibebankan sesuai dengan kelas penyimpanan yang ditentukan saat bagiannya diunggah. Pengecualian untuk ini adalah bagian yang diunggah ke S3 Glacier Flexible Retrieval, atau S3 Glacier Deep Archive. Suku cadang multipart yang sedang berlangsung untuk kelas penyimpanan Pengambilan Fleksibel Gletser PUT ke S3 Glacier ditagih sebagai S3 Glacier Flexible Retrieval Staging Staging Storage pada tingkat penyimpanan Standar S3 hingga pengunggahan selesai. Selain itu, keduanya CreateMultipartUpload dan UploadPart ditagih dengan tarif Standar S3. Hanya CompleteMultipartUpload permintaan yang ditagih dengan tarif Pengambilan Fleksibel S3 Glacier. Demikian pula, suku cadang multipart yang sedang berlangsung untuk kelas penyimpanan a PUT ke S3 Glacier Deep Archive ditagih sebagai S3 Glacier Flexible Retrieval Staging Staging Storage pada tingkat penyimpanan Standar S3 hingga unggahan selesai, dengan hanya permintaan yang dikenakan tarif S3 Glacier Deep Archive. CompleteMultipartUpload

Jika Anda menghentikan pengunggahan multibagian, Amazon S3 akan menghapus artefak unggahan dan bagian apa pun yang telah Anda unggah, dan Anda tidak lagi ditagih untuk hal tersebut. Tidak ada biaya penghapusan awal untuk menghapus unggahan multibagian yang belum selesai terlepas dari kelas penyimpanan yang ditentukan. Untuk informasi selengkapnya tentang harga, lihat Harga Amazon S3.

catatan

Untuk meminimalkan biaya penyimpanan, kami menyarankan untuk Anda mengonfigurasi aturan siklus hidup untuk menghapus unggahan multibagian yang tidak lengkap setelah beberapa hari tertentu dengan menggunakan tindakan AbortIncompleteMultipartUpload. Untuk informasi selengkapnya tentang membuat aturan siklus hidup untuk menghapus unggahan multibagian yang tidak lengkap, lihat Mengonfigurasi konfigurasi siklus hidup bucket untuk menghapus unggahan multibagian yang tidak lengkap.

API support untuk unggahan multibagian

Pustaka ini menyediakan abstraksi tingkat tinggi yang memudahkan pengunggahan objek unggahan multibagian. Namun, jika aplikasi Anda membutuhkan, Anda dapat menggunakannya secara REST API langsung. Bagian berikut dalam APIReferensi Layanan Penyimpanan Sederhana Amazon menjelaskan REST API untuk upload multipart.

Untuk panduan unggahan multibagian yang menggunakan fungsi AWS Lambda, lihat Mengunggah objek besar ke Amazon S3 menggunakan akselerasi unggahan dan transfer multibagian.

AWS Command Line Interface dukungan untuk upload multipart

Topik-topik berikut dalam AWS Command Line Interface menjelaskan operasi untuk upload multipart.

AWS SDK support untuk unggahan multibagian

Anda dapat menggunakan AWS SDKs untuk mengunggah objek di beberapa bagian. Untuk daftar API tindakan yang AWS SDKs didukung, lihat:

Unggahan API dan izin multibagian

Anda harus memiliki izin yang diperlukan untuk menggunakan operasi pengunggahan multibagian. Anda dapat menggunakan daftar kontrol akses (ACLs), kebijakan bucket, atau kebijakan pengguna untuk memberikan izin individu untuk melakukan operasi ini. Tabel berikut mencantumkan izin yang diperlukan untuk berbagai operasi unggahan multibagian saat menggunakanACLs, kebijakan bucket, atau kebijakan pengguna.

Tindakan Izin yang diperlukan

Buat Unggahan Multibagian

Anda harus diizinkan untuk melakukan tindakan s3:PutObject pada sebuah objek untuk membuat unggahan multibagian.

Pemilik bucket dapat mengizinkan pengguna utama lain untuk melakukan tindakan s3:PutObject.

Mulai Unggahan Multibagian

Anda harus diizinkan untuk melakukan tindakan s3:PutObject pada sebuah objek untuk memulai unggahan multibagian.

Pemilik bucket dapat mengizinkan pengguna utama lain untuk melakukan tindakan s3:PutObject.

Inisiator

Elemen kontainer yang mengidentifikasi siapa yang memulai unggahan multibagian. Jika inisiator adalah Akun AWS, elemen ini memberikan informasi yang sama dengan elemen Pemilik. Jika inisiator adalah IAM pengguna, elemen ini menyediakan pengguna ARN dan nama tampilan.

Unggah Bagian

Anda harus diizinkan untuk melakukan tindakan s3:PutObject pada sebuah objek guna mengunggah sebuah bagian.

Pemilik bucket harus mengizinkan inisiator untuk melakukan tindakan s3:PutObject pada sebuah objek agar inisiator dapat mengunggah bagian untuk objek tersebut.

Unggah Bagian (Salinan)

Anda harus diizinkan untuk melakukan tindakan s3:PutObject pada sebuah objek guna mengunggah sebuah bagian. Karena Anda mengunggah sebuah bagian dari objek yang sudah ada, Anda harus diizinkan s3:GetObject pada objek sumber.

Agar inisiator dapat mengunggah bagian untuk sebuah objek, pemilik bucket harus mengizinkan inisiator untuk melakukan tindakan s3:PutObject pada objek.

Selesaikan Unggahan Multibagian

Anda harus diizinkan untuk melakukan tindakan s3:PutObject pada sebuah objek untuk menyelesaikan sebuah unggahan multibagian.

Pemilik bucket harus mengizinkan inisiator untuk melakukan tindakan s3:PutObject pada sebuah objek agar inisiator dapat menyelesaikan sebuah unggahan multibagian untuk objek tersebut.

Hentikan Unggahan Multibagian

Anda harus diizinkan untuk melakukan tindakan s3:AbortMultipartUpload untuk menghentikan sebuah unggahan multibagian.

Secara default, pemilik bucket dan pemrakarsa unggahan multibagian diizinkan untuk melakukan tindakan ini sebagai bagian dari kebijakan IAM dan bucket. Jika inisiator adalah IAM pengguna, pengguna tersebut juga Akun AWS diizinkan untuk menghentikan unggahan multibagian itu. Dengan kebijakan VPC endpoint, inisiator unggahan multipart tidak secara otomatis mendapatkan izin untuk melakukan tindakan. s3:AbortMultipartUpload

Selain pengaturan default ini, pemilik bucket dapat mengizinkan pengguna utama lain untuk melakukan tindakan s3:AbortMultipartUpload terhadap suatu objek. Pemilik bucket dapat menolak kemampuan pengguna utama mana pun untuk melakukan tindakan s3:AbortMultipartUpload.

Daftarkan Bagian

Anda harus diizinkan untuk melakukan tindakan s3:ListMultipartUploadParts untuk mendaftar bagian dalam unggahan multibagian.

Secara default, pemilik bucket memiliki izin untuk mendaftarkan bagian untuk unggahan multibagian apa pun pada bucket. Inisiator unggahan multibagian memiliki izin untuk mendaftarkan bagian-bagian dari unggahan multibagian tertentu. Jika inisiator unggahan multibagian adalah IAM pengguna, Akun AWS pengontrol tersebut IAM juga memiliki izin untuk membuat daftar bagian dari unggahan tersebut.

Selain pengaturan default ini, pemilik bucket dapat mengizinkan pengguna utama lain untuk melakukan tindakan s3:ListMultipartUploadParts terhadap suatu objek. Pemilik bucket dapat juga menolak kemampuan pengguna utama mana pun untuk melakukan tindakan s3:ListMultipartUploadParts.

Daftarkan Unggahan Multibagian

Anda harus diizinkan untuk melakukan tindakan s3:ListBucketMultipartUploads pada sebuah bucket untuk mendaftar unggahan multibagian yang sedang berlangsung pada bucket tersebut.

Selain pengaturan default ini, pemilik bucket dapat mengizinkan pengguna utama lain untuk melakukan tindakan s3:ListBucketMultipartUploads terhadap suatu objek.

AWS KMS Enkripsi dan Dekripsi izin terkait

Untuk melakukan unggahan multibagian dengan enkripsi menggunakan KMS kunci AWS Key Management Service (AWS KMS), pemohon harus memiliki izin untuk kms:Decrypt dan kms:GenerateDataKey tindakan pada kunci tersebut. Pemohon juga harus memiliki izin untuk kms:GenerateDataKey tindakan untuk CreateMultipartUploadAPI. Kemudian, pemohon membutuhkan izin untuk kms:Decrypt tindakan pada UploadPart dan UploadPartCopyAPIs. Izin ini diperlukan karena Amazon S3 harus mendekripsi dan membaca data dari bagian file terenkripsi sebelum menyelesaikan unggahan multibagian.

Jika IAM pengguna atau peran Anda Akun AWS sama dengan KMS kunci, maka Anda harus memiliki izin ini pada kebijakan kunci. Jika IAM pengguna atau peran Anda termasuk dalam akun yang berbeda dari KMS kunci, maka Anda harus memiliki izin pada kebijakan kunci dan IAM pengguna atau peran Anda.

Untuk informasi tentang hubungan antara ACL izin dan izin dalam kebijakan akses, lihat. Pemetaan ACL izin dan izin kebijakan akses Untuk informasi tentang IAM pengguna, peran, dan praktik terbaik, lihat IAMidentitas (pengguna, grup pengguna, dan peran) di Panduan IAM Pengguna.