Dokumen ini menunjukkan cara membuat skema untuk topik Pub/Sub.
Sebelum memulai
Sebelum Anda membuat skema, selesaikan hal-hal berikut:
- Pelajari topik dan alur kerja publikasi.
- Memahami cara kerja skema Pub/Sub.
- Buat topik.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk membuat 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 membuat dan mengelola skema. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat 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.
Membuat skema
Anda dapat membuat skema menggunakan Konsol Google Cloud, gcloud CLI, Pub/Sub API, atau Library Klien Cloud. Berikut adalah beberapa panduan untuk membuat skema:
Agar skema dapat digunakan dengan Pub/Sub, Anda hanya boleh menentukan satu jenis level atas. Pernyataan impor yang merujuk ke jenis lain tidak didukung.
Anda dapat mengaitkan skema yang sama ke beberapa topik.
Anda dapat menguji secara manual apakah pesan memvalidasi suatu skema.
Konsol
Untuk membuat skema, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Pub/Sub scheme.
Klik Buat skema.
Di kolom Schema ID, masukkan ID untuk skema.
Untuk mengetahui panduan pemberian nama skema, lihat Panduan untuk menamai topik, langganan, atau snapshot.
Untuk Schema type, pilih Avro atau Protocol Buffer.
Pelajari jenis skema lebih lanjut.
Di kolom Schema Definition, masukkan definisi Avro atau Protocol Buffer untuk skema Anda.
Misalnya, berikut ini adalah skema sampel di Avro.
{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false } ] }
Opsional: Klik Validasi definisi untuk memeriksa apakah definisi skema sudah benar.
Pemeriksaan validasi tidak memeriksa kompatibilitas skema dengan pesan yang akan dipublikasikan. Uji pesan pada langkah berikutnya.
Opsional: Anda dapat menguji apakah pesan dengan skema yang benar dipublikasikan.
Klik Uji pesan.
Di jendela Test message, pilih jenis Encoding pesan.
Dalam Isi pesan, masukkan pesan pengujian.
Klik Uji.
Misalnya, berikut adalah contoh pesan untuk skema pengujian. Dalam contoh ini, pilih Message encoding sebagai
JSON
.{"ProductName":"GreenOnions", "SKU":34543, "InStock":true}
Keluar dari halaman pesan pengujian.
Klik Create untuk menyimpan skema.
gcloud
gcloud pubsub schemas create 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 create 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 membuat skema, kirim permintaan POST seperti berikut:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID 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 }
Dengan keterangan:
- SCHEMA_TYPE adalah
avro
atauprotocol-buffer
. - SCHEMA_DEFINITION adalah string yang berisi definisi skema, yang diformat sesuai dengan jenis skema yang dipilih.
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.
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
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
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
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
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
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub PHP 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
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan Memulai: Menggunakan Library Klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Pub/Sub Ruby API.
Avro
Proto
Setelah skema dibuat, Anda dapat melihat detail skema di halaman Skema.
Anda dapat mengaitkan skema dengan topik.