Dokumen ini menjelaskan cara membuat topik Pub/Sub dengan Transformasi Pesan Tunggal (SMT).
SMT topik memungkinkan modifikasi ringan pada data dan atribut pesan secara langsung dalam Pub/Sub. Fitur ini memungkinkan pembersihan data, pemfilteran, atau konversi format sebelum pesan dipublikasikan ke topik.
Untuk membuat topik dengan SMT, Anda dapat menggunakan Google Cloud konsol, Google Cloud CLI, library klien, atau Pub/Sub API.
Sebelum memulai
Pelajari layanan Pub/Sub dan terminologinya.
Pelajari SMT.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang
diperlukan guna membuat topik dengan SMT,
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 ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk membuat topik dengan SMT. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat topik dengan SMT:
-
Berikan izin membuat topik pada project:
pubsub.topics.create
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Anda dapat mengonfigurasi kontrol akses di tingkat project dan di tingkat resource individual.
Membuat topik dengan SMT
Sebelum membuat topik dengan SMT, tinjau dokumentasi untuk Properti topik.
Contoh berikut mengasumsikan bahwa Anda ingin membuat topik dengan SMT User Defined Function (UDF) ini. Untuk mengetahui informasi selengkapnya tentang UDF, lihat Ringkasan UDF.
function redactSSN(message, metadata) {
const data = JSON.parse(message.data);
delete data['ssn'];
message.data = JSON.stringify(data);
return message;
}
Konsol
Di konsol Google Cloud , buka halaman Topics Pub/Sub.
-
Klik Create topic.
Halaman Create topic akan terbuka.
-
Di kolom Topic ID, masukkan ID untuk topik Anda. Untuk mengetahui informasi selengkapnya tentang penamaan topik, lihat panduan penamaan.
-
Di bagian Transformasi, klik Tambahkan transformasi.
-
Masukkan nama fungsi. Misalnya:
redactSSN
. -
Jika Anda tidak ingin segera menggunakan SMT dengan topik, klik opsi Nonaktifkan transformasi. SMT ini akan tetap disimpan, tetapi tidak akan dieksekusi saat pesan mengalir melalui topik Anda.
-
Masukkan transformasi baru. Contoh:
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }
-
Pub/Sub menyediakan fungsi validasi yang memungkinkan Anda memvalidasi SMT. Klik Validasi untuk memvalidasi transformasi.
-
Jika Anda ingin menambahkan transformasi lain, klik Tambahkan transformasi.
- Untuk mengatur semua SMT dalam urutan tertentu, Anda dapat menggunakan panah atas dan bawah. Untuk menghapus SMT, klik tombol hapus.
-
Pub/Sub menyediakan fungsi pengujian yang memungkinkan Anda memeriksa hasil menjalankan SMT pada contoh pesan. Untuk menguji SMT, klik Uji transformasi.
-
Di jendela Test transform, pilih fungsi yang ingin Anda uji.
-
Di jendela Input message, masukkan contoh pesan.
-
Jika Anda ingin menambahkan atribut pesan, klik Tambahkan atribut, lalu masukkan satu atau beberapa pasangan nilai kunci.
-
Klik Uji. Hasil penerapan SMT pada pesan akan ditampilkan.
-
Tutup jendela untuk berhenti menguji SMT pada contoh pesan.
-
Klik Create untuk membuat topik.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Pub/Sub menyediakan fungsi validasi yang memungkinkan Anda memvalidasi SMT. Jalankan perintah
gcloud pubsub message-transforms validate
:gcloud pubsub message-transforms validate --message-transform-file=TRANSFORM_FILE
Ganti kode berikut:
-
TRANSFORM_FILE: Jalur ke file YAML atau JSON yang berisi satu SMT.
Berikut adalah contoh file transformasi YAML:
javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
Pub/Sub menyediakan fungsi pengujian yang memungkinkan Anda memeriksa hasil menjalankan satu atau beberapa SMT pada contoh pesan. Jalankan perintah
gcloud pubsub message-transforms test
:gcloud pubsub message-transforms test --message-transforms-file=TRANSFORMS_FILE --message=MESSAGE --attributes=ATTRIBUTES
Ganti kode berikut:
-
TRANSFORMS_FILE: Jalur ke file YAML atau JSON yang berisi satu atau beberapa SMT.
Berikut adalah contoh file transformasi YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
MESSAGE: Isi pesan yang akan digunakan untuk menguji SMT.
-
ATTRIBUTES: Atribut pesan yang akan digunakan untuk menguji SMT.
-
-
Untuk membuat topik, jalankan perintah
gcloud pubsub topics create
:gcloud pubsub topics create TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILE
Ganti kode berikut:
-
TOPIC_ID: ID atau nama topik yang ingin Anda buat. Untuk mengetahui panduan cara memberi nama topik, lihat Nama resource. Nama topik tidak dapat diubah.
-
TRANSFORMS_FILE: Jalur ke file YAML atau JSON yang berisi satu atau beberapa SMT.
Berikut adalah contoh file transformasi YAML:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai Pub/Sub menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Pub/Sub.
Untuk melakukan autentikasi ke Pub/Sub, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.