Object Lifecycle Management

Penyiapan Contoh konfigurasi

Untuk mendukung kasus penggunaan umum seperti setelan Time to Live (TTL) untuk objek, mempertahankan versi lama objek, atau melakukan "downgrade" kelas penyimpanan objek guna membantu mengelola biaya, Cloud Storage menawarkan fitur Object Lifecycle Management.

Halaman ini menjelaskan fitur serta opsi yang tersedia saat menggunakannya. Untuk format umum file konfigurasi siklus proses, lihat representasi resource bucket untuk JSON atau format konfigurasi siklus proses untuk XML.

Pengantar

Untuk menggunakan Object Lifecycle Management, tentukan konfigurasi siklus proses, yang harus ditetapkan pada bucket. Konfigurasi ini berisi serangkaian aturan yang berlaku untuk objek saat ini dan yang akan datang dalam bucket. Ketika objek memenuhi kriteria salah satu aturan, Cloud Storage secara otomatis melakukan tindakan tertentu pada objek tersebut. Berikut adalah beberapa contoh kasus penggunaan:

  • Melakukan downgrade kelas penyimpanan objek yang lebih lama dari 365 hari ke Coldline storage.
  • Menghapus objek yang dibuat sebelum 1 Januari 2019.
  • Menyimpan hanya 3 versi terbaru dari setiap objek dalam bucket dengan mengaktifkan pembuatan versi.

Konfigurasi siklus proses

Setiap konfigurasi pengelolaan siklus proses berisi serangkaian aturan. Setiap aturan berisi satu tindakan dan satu atau beberapa kondisi.

  • Objek harus cocok dengan semua kondisi yang ditentukan dalam aturan agar tindakan dalam aturan dapat diambil.

  • Jika Anda menentukan beberapa aturan yang berisi tindakan yang sama, tindakan akan diambil pada objek jika objek tersebut cocok dengan kondisi dalam salah satu aturan.

  • Jika beberapa aturan memenuhi kondisi secara bersamaan untuk satu objek, Cloud Storage akan melakukan tindakan yang terkait dengan salah satu aturan saja, berdasarkan pertimbangan berikut:

    • Tindakan Delete akan lebih diprioritaskan daripada tindakan SetStorageClass apa pun.
    • Tindakan SetStorageClass yang mengalihkan objek ke kelas penyimpanan dengan harga penyimpanan nonaktif terendah akan diprioritaskan.

    Misalnya, jika Anda memiliki satu aturan yang mengubah kelas objek menjadi Nearline storage dan aturan lain yang mengubah kelas objek menjadi Coldline storage, tapi kedua aturan tersebut menggunakan kondisi yang sama persis, kelas objek selalu berubah menjadi Coldline storage saat kondisi terpenuhi.

  • Anda harus menguji aturan siklus proses pada data pengembangan sebelum menerapkannya ke produksi untuk memastikan aturan tidak melakukan tindakan pada kumpulan kondisi yang tidak diinginkan. Jika tidak memungkinkan, Anda harus menguji sebagian kecil data produksi menggunakan kondisi matchesPrefix atau matchesSuffix dalam aturan Anda.

  • Perubahan pada konfigurasi siklus proses bucket dapat memerlukan waktu penerapan hingga 24 jam, dan Object Lifecycle Management mungkin masih melakukan tindakan berdasarkan konfigurasi lama selama waktu tersebut.

    Misalnya, jika Anda mengubah kondisi age dari 10 hari menjadi 20 hari, objek yang berusia 11 hari dapat dihapus oleh Object Lifecycle Management hingga 24 jam kemudian, karena kriteria konfigurasi lama.

Untuk kasus penggunaan, lihat Contoh konfigurasi untuk Object Lifecycle Management.

Tindakan siklus proses

Aturan siklus proses menentukan dengan tepat salah satu tindakan berikut:

Delete

