Pembuatan Versi Objek mempertahankan objek yang dihapus sebagai objek berversi dan lama yang tetap dapat diakses di bucket Anda hingga dihapus secara eksplisit. Fitur ini digunakan untuk melacak perubahan pada objek dan mengaktifkan pemulihan versi objek tertentu. Halaman ini menjelaskan fitur dan opsi yang tersedia saat menggunakannya.
Sebaiknya gunakan penghapusan sementara, bukan Object Versioning, untuk melindungi data dari kehilangan permanen akibat penghapusan yang tidak disengaja atau berbahaya. Untuk mempelajari lebih lanjut kapan harus menggunakan penghapusan sementara dan Pembuatan Versi Objek, lihat Pertimbangan.
Pengantar
Anda dapat mengaktifkan Pembuatan Versi Objek untuk bucket. Setelah diaktifkan:
- Cloud Storage mempertahankan versi objek lama setiap kali Anda mengganti atau menghapus versi objek aktif, selama Anda tidak menentukan nomor generasi dari versi aktif. - Versi lama mempertahankan nama objek, tetapi diidentifikasi secara unik berdasarkan nomor pembuatannya. 
- Versi lama hanya muncul dalam permintaan yang secara eksplisit memanggilnya untuk disertakan. 
 
- Anda menghapus versi objek yang tidak aktif dengan menyertakan nomor generasi dalam permintaan penghapusan atau menggunakan Object Lifecycle Management. 
- Di bucket yang mengaktifkan penghapusan sementara, saat Anda menghapus objek lama, Cloud Storage akan mengubah statusnya menjadi dihapus sementara. Objek yang dihapus sementara akan dihapus secara permanen setelah periode retensi data penghapusan sementara berakhir. 
- Versi objek lama tidak bergantung pada versi aktif apa pun. 
Jika Anda menonaktifkan Pembuatan Versi Objek:
- Bucket tidak lagi mengumpulkan versi objek lama yang baru. 
- Versi objek yang sudah ada di bucket tidak akan terpengaruh. 
Pertimbangan
- Tidak ada batas default untuk jumlah versi objek yang dapat Anda miliki. Setiap versi lama objek akan dikenai biaya dengan tarif yang sama seperti saat masih aktif. 
- Biaya penghapusan awal hanya berlaku saat versi objek dihapus dari bucket, bukan saat versi tersebut menjadi lama. Durasi penyimpanan untuk versi yang dihapus dari bucket didasarkan pada waktu ketika versi ditambahkan ke bucket, bukan waktu ketika menjadi versi lama. 
- Jika Anda mengaktifkan pembuatan versi, pertimbangkan untuk menggunakan Object Lifecycle Management, yang dapat menghapus versi lama objek setelah jangka waktu tertentu, atau karena versi yang lebih baru berubah menjadi lama. Untuk satu kemungkinan penyiapan, lihat contoh konfigurasi siklus proses untuk menghapus objek. 
- Untuk menentukan apakah akan mengaktifkan Pembuatan Versi Objek atau penghapusan sementara di bucket Anda, pertimbangkan poin-poin berikut: - Jika Anda ingin mencegah kehilangan data permanen akibat penghapusan yang tidak disengaja atau berbahaya, gunakan penghapusan sementara, bukan Pembuatan Versi Objek. Penghapusan sementara memberikan perlindungan tingkat bucket dengan mempertahankan semua objek aktif atau lama yang baru saja dihapus. Fitur ini juga dapat melindungi dari penghapusan tingkat bucket. 
- Jika Anda memiliki persyaratan penagihan tertentu dan telah mengonfigurasi aturan Pengelolaan Siklus Proses Objek untuk mempertahankan sejumlah versi lama yang ditentukan, gunakan Pembuatan Versi Objek. - Dalam skenario seperti itu, Anda hanya mendapatkan perlindungan sebagian dari penghapusan yang tidak disengaja karena Pembuatan Versi Objek tidak melindungi dari peristiwa tingkat bucket atau penghapusan objek lama yang tidak diinginkan. 
- Objek yang tidak aktif dapat diakses dan dibaca, sedangkan objek yang dihapus sementara disimpan secara offline dan tidak dapat dibaca. Memulihkan objek yang dihapus sementara memerlukan izin IAM tertentu yang tersedia untuk peran IAM Admin Penyimpanan ( - roles/storage.admin).- Jika Anda menginginkan akses ke objek yang baru saja dihapus dan tingkat perlindungan yang tinggi terhadap kehilangan data permanen akibat peristiwa penghapusan yang tidak disengaja dan berbahaya, Anda dapat mengaktifkan Pembuatan Versi Objek dan penghapusan sementara di bucket yang sama. Anda dapat mengonfigurasi kebijakan Object Lifecycle Management untuk secara otomatis menghapus versi lama setelah jumlah hari tertentu, lalu menggunakan penghapusan sementara untuk memberikan lapisan perlindungan tambahan. 
 
