Metadata objek

Kelola

Halaman ini berisi pembahasan seputar kolom metadata yang umum digunakan dan disimpan bersama objek di Cloud Storage.

Pengantar

Objek yang disimpan di Cloud Storage memiliki metadata yang terkait dengannya. Metadata berfungsi untuk mengidentifikasi properti objek, serta menentukan cara objek ditangani saat diakses. Metadata merupakan key:value pair. Sebagai contoh, kelas penyimpanan objek direpresentasikan dengan entri metadata storageClass:STANDARD. storageClass adalah kunci untuk metadata tersebut, dan semua objek memiliki kunci semacam ini yang terkait dengannya. STANDARD menentukan nilai yang dimiliki objek spesifik ini, dan nilainya bervariasi dari satu objek ke objek lainnya.

Metadata memiliki mutabilitas yang bervariasi: beberapa metadata dapat diedit kapan saja, beberapa lagi hanya dapat ditetapkan ketika objek dibuat, dan beberapa metadata lainnya hanya dapat dilihat. Contohnya, Anda dapat mengedit nilai metadata Cache-Control kapan saja, tetapi hanya dapat menetapkan metadata storageClass saat objek dibuat atau ditulis ulang. Selain itu, Anda tidak dapat mengedit nilai untuk metadata generation secara langsung, meskipun nilai generation akan berubah saat objek diganti.

Metadata yang dapat diedit

Ada dua kategori metadata yang dapat diubah pengguna untuk objek:

  • Metadata kunci tetap: Metadata yang kuncinya telah ditetapkan, tetapi nilainya dapat Anda tentukan.

  • Metadata kustom: Metadata yang Anda tambahkan dengan menentukan kunci dan nilai yang terkait dengan kunci tersebut.

Saat mengedit metadata, Anda biasanya harus menghindari karakter non-ascii, karena karakter ini tidak diizinkan dalam header HTTP, yang digunakan XML API.

Metadata kunci tetap

Anda dapat mengedit metadata berikut untuk objek, meskipun Anda harus memiliki izin yang memadai:

Metadata kontrol akses

Cloud Storage menggunakan Identity and Access Management (IAM) dan Daftar Kontrol Akses (ACL) untuk mengontrol akses ke objek. Gunakan linknya untuk mempelajari metode kontrol akses ini dan metadata yang terkait.

Cache-Control

Metadata Cache-Control dapat menentukan dua aspek berbeda terkait cara penyajian data dari Cloud Storage, yaitu apakah data dapat di-cache dan apakah data dapat diubah.

Meng-cache data

Metadata Cache-Control memungkinkan Anda mengontrol apakah cache diizinkan untuk meng-cache objek Anda serta mengatur durasinya, yang kemudian dapat ditayangkan untuk memenuhi permintaan mendatang. Cache dapat mencakup cache browser dan Internet, serta cache bawaan Cloud Storage.

Jika objek yang berlaku tidak memiliki entri metadata Cache-Control, Cloud Storage akan menggunakan nilai default:

Jika Anda mengizinkan penyimpanan cache, download dapat terus menerima versi sebelumnya objek, bahkan setelah mengupload versi yang lebih baru. Hal ini terjadi karena versi sebelumnya tetap "baru" dalam cache selama jangka waktu yang ditentukan oleh max-age. Selain itu, objek yang di-cache tidak akan dapat habis masa berlakunya secara global karena objek dapat di-cache di berbagai tempat di internet. Artinya, jika Anda mencabut akses publik ke suatu objek, objek tersebut tetap dapat ditayangkan dari cache, bergantung pada kapan objek tersebut terakhir diakses dan setelan Cache-Control-nya. Misalnya, jika objek Anda ditayangkan dengan Cache-Control public, max-age=3600, objek tersebut dapat tetap ada dalam cache selama satu jam. Jika Anda ingin mencegah penyajian versi cache dari objek yang dapat dibaca secara publik, tetapkan Cache-Control: no-store pada objek.

Jika memerlukan kontrol lebih atas perilaku cache, Anda dapat mengonfigurasi Cloud CDN di bucket.

Mentransformasi data

Metadata Cache-Control juga memungkinkan Anda untuk menyajikan objek saat disimpan, tanpa perlu menerapkan transformasi apa pun pada data, seperti menghapus content-encoding gzip untuk klien yang tidak kompatibel. Untuk menyajikan objek sebagaimana adanya, tetapkan Cache-Control:no-transform.

