Dokumen ini menunjukkan cara melakukan revisi skema untuk topik Pub/Sub.
Sebelum memulai
- Memahami cara kerja skema Pub/Sub.
- Buat skema.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk melakukan revisi skema dan mengelola skema,
minta administrator untuk memberi Anda
peran IAM Pub/Sub Editor (roles/pubsub.editor
) di project Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk melakukan revisi skema dan mengelola skema. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk melakukan revisi skema dan mengelola skema:
-
Buat skema:
pubsub.schemas.create
-
Lampirkan skema ke topik:
pubsub.schemas.attach
-
Commit revisi skema:
pubsub.schemas.commit
-
Hapus skema atau revisi skema:
pubsub.schemas.delete
-
Mendapatkan skema atau revisi skema:
pubsub.schemas.get
-
Skema daftar:
pubsub.schemas.list
-
Mencantumkan revisi skema:
pubsub.schemas.listRevisions
-
Melakukan rollback skema:
pubsub.schemas.rollback
-
Validasi pesan:
pubsub.schemas.validate
-
Mendapatkan kebijakan IAM untuk skema:
pubsub.schemas.getIamPolicy
-
Konfigurasi kebijakan IAM untuk skema:
pubsub.schemas.setIamPolicy
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Anda dapat memberikan peran dan izin ke akun utama seperti pengguna, grup, domain, atau akun layanan. Anda dapat membuat skema dalam satu project dan melampirkannya ke topik yang berada di project berbeda. Pastikan Anda memiliki izin yang diperlukan untuk setiap project.
Merevisi skema
Anda dapat meng-commit revisi skema menggunakan Google Cloud Console, gcloud CLI CLI, Pub/Sub API, atau Library Klien Cloud.
Berikut adalah beberapa panduan untuk melakukan revisi skema:
Anda dapat merevisi skema dalam batasan tertentu:
Untuk skema Buffering Protokol, Anda dapat menambahkan atau menghapus kolom opsional. Anda tidak dapat menambahkan atau menghapus kolom lain. Anda juga tidak dapat mengedit kolom yang ada.
Untuk skema Avro, lihat dokumentasi Avro untuk mengetahui aturan tentang resolusi skema. Revisi baru harus mengikuti aturan seolah-olah revisi tersebut merupakan skema pembaca dan skema penulis.
Skema dapat memiliki maksimum 20 revisi sekaligus. Jika Anda melebihi batas, hapus revisi skema sebelum membuat yang lain.
Setiap revisi memiliki ID revisi unik yang terkait dengannya. ID revisi adalah UUID delapan karakter yang dibuat secara otomatis.
Saat Anda memperbarui rentang revisi atau revisi skema yang digunakan untuk validasi topik, mungkin perlu waktu beberapa menit sampai perubahan diterapkan.
Konsol
Untuk membuat revisi skema, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Pub/Sub scheme.
Klik Schema ID dari skema yang sudah ada.
Halaman Detail skema untuk skema akan terbuka.
Klik Buat revisi.
Halaman Buat revisi skema akan terbuka.
Buat perubahan yang diperlukan.
Misalnya, untuk skema contoh di Avro yang Anda buat di bagian Membuat skema, Anda dapat menambahkan kolom opsional tambahan bernama
Price
sebagai berikut:{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false }, { "name": "Price", "type": "double", "default": "0.0" } ] }
Klik Validasi definisi untuk memeriksa apakah definisi skema sudah benar.
Anda juga dapat memvalidasi pesan untuk skemanya.
Klik Test message untuk menguji contoh pesan.
Di jendela Test message, pilih jenis Encoding pesan.
Dalam Isi pesan, masukkan pesan pengujian.
Misalnya, berikut adalah contoh pesan untuk skema pengujian. Dalam contoh ini, pilih Message encoding sebagai
JSON
.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
Klik Uji.
Klik Commit untuk menyimpan skema.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Dengan keterangan:
- SCHEMA_TYPE adalah
avro
atauprotocol-buffer
. - SCHEMA_DEFINITION adalah
string
yang berisi definisi skema, yang diformat sesuai dengan jenis skema yang dipilih.
Anda juga dapat menetapkan definisi skema dalam file:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Dengan keterangan:
- SCHEMA_TYPE adalah
avro
atauprotocol-buffer
. - SCHEMA_DEFINITION_FILE adalah
string
yang berisi jalur ke file dengan definisi skema, yang diformat sesuai dengan jenis skema yang dipilih.
REST
Untuk melakukan commit revisi skema, kirim permintaan POST seperti berikut:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID:commit Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
Tentukan kolom berikut dalam isi permintaan:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE "name": SCHEMA_NAME }
Dengan keterangan:
- SCHEMA_TYPE adalah
AVRO
atauPROTOCOL_BUFFER
. - SCHEMA_DEFINITION adalah string yang berisi definisi skema, yang diformat sesuai dengan jenis skema yang dipilih.
- SCHEMA_NAME adalah nama skema yang ada.
Isi respons harus berisi representasi JSON dari resource skema. Contoh:
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION "revisionId": REVISION_ID "revisionCreateTime": REVISION_CREATE_TIME }
Dengan keterangan:
- REVISION_ID adalah ID yang dibuat server untuk revisi.
- REVISION_CREATE_TIME adalah stempel waktu ISO 8601 saat revisi dibuat.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Go API.
Avro
Proto
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub C++ API.
Avro
Proto
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Java.
Avro
Proto
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Python API.
Avro
Proto
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
Avro
Proto
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan Memulai: Menggunakan Library Klien. Untuk informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Node.js API.
Avro
Proto
Setelah melakukan commit revisi skema, Anda dapat melihat detail revisi baru di halaman Schemas.