Dokumen ini menjelaskan cara membuat langganan Bigtable di Pub/Sub. Langganan Bigtable memungkinkan Anda menulis pesan Pub/Sub langsung ke tabel Bigtable.
Untuk mengetahui informasi selengkapnya tentang jenis langganan ini, lihat Langganan Bigtable.
Sebelum memulai
Tabel Bigtable tempat Anda ingin menulis pesan Pub/Sub harus sudah ada. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola tabel.
Tabel harus memiliki grup kolom bernama
data. Anda dapat menambahkan grup kolom saat membuat tabel.Jika Anda ingin menulis metadata pesan ke tabel, tabel juga harus memiliki grup kolom bernama
pubsub_metadata.
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat langganan Bigtable, minta administrator untuk memberi Anda peran IAM Pub/Sub Editor (roles/pubsub.editor) di project.
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 langganan Bigtable. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat langganan Bigtable:
-
pubsub.subscriptions.createdi project -
pubsub.topics.attachSubscriptiondi topik
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Langganan lintas project
Jika Anda membuat langganan di satu project untuk topik di project lain, Anda harus memiliki izin pubsub.subscriptions.create di project tempat Anda membuat langganan, dan izin pubsub.topics.attachSubscription di topik.
Memberikan peran IAM ke akun layanan
Pub/Sub menggunakan akun layanan Identity and Access Management (IAM) untuk
mengakses Google Cloud resource. Agar Pub/Sub dapat menulis ke Bigtable, Anda harus memberikan peran Bigtable User (roles/bigtable.user) ke akun layanan ini.
Secara default, Pub/Sub menggunakan agen layanan Pub/Sub
(service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com).
Anda juga dapat menentukan
akun layanan yang dikelola pengguna
saat membuat langganan Bigtable.
Menggunakan agen layanan Pub/Sub
Untuk memberikan peran yang diperlukan ke agen layanan Pub/Sub, lakukan langkah-langkah berikut. Anda dapat memberikan peran di project atau di instance Bigtable yang berisi tabel.
Project
Di Google Cloud konsol, buka halaman IAM.
Pilih Sertakan pemberian peran yang disediakan Google.
Temukan baris untuk Akun Layanan Cloud Pub/Sub , lalu klik Edit akun utama.
Klik Tambahkan peran lain , lalu pilih peran Pengguna Bigtable.
Untuk mengetahui informasi selengkapnya, lihat Memberikan peran IAM menggunakan konsol.
Instance
Di Google Cloud konsol, buka halaman Bigtable > Instance.
Di halaman Instance, pilih kotak centang di samping nama instance.
Jika panel info tidak terlihat, klik Tampilkan panel info.
Klik Tambahkan akun utama, lalu masukkan ID akun layanan, dalam format berikut:
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com.Di daftar Tetapkan peran, pilih Pengguna Bigtable.
Klik Simpan. Akun utama diberi peran pada resource.
Menggunakan akun layanan khusus
Jika Anda memberikan peran Pengguna Bigtable ke agen layanan Pub/Sub, pengguna mana pun yang memiliki izin untuk membuat langganan di project Anda dapat menulis ke tabel Bigtable. Jika Anda ingin memberikan izin yang lebih terperinci, konfigurasi akun layanan yang dikelola pengguna.
Izin berikut diperlukan untuk mengonfigurasi akun layanan yang dikelola pengguna agar dapat menulis ke Bigtable:
Akun layanan yang dikelola pengguna harus memiliki peran Pengguna Bigtable.
Akun layanan Cloud Pub/Sub harus memiliki izin
iam.serviceAccounts.getAccessTokendi akun layanan yang dikelola pengguna.Pengguna yang membuat langganan harus memiliki izin
iam.serviceAccounts.actAsdi akun layanan yang dikelola pengguna.
Saat membuat langganan, tentukan akun layanan yang dikelola pengguna. Untuk mengetahui informasi selengkapnya, lihat Membuat langganan Bigtable.
Penulisan tabel Bigtable
Bagian ini menjelaskan cara langganan Bigtable menulis pesan Pub/Sub ke tabel.
Data pesan
Langganan Bigtable menulis data pesan Pub/Sub ke grup kolom bernama data.
Setiap baris berisi data dari satu pesan.
Kunci baris adalah gabungan dari ID langganan, awalan salt ID pesan, dan ID pesan, dalam format berikut:
"projects/PROJECT_NUMBER/subscriptions/SUBSCRIPTION_ID#SALT_PREFIX#MESSAGE_ID"Data pesan ditulis ke satu kolom dalam grup kolom
data. Kolom memiliki kualifikasi kolom string kosong ("").Data ditulis sebagai jenis
BYTES.
Metadata pesan
Secara default, langganan tidak menulis metadata pesan ke tabel. Secara opsional, Anda dapat mengaktifkan penulisan metadata saat Anda membuat langganan Bigtable.
Jika penulisan metadata diaktifkan, langganan akan menulis metadata pesan ke grup kolom bernama pubsub_metadata. Sebelum membuat langganan, pastikan tabel Anda memiliki grup kolom dengan nama ini.
Untuk setiap pesan, langganan akan menulis baris baru dengan kolom berikut di grup kolom pubsub_metadata.
| Kolom | Nilai | Jenis data |
|---|---|---|
subscription_name |
Nama langganan | String |
message_id |
ID pesan | String |
attributes |
Objek JSON yang berisi atribut pesan | String |
Membuat langganan Bigtable
Untuk membuat langganan Bigtable, gunakan perintah
gcloud beta pubsub subscriptions create:
gcloud beta pubsub subscriptions create SUBSCRIPTION_ID \
--topic=TOPIC_ID \
--bigtable-table=projects/PROJECT_ID/instances/INSTANCE_ID/tables/TABLE_ID
Ganti kode berikut:
SUBSCRIPTION_ID: Nama untuk langganan.TOPIC_ID: Nama atau ID topik yang akan dibaca.PROJECT_ID: Project ID.INSTANCE_ID: ID instance Bigtable yang berisi tabel.TABLE_ID: ID tabel yang akan ditulis. Tabel harus memiliki grup kolom bernamadata.
Flag berikut bersifat opsional:
--bigtable-write-metadata: Menentukan apakah akan menulis metadata pesan. Jika Anda menghapus flag ini, langganan tidak akan menulis metadata. Untuk mengetahui informasi selengkapnya, lihat Metadata pesan.--bigtable-app-profile-id=APP_PROFILE: Menentukan profil aplikasi yang akan digunakan untuk penulisan Bigtable. Profil aplikasi harus menggunakan perutean cluster tunggal. Jika flag ini tidak ditentukan, langganan akan menggunakan profil aplikasi default.--bigtable-service-account-email: Menentukan akun layanan yang akan digunakan saat menulis ke Bigtable. Jika tidak ditentukan, langganan akan menggunakan agen layanan Pub/Sub. Untuk mengetahui informasi selengkapnya, lihat Menggunakan akun layanan khusus.
Contoh: Menulis dari Pub/Sub ke Bigtable
Contoh berikut menunjukkan cara membuat langganan Bigtable, menggunakan langganan untuk menulis pesan Pub/Sub ke tabel Bigtable, lalu membuat kueri tabel.
Buat instance Bigtable baru bernama
my-instance.gcloud bigtable instances create my-instance --display-name="My instance" \ --cluster-config=id=my-cluster-1,zone=ZONE,nodes=1Ganti ZONE dengan zona tempat cluster berjalan. Contoh:
us-central1-bBuat tabel Bigtable bernama
table-1dengan grup kolom bernamadata.gcloud bigtable instances tables create table-1 \ --instance=my-instance \ --column-families=dataBuat topik Pub/Sub bernama
topic-1.gcloud pubsub topics create topic-1Buat langganan Bigtable yang membaca dari topik.
gcloud beta pubsub subscriptions create bigtable-sub \ --topic=topic-1 \ --bigtable-table=projects/PROJECT_ID/instances/my-instance/tables/table-1Ganti PROJECT_ID dengan ID project Anda. Google Cloud
Publikasikan pesan ke topik.
gcloud pubsub topics publish topic-1 --message='{"name":"Alice"}'Jika pesan berhasil dipublikasikan, output-nya adalah ID pesan:
messageIds: - 'MESSAGE_ID'
Langganan Bigtable menulis data pesan ke grup kolom data. Untuk membuat kueri data, lakukan langkah-langkah berikut:
Di Google Cloud konsol, buka halaman Instance Bigtable.
Klik instance bernama
my-cluster-1.Di menu navigasi, klik Bigtable Studio.
Di editor kueri, jalankan kueri SQL berikut.
SELECT _key, JSON_VALUE(CAST(data[''] AS STRING), '$.name') AS name FROM table-1;Hasil kueri akan terlihat seperti berikut:
+-------------------+ | _key | name | +-----------|-------+ | "ROW_KEY" | Alice | +-------------------+Data pesan disimpan sebagai jenis
BYTES. Dalam contoh ini, datanya adalah string JSON, sehingga kueri dapat menggunakan GoogleSQL fungsi JSON untuk mengurai data.
Memantau langganan Bigtable
Cloud Monitoring menyediakan sejumlah metrik untuk memantau langganan.
Untuk mengetahui daftar semua metrik yang tersedia terkait Pub/Sub dan deskripsinya, lihat dokumentasi Monitoring untuk Pub/Sub.
Anda juga dapat memantau langganan dari dalam Pub/Sub.
Langkah berikutnya
- Pelajari langganan Bigtable lebih lanjut.
- Pilih jenis langganan.
- Memecahkan masalah langganan Bigtable