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 Apa itu S3 Express One Zone? dan 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 unggah bagian, Anda harus mencatat nomor bagian dan nilai ETag. Anda harus memasukkan nilai-nilai ini dalam permintaan selanjutnya untuk menyelesaikan unggahan multipart. Setiap bagian akan memiliki ETag sendiri 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 penyelesaian unggahan multibagian Anda harus menyertakan ID unggahan dan daftar nomor bagian maupun nilai ETag yang sesuai. Respons Amazon S3 mencakup sebuah ETag yang secara unik mengidentifikasi data objek gabungan. ETag ini belum tentu merupakan hash MD5 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 panggilan API berikut untuk seluruh proses. Akan ada total 1002 panggilan API.

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. Sebaliknya, simpan daftar nomor bagian Anda sendiri yang Anda tentukan saat mengunggah bagian dan nilai ETag yang ditampilkan oleh 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 MD5 secara default untuk memverifikasi integritas data; namun, Anda dapat menentukan algoritma checksum tambahan yang akan digunakan. Saat menggunakan MD5, Amazon S3 menghitung checksum dari seluruh objek multibagian setelah unggahannya 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 akan membuat kesalahan 500 Internal Server Error HTTP.

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

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. 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.

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. Bagian multibagian yang sedang berlangsung untuk PUT ke kelas penyimpanan S3 Glacier Flexible Retrieval ditagih sebagai S3 Glacier Flexible Retrieval Staging Storage dengan tarif 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 PUT ke kelas penyimpanan 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.

Dukungan API untuk unggahan multibagian

Pustaka ini menyediakan abstraksi tingkat tinggi yang mempermudah pengunggahan objek multibagian. Namun, jika aplikasi Anda membutuhkan, Anda dapat menggunakan API REST secara langsung. Bagian berikut dalam Referensi API Amazon Simple Storage Service menjelaskan tentang API REST untuk unggahan multibagian.

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 Dukungan SDK untuk unggahan multipart

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

API dan izin unggahan multibagian

Anda harus memiliki izin yang diperlukan untuk menggunakan operasi pengunggahan multibagian. Anda dapat menggunakan daftar kontrol akses (ACL), kebijakan bucket, atau kebijakan pengguna untuk memberikan izin kepada individu guna melakukan operasi ini. Tabel berikut mencantumkan izin yang diperlukan untuk berbagai operasi unggahan multibagian saat menggunakan ACL, 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 seorang pengguna IAM, elemen ini akan menyediakan ARN pengguna dan nama tampilan.

Unggah Bagian

Anda harus diizinkan untuk melakukan tindakan s3:PutObject pada sebuah objek untuk 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 untuk 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 inisiator unggahan multibagian diizinkan untuk melakukan tindakan ini sebagai bagian dari kebijakan IAM dan bucket. Jika inisiator adalah pengguna IAM, pengguna tersebut juga Akun AWS diizinkan untuk menghentikan unggahan multibagian tersebut. Dengan kebijakan titik akhir VPC, inisiator unggahan multibagian 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 multipart adalah pengguna IAM, Akun AWS pengendali pengguna IAM tersebut 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 upload multipart dengan enkripsi menggunakan kunci AWS Key Management Service (AWS KMS) KMS, pemohon harus memiliki izin untuk kms:Decrypt dan kms:GenerateDataKey tindakan pada kunci. Izin ini diperlukan karena Amazon S3 harus mendekripsi dan membaca data dari bagian file terenkripsi sebelum menyelesaikan unggahan multibagian.

Untuk informasi lebih lanjut, lihat Mengunggah sebuah file besar ke Amazon S3 dengan enkripsi menggunakan AWS KMS key dalam AWS Pusat Pengetahuan.

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

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