Tindakan Delete akan menghapus objek jika objek memenuhi semua kondisi yang ditentukan dalam aturan siklus proses. Secara default, saat Anda menghapus objek aktif, objek tersebut akan menjadi dihapus secara soft, dan Cloud Storage akan menyimpannya selama tujuh hari. Anda dapat restore objek yang dihapus sementara ini dalam durasi retensi penghapusan sementara.

Pengecualian: Di bucket yang mengaktifkan Pembuatan Versi Objek, menghapus versi aktif objek akan menyebabkan objek tersebut menjadi versi lama, sedangkan penghapusan versi lama akan menghapus versi tersebut dari bucket. Lihat konfigurasi penghapusan objek untuk mengetahui contoh penggunaan tindakan Delete beserta Pembuatan Versi Objek.

Tindakan Delete tidak akan berpengaruh pada objek saat objek memiliki penangguhan objek atau kebijakan retensi yang belum terpenuhi. Selama kondisi dalam tindakan Delete tetap terpenuhi untuk objek, tindakan Delete yang terjadi setelah penangguhan objek akan dihapus dan kebijakan retensi apa pun akan terpenuhi.

SetStorageClass

Tindakan SetStorageClass akan mengubah kelas penyimpanan objek dan mengupdate waktu modifikasi objek saat objek memenuhi semua kondisi yang ditentukan dalam aturan siklus proses singkat ini.

SetStorageClass mendukung transisi kelas penyimpanan berikut:

Kelas penyimpanan asli Kelas penyimpanan baru
Standard Storage Nearline storage
Coldline storage
Archive storage
Nearline storage Coldline storage
Archive storage
Coldline storage Archive Storage

Cloud Storage tidak memvalidasi ketepatan transisi kelas penyimpanan. Artinya, Anda dapat menentukan transisi kelas penyimpanan yang tidak tercantum dalam tabel di atas, tetapi transisi tidak akan terjadi. Anda harus memverifikasi bahwa aturan siklus proses menggunakan salah satu transisi kelas penyimpanan yang tercantum.

Membatalkan upload multibagian yang tidak lengkap

Tindakan AbortIncompleteMultipartUpload akan membatalkan upload multibagian yang tidak selesai dan menghapus bagian terkait saat upload multibagian memenuhi kondisi yang ditentukan dalam aturan siklus proses.

Hanya kondisi siklus proses berikut yang dapat digunakan dengan tindakan ini:

Mencoba membuat aturan yang menggunakan tindakan AbortIncompleteMultipartUpload bersama dengan kondisi lain akan mengakibatkan error.

Kondisi siklus proses

Aturan siklus proses menyertakan kondisi yang harus dipenuhi objek sebelum tindakan yang ditentukan dalam aturan terjadi pada objek. Aturan siklus proses mendukung kondisi berikut:

Semua kondisi bersifat opsional, tetapi setidaknya satu kondisi wajib diisi. Jika mencoba menetapkan konfigurasi siklus proses yang tidak valid, seperti menggunakan tindakan atau kondisi yang tidak ada, Anda akan menerima respons error 400 Bad request, dan konfigurasi siklus proses yang ada akan tetap diterapkan.

age

Kondisi age terpenuhi saat resource mencapai usia yang ditentukan (dalam hari). Usia diukur dari waktu pembuatan resource.

  • Untuk objek, waktu pembuatan adalah waktu saat objek berhasil ditulis ke bucket, seperti saat upload selesai.

    • Usia objek tidak terpengaruh oleh objek yang menjadi versi lama.
  • Untuk upload multibagian, waktu pembuatan adalah waktu saat upload dimulai.

Misalnya, jika resource dibuat pada 10/01/2022 pukul 10.00 UTC dan kondisi age berusia 10 hari, kondisi akan terpenuhi untuk resource pada dan setelah 01/2022/20 10.00 UTC.

createdBefore

Kondisi createdBefore terpenuhi saat objek dibuat sebelum tengah malam pada tanggal yang ditentukan dalam UTC.

