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
- Cache-Control
- Content-Disposition
- Content-Encoding
- Content-Language
- Content-Type
- Custom-Time
- Penangguhan objek
- Konfigurasi retensi
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:
public, max-age=3600
, jika objek tidak dienkripsi menggunakan kunci enkripsi yang dikelola pelanggan atau disimpan dalam perimeter layanan Virtual Private Cloud.no-cache, no-store, max-age=0
, jika objek dienkripsi menggunakan kunci enkripsi yang dikelola pelanggan.private, max-age=0
, jika objek disimpan dalam perimeter layanan Virtual Private Cloud.no-cache, no-store, max-age=0, must-revalidate
, jika objek disimpan dalam perimeter layanan Virtual Private Cloud dan dienkripsi menggunakan kunci enkripsi yang dikelola pelanggan.
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.
|
metageneration |
Mengidentifikasi versi metadata, dan meningkat setiap kali metadata dari generation yang ditetapkan diperbarui.
|
Properti generation
dan metageneration
digunakan dalam kondisi
berikut:
Saat menggunakan prasyarat di permintaan: Jika tidak dipenuhi, prasyarat dapat menyebabkan kegagalan permintaan. Jika gagal karena hal ini, permintaan tidak akan dapat menerapkan versi objek yang tidak terduga, seperti mengambil data objek yang salah atau memodifikasi status yang salah dari metadata objek.
Saat mencantumkan, mengakses, memulihkan, dan menghapus versi lama objek: Versi lama objek secara khusus relevan di bucket yang menggunakan atau sebelumnya menggunakan Pembuatan Versi Objek.
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 Google untuk C++
- hash/crc32 untuk Go
- GoogleAPIs Guava untuk Java
- google-crc32c untuk Python
- digest-crc dalam Ruby
CRC32C yang dienkode Base64 memiliki urutan byte big-endian.
MD5
Objek Cloud Storage memiliki hash MD5 jika memenuhi kriteria berikut:
- Objek bukan merupakan objek gabungan
- Objek tidak diupload menggunakan upload multibagian XML API
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:
- Permintaan dibuat melalui API XML
- Objek ini hanya menggunakan kunci milik Google dan dikelola Googleyang didukung Google Cloud untuk enkripsi sisi server
- Objek bukan merupakan objek gabungan dan tidak diupload menggunakan upload multibagian XML API
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
- Melihat dan mengedit metadata objek.
- Pelajari kelas penyimpanan yang tersedia.
- Untuk mengetahui deskripsi mendetail mengenai semua kolom metadata objek yang tersedia di JSON API, lihat Dokumentasi referensi objek untuk JSON.