Dokumen ini menunjukkan cara meng-commit revisi skema untuk topik Pub/Sub.
Sebelum memulai
- Memahami cara kerja skema Pub/Sub.
- Membuat skema.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan guna meng-commit revisi skema dan mengelola skema, minta administrator untuk memberi Anda peran IAM Editor Pub/Sub (roles/pubsub.editor) di project Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk meng-commit revisi skema dan mengelola skema. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk meng-commit revisi skema dan mengelola skema:
-
Membuat skema:
pubsub.schemas.create -
Melampirkan skema ke topik:
pubsub.schemas.attach -
Meng-commit revisi skema:
pubsub.schemas.commit -
Menghapus skema atau revisi skema:
pubsub.schemas.delete -
Mendapatkan skema atau revisi skema:
pubsub.schemas.get -
Mencantumkan skema:
pubsub.schemas.list -
Mencantumkan revisi skema:
pubsub.schemas.listRevisions -
Melakukan rollback skema:
pubsub.schemas.rollback -
Memvalidasi pesan:
pubsub.schemas.validate -
Mendapatkan kebijakan IAM untuk skema:
pubsub.schemas.getIamPolicy -
Mengonfigurasi kebijakan IAM untuk skema:
pubsub.schemas.setIamPolicy
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Anda dapat memberikan peran dan izin kepada principal seperti pengguna, grup, domain, atau akun layanan. Anda dapat membuat skema di satu project dan melampirkannya ke topik yang berada di project lain. Pastikan Anda memiliki izin yang diperlukan untuk setiap project.
Merevisi skema
Anda dapat meng-commit revisi skema menggunakan Google Cloud konsol, gcloud CLI, Pub/Sub API, atau Cloud Client Libraries.
Berikut beberapa panduan untuk meng-commit revisi skema:
Anda dapat merevisi skema dalam batasan tertentu:
Untuk skema Protocol Buffer, 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 merupakan skema pembaca dan skema penulis.
Skema dapat memiliki maksimum 20 revisi sekaligus. Jika Anda melebihi batas, hapus revisi skema sebelum membuat revisi lain.
Setiap revisi memiliki ID revisi unik yang terkait dengannya. ID revisi adalah UUID delapan karakter yang dibuat otomatis.
Saat Anda memperbarui rentang revisi atau revisi skema yang digunakan untuk validasi topik, perubahan mungkin memerlukan waktu beberapa menit agar diterapkan.
Konsol
Untuk membuat revisi skema, ikuti langkah-langkah berikut:
Di Google Cloud konsol, buka halaman Pub/Sub schemas.
Klik Schema ID skema yang ada.
Halaman Schema details untuk skema akan terbuka.
Klik Create revision.
Halaman Create schema revision akan terbuka.
Buat perubahan sesuai kebutuhan.
Misalnya, untuk skema contoh di Avro yang Anda buat di Membuat skema, Anda dapat menambahkan kolom opsional tambahan yang disebut
Pricesebagai 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 Validate definition untuk memeriksa apakah definisi skema sudah benar.
Anda juga dapat memvalidasi pesan untuk skema.
Klik Test message untuk menguji pesan contoh.
Di jendela Test message, pilih jenis Message encoding.
Di isi pesan, masukkan pesan pengujian.
Misalnya, berikut adalah pesan contoh untuk skema pengujian. Dalam contoh ini, pilih Message encoding sebagai
JSON.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}Klik Test.
Klik Commit untuk menyimpan skema.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Dengan:
- SCHEMA_TYPE adalah
avroatauprotocol-buffer. - SCHEMA_DEFINITION adalah
stringyang berisi definisi skema, yang diformat sesuai dengan jenis skema yang dipilih.
Anda juga dapat menentukan definisi skema dalam file:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Dengan:
- SCHEMA_TYPE adalah
avroatauprotocol-buffer. - SCHEMA_DEFINITION_FILE adalah
stringyang berisi jalur ke file dengan definisi skema, yang diformat sesuai dengan jenis skema yang dipilih.
REST
Untuk meng-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:
- SCHEMA_TYPE adalah
AVROatauPROTOCOL_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:
- REVISION_ID adalah ID yang dibuat server untuk revisi.
- REVISION_CREATE_TIME adalah stempel waktu ISO 8601 saat revisi dibuat.
Go
Contoh berikut menggunakan versi utama library klien Go Pub/Sub (v2). Jika Anda masih menggunakan library v1, lihat panduan migrasi ke v2. Untuk melihat daftar contoh kode v1, lihat contoh kode yang tidak digunakan lagi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Go.
Avro
Proto
C++
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C++ di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub C++.
Avro
Proto
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Java API.
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 mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Node.js.
Avro
Proto
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Pub/Sub Node.js.
Avro
Proto
Setelah meng-commit revisi skema, Anda dapat melihat detail revisi baru di halaman Schemas.