customTimeBefore

Kondisi customTimeBefore terpenuhi saat bagian tanggal metadata Custom-Time objek lebih awal dari tanggal yang ditentukan dalam kondisi ini. Kondisi ini ditetapkan menggunakan format tanggal YYYY-MM-DD. customTimeBefore tidak pernah terpenuhi untuk objek tanpa metadata Custom-Time yang ditetapkan.

daysSinceCustomTime

Kondisi daysSinceCustomTime terpenuhi jika jumlah hari yang ditentukan telah berlalu sejak tanggal dan waktu yang ditentukan di kolom metadata Custom-Time objek. Misalnya, jika Custom-Time objek adalah 2020-05-16T10:00:00Z dan kondisi daysSinceCustomTime adalah 10 hari, kondisi akan terpenuhi untuk objek pada dan setelah 26/05/2020 10.00 UTC.

daysSinceCustomTime tidak pernah terpenuhi untuk objek tanpa metadata Custom-Time yang ditetapkan.

daysSinceNoncurrentTime

Kondisi daysSinceNoncurrentTime biasanya hanya digunakan bersama Pembuatan Versi Objek. Kondisi ini terpenuhi jika jumlah hari yang ditentukan telah berlalu sejak objek menjadi versi lama, baik karena versi aktif telah dihapus maupun diganti. Misalnya, jika sebuah objek menjadi versi lama pada 08/07/2020 pukul 15.00 UTC dan kondisi daysSinceNoncurrentTime adalah 10 hari, kondisi akan terpenuhi untuk objek tersebut pada dan setelah 2020/07/18 15.00 UTC.

isLive

Kondisi isLive biasanya hanya digunakan bersama dengan Pembuatan Versi Objek. Jika ditetapkan ke false, kondisi ini terpenuhi untuk versi lama apa pun dari objek. Jika ditetapkan ke true, kondisi ini akan terpenuhi untuk versi aktif objek. Jika Anda tidak menggunakan pembuatan versi, semua objek Anda akan dianggap aktif dan cocok jika isLive adalah true.

matchesPrefix dan matchesSuffix

Kondisi matchesPrefix dan matchesSuffix terpenuhi saat awal atau akhir nama objek sama persis dengan yang peka huruf besar/kecil dengan awalan atau akhiran yang ditentukan. Anda dapat menentukan beberapa string sebagai daftar (misalnya, "matchesSuffix": [".jpg", ".png"]).

Saat menggunakan matchesPrefix, jangan sertakan nama bucket atau / yang mendahului nama objek di sebagian besar jalur permintaan. Misalnya, di Google Cloud CLI, jalur ke objek dalam bucket bernama my_bucket memiliki format yang mirip dengan gs://my_bucket/pictures/paris_2022.jpg. Untuk mencocokkan objek, Anda perlu menggunakan kondisi seperti "matchesPrefix":["pictures/paris_"].

Anda dapat memiliki hingga 50 awalan dan 50 akhiran yang ditentukan di semua aturan. Awalan atau akhiran tidak dapat digunakan dua kali dalam satu kondisi.

matchesStorageClass

Kondisi matchesStorageClass terpenuhi saat sebuah objek di bucket disimpan sebagai kelas penyimpanan yang ditentukan. Anda dapat menggunakan nilai berikut untuk matchesStorageClass: STANDARD, NEARLINE, COLDLINE, dan ARCHIVE.

noncurrentTimeBefore

Kondisi noncurrentTimeBefore biasanya hanya digunakan bersama Pembuatan Versi Objek. Kondisi ini terpenuhi untuk objek yang menjadi versi lama pada tanggal sebelum tanggal yang ditentukan dalam kondisi ini. Kondisi ini ditetapkan menggunakan format tanggal YYYY-MM-DD. noncurrentTimeBefore tidak pernah terpenuhi untuk objek aktif.

numNewerVersions

