Membuat langganan Bigtable

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.create di project
  • pubsub.topics.attachSubscription di 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

  1. Di Google Cloud konsol, buka halaman IAM.

    Buka IAM

  2. Pilih Sertakan pemberian peran yang disediakan Google.

  3. Temukan baris untuk Akun Layanan Cloud Pub/Sub , lalu klik Edit akun utama.

  4. Klik Tambahkan peran lain , lalu pilih peran Pengguna Bigtable.

Untuk mengetahui informasi selengkapnya, lihat Memberikan peran IAM menggunakan konsol.

Instance

  1. Di Google Cloud konsol, buka halaman Bigtable > Instance.

    Buka Instance

  2. Di halaman Instance, pilih kotak centang di samping nama instance.

  3. Jika panel info tidak terlihat, klik Tampilkan panel info.

  4. Klik Tambahkan akun utama, lalu masukkan ID akun layanan, dalam format berikut:

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com.

  5. Di daftar Tetapkan peran, pilih Pengguna Bigtable.

  6. 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.getAccessToken di akun layanan yang dikelola pengguna.

  • Pengguna yang membuat langganan harus memiliki izin iam.serviceAccounts.actAs di 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.

  • Stempel waktu sel adalah waktu publikasi pesan .

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 bernama data.

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.

  1. 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=1
    

    Ganti ZONE dengan zona tempat cluster berjalan. Contoh: us-central1-b

  2. Buat tabel Bigtable bernama table-1 dengan grup kolom bernama data.

    gcloud bigtable instances tables create table-1 \
      --instance=my-instance \
      --column-families=data
    
  3. Buat topik Pub/Sub bernama topic-1.

    gcloud pubsub topics create topic-1
    
  4. Buat 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-1
    

    Ganti PROJECT_ID dengan ID project Anda. Google Cloud

  5. 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:

  1. Di Google Cloud konsol, buka halaman Instance Bigtable.

    Buka Instance

  2. Klik instance bernama my-cluster-1.

  3. Di menu navigasi, klik Bigtable Studio.

  4. 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