Dokumen ini menunjukkan cara mengaitkan 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 mengaitkan 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 mengaitkan dan mengelola skema. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengaitkan 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.
Panduan untuk mengaitkan skema dengan topik
Anda dapat mengaitkan skema dengan suatu topik saat membuat atau mengedit topik. Berikut adalah panduan untuk mengaitkan skema dengan suatu topik:
Anda dapat mengaitkan skema dengan satu atau beberapa topik.
Setelah skema dikaitkan dengan suatu topik, setiap pesan yang diterima topik dari penerbit harus mengikuti skema tersebut.
Saat mengaitkan skema dengan topik, Anda juga harus menentukan encoding pesan yang akan dipublikasikan sebagai
BINARY
atauJSON
. Jika menggunakan JSON dengan skema Avro, perhatikan aturan encoding untuk union.Jika skema yang terkait dengan topik memiliki revisi, pesan harus cocok dengan encoding dan memvalidasi terhadap revisi dalam rentang yang tersedia. Jika tidak melakukan validasi, pesan akan gagal dipublikasikan.
Revisi dicoba dalam urutan kronologis terbalik yang didasarkan pada waktu pembuatan. Untuk membuat revisi skema, lihat Meng-commit revisi skema.
Logika validasi untuk skema pesan
Saat mengaitkan skema dengan suatu topik dan jika skema tersebut memiliki revisi, Anda dapat menentukan rentang subset revisi yang akan digunakan. Jika Anda tidak menentukan suatu rentang, seluruh rentang akan digunakan untuk validasi.
Jika Anda tidak menetapkan revisi sebagai First revision allowed, revisi terlama yang ada untuk skema tersebut akan digunakan untuk validasi. Jika Anda tidak menentukan revisi sebagai Last revision allowed, revisi terbaru yang ada untuk skema akan digunakan.
Mari kita ambil contoh Skema S
yang dilampirkan ke topik T
.
Skema S
memiliki ID revisi A
,B
, C
, dan D
yang dibuat secara berurutan,
dengan A
adalah revisi pertama atau terlama. Tidak ada skema yang identik
satu sama lain, atau rollback dari skema yang sudah ada.
Jika Anda hanya menetapkan kolom First revision allowed sebagai
B
, pesan yang hanya sesuai dengan skemaA
akan ditolak, sedangkan pesan yang sesuai dengan skemaB
,C
, danD
akan diterima.Jika Anda hanya menetapkan kolom Last revision allowed sebagai
C
, pesan yang sesuai dengan skemaA
,B
, danC
akan diterima, dan pesan yang hanya sesuai dengan skemaD
akan ditolak.Jika Anda menetapkan kedua kolom First revision allowed sebagai
B
dan Last revision allowed sebagaiC
, pesan yang sesuai dengan skemaB
danC
akan diterima.Anda juga dapat menetapkan revisi pertama dan terakhir ke ID revisi yang sama. Dalam kasus ini, hanya pesan yang sesuai dengan revisi tersebut yang akan diterima.
Membuat dan mengaitkan skema saat membuat topik
Anda dapat membuat topik dengan skema menggunakan Google Cloud Console, gcloud CLI, Pub/Sub API, atau Library Klien Cloud.
Konsol
Di konsol Google Cloud, buka halaman Pub/Sub topics.
Klik Create topic.
Di kolom ID Topik, masukkan ID untuk topik Anda.
Untuk menamai topik, lihat panduan.
Centang kotak Use a schema.
Pertahankan setelan default untuk kolom lainnya.
Anda dapat membuat skema atau menggunakan skema yang sudah ada.
Jika Anda membuat skema, ikuti langkah-langkah berikut: `
- Untuk Select a Pub/Sub schema, pilih Create a new schema.
Halaman Buat skema ditampilkan di tab sekunder.
Ikuti langkah-langkah di bagian Membuat skema.
Kembali ke tab Buat topik dan klik Muat ulang.
Telusuri skema Anda di kolom Pilih skema Pub/Sub.
Pilih encoding pesan sebagai JSON atau Biner.
Skema yang baru saja Anda buat memiliki ID revisi. Anda dapat membuat revisi skema tambahan seperti yang dibahas dalam Meng-commit revisi skema.
Jika Anda mengaitkan skema yang sudah dibuat, ikuti langkah-langkah berikut:
Untuk Select a Pub/Sub schema, pilih skema yang ada.
Pilih encoding pesan sebagai JSON atau Biner.
Opsional: Jika skema yang dipilih memiliki revisi, untuk Revon Range, gunakan menu drop-down untuk First revision allowed dan Last revision allowed.
Anda dapat menentukan kedua kolom, menentukan salah satunya, atau mempertahankan setelan default berdasarkan persyaratan Anda.
Pertahankan setelan default untuk kolom lainnya.
Klik Create untuk menyimpan topik dan menetapkannya ke skema yang dipilih.
gcloud
Untuk membuat topik yang ditetapkan dengan skema yang dibuat sebelumnya, jalankan
perintah
gcloud pubsub topics create
:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --first-revision-id=FIRST_REVISION_ID \ --last-revision-id=LAST_REVISION_ID \
Dengan keterangan:
- TOPIC_ID adalah ID untuk topik yang Anda buat.
- ENCODING_TYPE adalah encoding pesan yang divalidasi terhadap skema. Nilai ini harus ditetapkan ke
JSON
atauBINARY
. - SCHEMA_ID adalah ID dari skema yang ada.
- FIRST_REVISION_ID adalah ID revisi terlama untuk memvalidasi.
- LAST_REVISION_ID adalah ID revisi terbaru untuk divalidasi.
--first-revision-id
dan --last-revision-id
bersifat opsional.
Anda juga dapat menetapkan skema dari project Google Cloud yang berbeda:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
Dengan keterangan:
- SCHEMA_PROJECT adalah project ID dari project Google Cloud untuk skema.
- TOPIC_PROJECT adalah project ID dari project Google Cloud untuk topik tersebut.
REST
Untuk membuat topik, gunakan metode
projects.topics.create
:
Permintaan:
Permintaan harus diautentikasi dengan token akses pada header Authorization
. Guna mendapatkan token akses untuk Kredensial Default Aplikasi saat ini: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Isi permintaan:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
Dengan keterangan:
- PROJECT_ID adalah project ID Anda.
- TOPIC_ID adalah topic ID Anda.
- SCHEMA_NAME adalah nama skema yang digunakan untuk memvalidasi pesan yang dipublikasikan. Formatnya adalah:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE adalah encoding pesan yang divalidasi terhadap skema. Ini harus ditetapkan ke
JSON
atauBINARY
. - FIRST_REVISION_ID adalah ID revisi terlama untuk memvalidasi.
- LAST_REVISION_ID adalah ID revisi terbaru untuk divalidasi.
firstRevisionId
dan lastRevisionId
bersifat opsional.
Respons:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
firstRevisionId
dan lastRevisionId
dihilangkan jika tidak disediakan dalam permintaan.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Mengedit skema yang terkait dengan topik
Anda dapat mengedit topik untuk melampirkan skema, menghapus skema, atau memperbarui rentang revisi yang digunakan untuk memvalidasi pesan. Secara umum, jika ada perubahan yang direncanakan untuk skema yang digunakan, Anda dapat melakukan commit revisi baru dan memperbarui rentang revisi yang digunakan untuk topik tersebut.
Anda dapat mengedit skema yang terkait dengan topik menggunakan Konsol Google Cloud, gcloud CLI, Pub/Sub API, atau Library Klien Cloud.
Konsol
Di konsol Google Cloud, buka halaman Pub/Sub topics.
Klik ID Topik untuk sebuah topik.
Di halaman detail topik, klik Edit.
Anda dapat melakukan perubahan berikut pada skema.
Mungkin diperlukan waktu beberapa menit agar perubahan diterapkan.
Jika Anda ingin menghapus skema dari topik, di halaman Edit topic, hapus centang pada kotak Use a schema.
Jika ingin mengubah skema, di bagian Schema, pilih nama skema.
Perbarui kolom lain sesuai kebutuhan.
- Jika Anda ingin memperbarui rentang revisi, untuk Revisi Rentang, gunakan menu drop-down untuk Revisi pertama diizinkan dan Revisi terakhir diizinkan.
Anda dapat menentukan kedua kolom, menentukan salah satunya, atau mempertahankan setelan default berdasarkan persyaratan Anda.
Klik Update untuk menyimpan perubahan.
gcloud
gcloud pubsub topics update TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_NAME \ --first-revision-id=FIRST_REVISION_ID \ --last-revision-id=LAST_REVISION_ID \
Dengan keterangan:
- TOPIC_ID adalah ID untuk topik yang Anda buat.
- ENCODING_TYPE adalah encoding pesan yang divalidasi terhadap skema. Nilai ini harus ditetapkan ke
JSON
atauBINARY
. - SCHEMA_NAME adalah nama skema yang ada.
- FIRST_REVISION_ID adalah ID revisi terlama untuk memvalidasi.
- LAST_REVISION_ID adalah ID revisi terbaru untuk divalidasi.
--first-revision-id
dan --last-revision-id
bersifat opsional.
REST
Untuk memperbarui topik, gunakan metode
projects.topics.patch
:
Permintaan:
Permintaan harus diautentikasi dengan token akses pada header Authorization
. Guna mendapatkan token akses untuk Kredensial Default Aplikasi saat ini: gcloud auth application-default print-access-token
.
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Isi permintaan:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" "update_mask": } }
Dengan keterangan:
- PROJECT_ID adalah project ID Anda.
- TOPIC_ID adalah topic ID Anda.
- SCHEMA_NAME adalah nama skema yang digunakan untuk memvalidasi pesan yang dipublikasikan. Formatnya adalah:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE adalah encoding pesan yang divalidasi terhadap skema. Ini harus ditetapkan ke
JSON
atauBINARY
. - FIRST_REVISION_ID adalah ID revisi terlama untuk memvalidasi.
- LAST_REVISION_ID adalah ID revisi terbaru untuk divalidasi.
firstRevisionId
dan lastRevisionId
bersifat opsional.
Respons:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
firstRevisionId
dan lastRevisionId
keduanya tidak ditetapkan setelah
update.
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.
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.
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.
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.
0Langkah selanjutnya
- Meng-commit revisi skema
- Memublikasikan pesan ke topik dengan skema
- Memvalidasi definisi skema
- Memvalidasi pesan untuk skema