Kondisi numNewerVersions biasanya hanya digunakan bersama Pembuatan Versi Objek. Jika nilai kondisi ini ditetapkan ke N, versi objek akan memenuhi kondisi tersebut jika ada setidaknya versi N (termasuk versi aktif) yang lebih baru. Untuk versi objek aktif, jumlah versi yang lebih baru dianggap 0. Untuk versi lama terbaru, jumlah versi yang lebih baru adalah 1 (atau 0 jika tidak ada versi objek aktif), dan seterusnya.

Perilaku siklus proses objek

Cloud Storage secara rutin memeriksa semua objek di bucket tempat Object Lifecycle Management dikonfigurasi, dan melakukan semua tindakan yang berlaku sesuai dengan aturan bucket. Cloud Storage melakukan tindakan secara asinkron, sehingga mungkin terdapat jeda antara saat kondisi terpenuhi dan saat tindakan dilakukan. Aplikasi Anda tidak boleh mengandalkan tindakan siklus proses yang terjadi dalam jangka waktu tertentu setelah kondisi siklus proses terpenuhi.

Misalnya, jika sebuah objek memenuhi kondisi untuk penghapusan, objek mungkin tidak langsung dihapus, dan Anda akan melihat objek tersebut hingga tindakan siklus proses dijalankan pada objek tersebut. Dalam bucket yang telah mengaktifkan Pembuatan Versi Objek, hal ini berarti bahwa objek aktif akan berada dalam status tidak aktif untuk beberapa waktu, meskipun versi lama objek tersebut juga memenuhi permintaan hapus aturan kondisi.

Biaya yang berlaku masih berlaku saat objek tetap dalam keadaan aslinya, dengan satu pengecualian: biaya penyimpanan dalam penyimpanan ditiadakan jika objek memenuhi semua kriteria berikut:

  • Objek berada di bucket dengan penghapusan sementara dinonaktifkan
  • Objek tunduk pada aturan dengan tindakan Delete
  • Satu-satunya kondisi untuk aturan adalah kondisi age
  • Kondisi age terpenuhi untuk objek

Pertimbangan biaya SetStorageClass

Serupa dengan mengubah kelas penyimpanan objek secara manual, menggunakan SetStorageClass dihitung sebagai operasi Kelas A dan dikenakan biaya yang ditentukan oleh tujuan kelas penyimpanan.

Tidak seperti mengubah kelas penyimpanan objek secara manual, penggunaan SetStorageClass tidak menulis ulang objek. Hal ini memberi Object Lifecycle Management keunggulan harga tertentu:

Misalnya, Anda mengupload objek sebagai Nearline storage, dan 20 hari kemudian konfigurasi siklus proses Anda mengubah kelas penyimpanan objek tersebut ke Coldline storage. Perubahan ini tidak menimbulkan biaya pengambilan atau penghapusan awal. Jika Anda kemudian menghapus objek 60 hari setelah perubahan kelas penyimpanan, hanya ada biaya penghapusan awal selama 10 hari, karena Coldline storage memiliki durasi penyimpanan minimum 90 hari, dan objek tersebut ada untuk total selama 80 hari.

Sebagai perbandingan, misalkan Anda mengupload objek sebagai Nearline storage, dan 20 hari kemudian mengubah kelas penyimpanan menggunakan penulisan ulang (sekali lagi ke Coldline storage). Perubahan ini akan menimbulkan biaya pengambilan dan biaya penghapusan awal selama 10 hari. Jika Anda kemudian menghapus objek 60 hari setelah penulisan ulang, ada biaya penghapusan awal selama 30 hari.

Dalam kedua contoh ini, jika penghapusan sementara diaktifkan di bucket, biaya penyimpanan akan meningkat, tetapi biaya penghapusan awal akan berkurang berdasarkan durasi periode retensi penghapusan sementara.

Waktu pembuatan objek

