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 tindakanSetStorageClass
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.
- Tindakan
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
ataumatchesSuffix
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 |
---|---|
Penyimpanan Durable Reduced Availability (DRA) | Nearline storage Coldline storage Archive storage Multi-Regional storage/Regional storage1 |
Standard storage, Multi-Regional storage, atau Regional storage | Nearline storage Coldline storage Archive storage |
Nearline storage | Coldline storage Archive storage |
Coldline storage | Archive storage |
1 Untuk bucket di region, kelas penyimpanan baru tidak boleh berupa Multi-Regional storage. Untuk bucket di multi-region atau dual-region, kelas penyimpanan baru tidak dapat berupa Regional 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:
age
createdBefore
customTimeBefore
daysSinceCustomTime
daysSinceNoncurrentTime
isLive
matchesStorageClass
matchesPrefix
danmatchesSuffix
noncurrentTimeBefore
numNewerVersions
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
, ARCHIVE
,
MULTI_REGIONAL
, REGIONAL
, dan DURABLE_REDUCED_AVAILABILITY
.
Secara umum, jika ingin menggunakan kondisi matchesStorageClass
pada
objek Standard storage, Anda juga harus menyertakan hal berikut:
Jika bucket berada di region, sertakan
REGIONAL
danDURABLE_REDUCED_AVAILABILITY
dalam kondisinya.Jika bucket berada di multi-region atau region ganda, sertakan
MULTI_REGIONAL
danDURABLE_REDUCED_AVAILABILITY
dalam kondisinya.
Menyertakan kelas tambahan ini akan memungkinkan aturan siklus proses mencakup objek lama di bucket Anda yang mungkin ditetapkan ke kelas penyimpanan lama.
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.
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
Perilaku siklus proses objek pada objek berversi
Dalam bucket yang mengaktifkan Pembuatan Versi Objek, objek aktif yang dihapus sesuai dengan aturan siklus proses akan berada dalam status tidak aktif selama beberapa waktu. Jika versi lama objek juga memenuhi kondisi aturan penghapusan, versi lama objek tersebut juga akan dihapus setelah waktu berlalu.
Misalnya, ada aturan siklus proses yang menghapus objek yang lebih lama dari 180 hari. Jika berusia 200 hari, objek aktif akan dihapus dan menjadi tidak berlaku. Objek yang sekarang tidak berlaku masih lebih lama dari 180 hari, sehingga objek yang tidak berlaku juga akan dihapus setelah beberapa waktu berlalu.
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:
Tidak ada biaya replikasi antar-region, biaya pengambilan, atau biaya penghapusan awal yang terkait dengan perubahan kelas penyimpanan.
Waktu objek yang ditetapkan pada kelas penyimpanan asli dihitung dalam durasi penyimpanan minimum apa pun yang berlaku untuk kelas penyimpanan baru.
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
dancreatedBefore
. - Saat menetapkan
Custom-Time
untuk objek, Anda melakukannya di awal upload. Jika Anda menetapkanCustom-Time
berdasarkan waktu permintaan,Custom-Time
bisa jauh lebih awal dari waktu pembuatan objek. Hal ini memengaruhi kondisi siklus prosescustomTimeBefore
dandaysSinceCustomTime
.
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
, kecualimatchesStorageClass
.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:
- Gunakan log penggunaan Cloud Storage. Fitur ini mencatat tindakan dan siapa yang melakukan tindakan. Nilai
GCS Lifecycle Management
di kolomcs_user_agent
pada entri log menunjukkan bahwa tindakan yang diambil oleh Cloud Storage sesuai dengan konfigurasi siklus proses.
- 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
- Aktifkan Object Lifecycle Management.
- Pelajari contoh konfigurasi siklus proses.
- Tinjau format umum konfigurasi siklus proses di permintaan JSON API dan permintaan XML API.