Content-Disposition

Metadata Content-Disposition menentukan informasi penyajian tentang data yang dikirimkan. Dengan menetapkan Content-Disposition, Anda dapat mengontrol gaya penyajian konten, seperti misalnya, menentukan apakah lampiran otomatis ditampilkan atau apakah diperlukan beberapa tindakan dari pengguna untuk membukanya. Lihat https://datatracker.ietf.org/doc/html/rfc6266 untuk spesifikasi Content-Disposition.

Content-Encoding

Metadata Content-Encoding dapat digunakan untuk menunjukkan bahwa objek dikompresi, sekaligus tetap mempertahankan Content-Type yang mendasari objek. Sebagai contoh, file teks yang dikompresi dengan gzip dapat memiliki informasi bahwa file merupakan file teks yang ditunjukkan di Content-Type, serta informasi bahwa file tersebut dikompresi dengan gzip yang ditunjukkan di Content-Encoding. Anda harus memastikan bahwa file benar-benar dikompresi menggunakan Content-Encoding yang ditentukan sebelum menguploadnya. Jika tidak, perilaku yang tidak terduga dapat terjadi saat mencoba mendownload objek tersebut. Untuk mengetahui informasi selengkapnya, lihat halaman Transcoding.

Untuk konten yang dapat dikompresi, seperti teks, penggunaan Content-Encoding: gzip dapat menghemat biaya jaringan dan penyimpanan serta meningkatkan performa penyajian konten. Namun, untuk konten yang pada dasarnya sudah terkompresi, seperti arsip dan banyak format media lainnya, menerapkan level kompresi lain dan menandainya di metadata Content-Encoding dapat mengurangi ukuran objek dan performa sehingga harus dihindari.

Content-Language

Metadata Content-Language menunjukkan bahasa yang ditujukan untuk objek. Lihat kode bahasa ISO 639-1 untuk mengetahui nilai standar metadata ini.

Cloud Storage mendukung nilai Content-Language dengan panjang hingga 100 karakter.

Content-Type

Metadata yang paling sering ditetapkan adalah Content-Type (dikenal juga sebagai jenis media), yang memungkinkan browser merender objek dengan benar. Semua objek memiliki nilai yang ditentukan dalam metadata Content-Type, tetapi nilai ini tidak harus sama dengan jenis objek yang mendasarinya. Misalnya, jika Content-Type tidak ditentukan oleh uploader dan tidak dapat ditetapkan, nilainya akan disetel ke application/octet-stream atau application/x-www-form-urlencoded, bergantung pada cara Anda mengupload objek. Untuk mengetahui daftar jenis konten yang valid, lihat halaman Jenis Media IANA.

Custom-Time

Metadata Custom-Time adalah tanggal dan waktu yang ditentukan pengguna dan direpresentasikan dalam format RFC 3339 YYYY-MM-DD'T'HH:MM:SS.SS'Z' atau YYYY-MM-DD'T'HH:MM:SS'Z' saat milidetik adalah nol. Metadata ini biasanya ditetapkan untuk menggunakan kondisi DaysSinceCustomTime di Object Lifecycle Management.

Anda tidak dapat menghapus Custom-Time setelah ditetapkan di suatu objek. Selain itu, nilai untuk Custom-Time tidak dapat dikurangi. Dengan kata lain, Anda tidak dapat menetapkan Custom-Time dengan tanggal/waktu yang lebih awal dari Custom-Time saat ini. Namun, Anda dapat menghapus atau mereset Custom-Time secara efektif dengan menulis ulang objek.

Penangguhan objek

Gunakan flag metadata untuk menetapkan penangguhan objek, yang akan mencegah penghapusan atau penggantian objek. Untuk mengetahui informasi selengkapnya, lihat halaman Penangguhan objek.

Konfigurasi retensi

Jika ada, konfigurasi retensi objek akan menentukan tanggal dan waktu sebelum objek tersebut tidak dapat dihapus atau diganti. Untuk mengetahui informasi selengkapnya, lihat Kunci Retensi Objek.

Metadata kustom

Metadata kustom adalah metadata yang kunci dan nilainya Anda tentukan sendiri. Untuk membuat metadata kustom, Anda harus menentukan kunci dan nilai. Setelah membuat pasangan key:value metadata kustom, Anda dapat menghapus kunci tersebut atau mengubah nilainya.