Dalam banyak kasus, upload objek selesai segera setelah dimulai; namun, untuk upload yang terjadi melalui beberapa permintaan, seperti upload yang dapat dilanjutkan, mungkin ada hari antara saat permintaan upload awal dikirim dan saat permintaan upload terakhir dikirimkan terkirim. Dalam kasus tersebut, Anda harus memperhatikan hal-hal berikut:

  • Sebuah objek tidak tunduk pada aturan siklus proses sampai setelah uploadnya selesai.
  • Waktu pembuatan objek didasarkan pada waktu upload selesai. Hal ini memengaruhi kondisi siklus proses age dan createdBefore.
  • Saat menetapkan Custom-Time untuk objek, Anda melakukannya di awal upload. Jika Anda menetapkan Custom-Time berdasarkan waktu permintaan, Custom-Time bisa jauh lebih awal dari waktu pembuatan objek. Hal ini memengaruhi kondisi siklus proses customTimeBefore dan daysSinceCustomTime.

Metadata waktu akhir masa berlaku

Jika tindakan Delete ditentukan untuk bucket dengan kondisi age (dan tidak ada kondisi lain selain matchesStorageClass), beberapa objek mungkin akan diberi tag dengan metadata waktu akhir masa berlaku. Waktu habis masa berlaku objek menunjukkan waktu saat objek menjadi (atau menjadi) memenuhi syarat untuk dihapus oleh Object Lifecycle Management. Waktu akhir masa berlaku dapat berubah saat konfigurasi siklus proses bucket atau kebijakan retensi berubah.

Perlu diperhatikan bahwa tidak adanya metadata waktu akhir masa berlaku bukan berarti objek tidak akan dihapus, melainkan tidak tersedia cukup informasi untuk menentukan kapan atau apakah objek akan dihapus. Misalnya, jika waktu pembuatan objek adalah 10/01/2020 10.00 UTC dan kondisi age ditetapkan ke 10 hari, waktu akhir masa berlaku objek adalah 20/02/2020 10.00 UTC. Namun, waktu akhir masa berlaku tidak tersedia untuk objek jika:

  • Ada kondisi lain yang ditentukan dalam aturan Delete, kecuali matchesStorageClass.

  • Anda menggunakan kondisi matchesStorageClass yang tidak menyertakan kelas penyimpanan objek.

  • Objek berada dalam pembekuan, karena Cloud Storage tidak dapat mengetahui kapan pembekuan akan dihapus.

  • Penghapusan sementara diaktifkan di bucket Anda.

Anda tidak dikenai biaya untuk penyimpanan setelah masa berlaku objek berakhir meskipun objek tidak langsung dihapus. Anda dapat terus mengakses objek sebelum objek tersebut dihapus dan bertanggung jawab atas biaya lain (permintaan, bandwidth jaringan). Jika waktu akhir masa berlaku tidak tersedia untuk objek, objek tersebut akan dikenai biaya untuk penyimpanan hingga saat objek tersebut dihapus.

Saat menggunakan waktu akhir masa berlaku, perhatikan hal-hal berikut:

  • Jika bucket memiliki kebijakan retensi, waktu akhir masa berlaku adalah yang paling akhir dalam kondisi age Object Lifecycle Management dan waktu objek memenuhi periode retensi yang ditentukan oleh retensi kebijakan.

  • Jika ada beberapa waktu akhir masa berlaku yang bertentangan berlaku untuk objek karena aturan pengelolaan siklus proses yang berbeda, waktu akhir masa berlaku paling awal yang berlaku akan digunakan.

Opsi untuk melacak tindakan Siklus Proses

Untuk melacak tindakan pengelolaan siklus proses yang dilakukan Cloud Storage, gunakan salah satu opsi berikut:

  • Aktifkan Pub/Sub Notifications untuk Cloud Storage untuk bucket Anda. Fitur ini mengirimkan notifikasi ke topik Pub/Sub pilihan Anda saat tindakan tertentu terjadi. Perlu diketahui bahwa fitur ini tidak merekam siapa yang melakukan tindakan.

Langkah berikutnya