Metadata objek lama
Versi objek lama memiliki metadatanya sendiri, yang mungkin berbeda dengan metadata versi aktif. Yang terpenting, versi lama mempertahankan ACL-nya dan tidak harus memiliki izin yang sama dengan versi aktif.
Setiap versi, baik aktif maupun lama, memiliki satu set metadata; hanya nomor metagenerasi terbaru yang mengacu pada metadata. Angka metagenerasi yang lebih lama tidak dapat digunakan untuk mengakses metadata yang telah diubah.
Anda dapat mengupdate metadata untuk versi lama suatu objek dengan menentukan generation-nya dalam permintaan Anda. Untuk memastikan semantik read-modify-write yang aman, Anda
dapat menggunakan prasyarat metageneration-match. Penggunaan prasyarat ini akan menyebabkan update gagal jika metadata yang ingin Anda update berubah antara waktu Anda membaca metadata dan mengirim update.
Contoh Pembuatan Versi Objek
Contoh ini menunjukkan apa yang terjadi pada objek cat.jpg di dalam bucket dengan Pembuatan Versi Objek dan penghapusan sementara yang diaktifkan saat Anda mengganti, memperbarui, dan menghapus objek.
- Anda mengupload gambar baru
- Saat Anda pertama kali mengupload - cat.jpgke Cloud Storage, aplikasi akan menerima nomor- generationdan nomor- metageneration. Dalam contoh ini, nomor generasinya adalah- 1360887697105000. Karena objek ini baru, nomor- metagenerationadalah- 1.- cat.jpgmenerima angka- generationdan- metagenerationmeskipun Pembuatan Versi Objek tidak diaktifkan. Anda bisa memperoleh angka-angka ini dengan melihat metadata objek.
- Anda mengaktifkan Pembuatan Versi Objek
- Pada tahap ini, Anda memutuskan untuk mengaktifkan Pembuatan Versi Objek untuk bucket Anda. Tindakan ini tidak memengaruhi jumlah - generationatau- metagenerationdari- cat.jpg.
- Anda mengubah metadata gambar
- Anda memperbarui metadata untuk - cat.jpgdengan menambahkan metadata kustom:- color:black. Memperbarui metadata akan menyebabkan nilai- metagenerationdari- cat.jpgmeningkat, dalam hal ini dari- 1menjadi- 2. Namun, objeknya sendiri tetap tidak berubah, sehingga Cloud Storage terus menyimpan hanya satu versi- cat.jpg, dan versi tersebut terus memiliki nomor- generation- 1360887697105000.
- Anda mengupload gambar versi baru
- Anda mengupload - cat.jpgversi baru ke bucket Cloud Storage. Jika Anda melakukannya, Pembuatan Versi Objek akan memindahkan objek- cat.jpgyang ada ke status tidak aktif. Versi lama mempertahankan kelas penyimpanan dan metadata yang sama dengan yang sebelumnya dimiliki. Versi lama hanya muncul jika Anda membuat listingan berversi: versi tidak muncul dalam perintah listingan normal. Versi lama sekarang dirujuk sebagai:- cat.jpg#1360887697105000.- Sementara itu, - cat.jpgyang baru diupload akan menjadi versi aktif objek tersebut.- cat.jpgbaru ini mendapatkan angka- generation-nya sendiri, dalam contoh ini- 1360887759327000, serta mendapatkan metadatanya sendiri dan nomor- metageneration- 1, yang berarti metadata tersebut tidak berisi metadata- color:blackkecuali jika Anda menentukannya. Saat Anda mengakses atau mengubah- cat.jpg,, ini adalah versi yang digunakan. Atau, Anda dapat merujuk ke versi- cat.jpgmenggunakan nomor- generation-nya. Misalnya, saat menggunakan Google Cloud CLI, Anda akan merujuknya sebagai- cat.jpg#1360887759327000.
- Anda menghapus versi aktif gambar
- Anda sekarang menghapus - cat.jpg. Jika Anda melakukannya, versi yang memiliki nomor generasi- 1360887759327000akan menjadi versi lama. Bucket Anda sekarang berisi dua versi lama dari- cat.jpgdan tidak ada versi aktif. Anda masih dapat merujuk ke versi lama dengan menggunakan nomor- generation-nya, tetapi jika Anda mencoba mengakses- cat.jpgtanpa nomor- generation, upaya tersebut akan gagal.- Demikian pula, listingan objek normal bucket tidak akan menampilkan - cat.jpgsebagai salah satu objek dalam bucket. Untuk mengetahui informasi tentang cara mencantumkan versi objek lama, lihat Mencantumkan versi objek lama.
- Anda menonaktifkan Pembuatan Versi Objek
- Anda menonaktifkan Pembuatan Versi Objek, yang menghentikan objek agar tidak menjadi versi lama. Versi objek lama yang ada tetap ada di Cloud Storage. Meskipun Pembuatan Versi Objek dinonaktifkan, - cat.jpg#1360887697105000dan- cat.jpg#1360887759327000tetap disimpan di bucket Anda sampai dihapus.
- Anda memulihkan salah satu versi lama
- Meskipun Pembuatan Versi Objek dinonaktifkan, Anda dapat membuat salinan salah satu versi lama yang ada, yang secara efektif akan memulihkan versi. Setelah melakukannya, bucket Anda memiliki tiga versi - cat.jpg: dua versi lama dan versi aktif yang berasal dari pemulihan.
- Anda menghapus salah satu versi lama
- Anda dapat menghapus versi lama objek secara manual atau menggunakan Object Lifecycle Management. - Saat Anda menghapus versi lama, - cat.jpg#1360887697105000, versi tersebut akan dihapus sementara. Objek yang dihapus sementara ini dipertahankan selama durasi retensi data penghapusan sementara yang ditentukan dalam kebijakan penghapusan sementara bucket. Setelah durasi retensi berakhir, Cloud Storage akan menghapus secara permanen versi yang dihapus sementara dari objek ini.
- Anda memulihkan salah satu versi objek yang dihapus sementara
- Meskipun Pembuatan Versi Objek dinonaktifkan, Anda dapat memulihkan versi yang dihapus sementara dari objek lama. Salinan versi yang dihapus sementara dipulihkan sebagai versi aktif dengan metadata objek baru dan tanggal pembuatan baru. Objek yang dihapus sementara asli juga tetap berada di bucket dan dihapus secara permanen setelah durasi retensi data penghapusan sementara berakhir. 
Referensi Pembuatan Versi Objek
Tabel referensi ini menunjukkan apa yang terjadi saat Anda melakukan tindakan tertentu dengan Pembuatan Versi Objek.
| Status Pembuatan Versi Objek | Status hapus sementara | Tindakan | Hasil | 
|---|---|---|---|
| Disabled | Disabled | ||
| Hapus dog.png. | dog.pngdihapus secara permanen. | ||
| Hapus versi lama dog.pngdengan menentukan nomor generasinya.1 | Versi lama akan dihapus secara permanen. | ||
| Ganti dog.pngdengan versi baru. | Versi baru menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif yang lama akan dihapus secara permanen. | ||
| Salin versi lama dog.pngke versi aktif.1 | Salinan versi lama akan menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif yang lama akan dihapus secara permanen. | ||
| Disabled | Enabled | ||
| Hapus dog.png. | dog.pngdihapus sementara. | ||
| Hapus versi lama dog.pngdengan menentukan nomor generasinya.1 | Versi lama akan dihapus sementara. | ||
| Ganti dog.pngdengan versi baru. | Versi baru menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif lama dihapus sementara. | ||
| Salin versi lama dog.pngke versi aktif.1 | Salinan versi lama akan menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif lama dihapus sementara. | ||
| Enabled | Disabled | ||
| Menghapus versi aktif dog.pngtanpa menentukan nomor generasinya. | Versi aktif akan menjadi versi lama dan mempertahankan nomor generasi yang sama. | ||
| Hapus versi aktif dog.pngdengan menentukan nomor generasinya. | Versi aktif dihapus secara permanen. | ||
| Hapus versi lama dog.pngdengan menentukan nomor generasinya. | Versi lama akan dihapus secara permanen. | ||
| Ganti dog.pngdengan versi baru. | Versi baru menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif yang lama akan menjadi versi lama dan menggunakan nomor generasi yang sama. | ||
| Salin versi lama dog.pngke versi aktif. | Salinan versi lama akan menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif yang lama akan menjadi versi lama dan menggunakan nomor generasi yang sama. | ||
| Enabled | Enabled | ||
| Menghapus versi aktif dog.pngtanpa menentukan nomor generasinya. | Versi aktif akan menjadi versi lama dan mempertahankan nomor generasi yang sama. | ||
| Hapus versi aktif dog.pngdengan menentukan nomor generasinya. | Versi aktif dihapus sementara. | ||
| Hapus versi lama dog.pngdengan menentukan nomor generasinya. | Versi lama akan dihapus sementara. | ||
| Ganti dog.pngdengan versi baru. | Versi baru menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif yang lama akan menjadi versi lama dan menggunakan nomor generasi yang sama. | ||
| Salin versi lama dog.pngke versi aktif. | Salinan versi lama akan menggantikan versi aktif dan menerima nomor generasi baru. Versi aktif yang lama akan menjadi versi lama dan menggunakan nomor generasi yang sama. | 
1 Versi lama mungkin ada jika bucket telah mengaktifkan Pembuatan Versi Objek.
Perilaku pemulihan
Anda dapat memulihkan versi objek lama secara efektif ke versi aktif saat ini. Lihat Memulihkan versi objek lama untuk panduan langkah demi langkah.
Jika Anda melakukannya dengan mengaktifkan Pembuatan Versi Objek, jika sudah ada versi aktif dari objek tersebut di bucket Anda, Cloud Storage akan menggantikan versi aktif yang sudah ada, tetapi juga mempertahankannya sebagai versi lama yang baru. Dalam kasus demikian, bucket Anda selanjutnya berisi objek yang diganti (sekarang menjadi versi lama) dan dua salinan objek yang sebelumnya merupakan versi lama (satu salinan aktif dan satu salinan yang masih lama), yang semuanya dikenai biaya penyimpanan. Untuk mencegah tagihan yang tidak diperlukan, hapus versi lama yang Anda gunakan untuk membuat salinan aktif saat ini, atau konfigurasikan Object Lifecycle Management untuk menghapus versi lama objek jika memenuhi kondisi yang Anda tentukan.
Langkah berikutnya
- Pelajari cara mengaktifkan Pembuatan Versi Objek.
- Bekerja dengan objek lama.
- Pelajari properti generasi dan metagenerasi objek.
- Pelajari Object Lifecycle Management, yang memungkinkan Anda mengelola versi objek secara otomatis.
- Lihat contoh Object Lifecycle Management yang berfungsi dengan Pembuatan Versi Objek.