Metadata kustom harus mengikuti batas ukuran dan akan dikenai biaya penyimpanan.

Temukan informasi tentang penetapan metadata kustom di halaman Melihat dan Mengedit Metadata.

Awalan x-goog-meta-

XML API menetapkan dan mengambil metadata objek menggunakan header permintaan, dan JSON API memungkinkan penetapan metadata kustom di permintaan akhir upload yang dapat dilanjutkan dengan menggunakan header permintaan. Untuk membedakan header metadata kustom dan header permintaan standar dengan jelas, kedua API tersebut memberi awalan pada header metadata kustom semacam itu dengan x-goog-meta-.

Metadata yang tidak dapat diedit

Beberapa metadata tidak dapat diedit secara langsung. Metadata ini ditetapkan pada saat pembuatan atau penulisan ulang objek. Sebagai bagian dari pembuatan atau penulisan ulang objek, Anda dapat menetapkan beberapa metadata semacam ini, seperti kelas penyimpanan objek atau kunci enkripsi yang dikelola pengguna. Metadata lain secara otomatis ditambahkan dan hanya dapat dilihat, misalnya, nomor generasi objek atau waktu pembuatannya.

Nomor generasi dan metagenerasi

Sebagai bagian dari metadatanya, setiap objek Cloud Storage memiliki properti generation numerik serta properti metageneration numerik yang secara unik mengidentifikasi objek:

Properti Deskripsi
generation Mengidentifikasi versi objek, dan ada di setiap objek, terlepas dari objek menggunakan Object Versioning atau tidak.
  • Nilai generation versi objek tidak akan berubah. Objek baru dengan nama yang sama dapat menggantikan objek yang ada, tetapi objek baru tersebut selalu memiliki generation yang berbeda.
  • Tidak ada jaminan bahwa nomor generasi untuk versi berikutnya akan meningkat, hanya saja setiap versi baru akan memiliki nomor generasi yang unik.
  • Tidak ada hubungan antara nomor generasi dari objek yang tidak saling berkaitan, meskipun objek tersebut berada di bucket yang sama.
metageneration Mengidentifikasi versi metadata, dan meningkat setiap kali metadata dari generation yang ditetapkan diperbarui.
  • metageneration dimulai pada 1 untuk setiap generation baru dari objek.
  • Properti metageneration tidak valid tanpa properti generation dan hanya boleh digunakan bersama; tidak ada gunanya membandingkan generasi metadata dari dua versi objek.

Properti generation dan metageneration digunakan dalam kondisi berikut:

Checksums

Checksum adalah metadata yang dihitung dari data objek terkait. Checksum digunakan untuk memvalidasi bahwa data objek tidak rusak. Objek Cloud Storage memiliki beberapa kolom metadata checksum.

CRC32C

Semua objek Cloud Storage memiliki hash CRC32C. Library untuk menghitung CRC32C meliputi:

CRC32C yang dienkode Base64 memiliki urutan byte big-endian.

MD5

Objek Cloud Storage memiliki hash MD5 jika memenuhi kriteria berikut:

Hash ini hanya berlaku untuk objek lengkap, sehingga tidak dapat digunakan untuk memeriksa integritas download parsial yang disebabkan oleh pengimplementasian rentang GET.

ETag

Semua objek Cloud Storage memiliki ETag. Namun, objek yang sama dapat memiliki nilai ETag yang berbeda jika diminta dari XML API dibandingkan dengan JSON API. Pada umumnya, pengguna tidak boleh membuat asumsi tentang nilai yang digunakan dalam ETag kecuali bahwa nilai tersebut akan berubah setiap kali data atau metadata yang mendasarinya berubah, sesuai dengan spesifikasi.

Header ETag objek akan menampilkan nilai MD5 objek jika semua hal berikut ini benar:

Waktu modifikasi

Sebagai bagian dari metadatanya, setiap objek Cloud Storage memiliki properti updated yang menunjukkan waktu modifikasi terakhir metadata objek. Waktu updated pada awalnya ditetapkan ke waktu pembuatan objek, lalu berubah setiap kali ada perubahan pada metadata objek. Hal ini termasuk perubahan yang dibuat oleh pemohon, seperti memodifikasi metadata kustom, serta perubahan yang dibuat oleh Cloud Storage atas nama pemohon, seperti mengubah kelas penyimpanan berdasarkan Konfigurasi Object Lifecycle.

Langkah berikutnya