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 family 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 tentang topik

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Langganan lintas project

Jika 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 resource. Google Cloud 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 kepada agen layanan Pub/Sub, lakukan langkah-langkah berikut. Anda dapat memberikan peran di project atau di instance Bigtable yang berisi tabel.

Project

  1. Di konsol Google Cloud , 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 principal.

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

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

Instance

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

    Buka Instances

  2. Di halaman Instances, centang kotak di samping nama instance.

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

  4. Klik Add principal, lalu masukkan ID akun layanan, dalam format berikut:

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

  5. Dalam daftar Assign roles, pilih Bigtable User.

  6. Klik Simpan. Akun utama diberi peran pada resource.

Menggunakan akun layanan khusus

Jika Anda memberikan peran Pengguna Bigtable kepada agen layanan Pub/Sub, maka setiap pengguna dengan izin untuk membuat langganan di project Anda dapat menulis ke tabel Bigtable. Jika Anda ingin memberikan izin yang lebih terperinci, konfigurasikan 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 Bigtable User.

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

Operasi tulis 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 penentu 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 kelompok kolom dengan nama ini.

Untuk setiap pesan, langganan menulis baris baru dengan kolom berikut di bawah 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 tanda 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 operasi penulisan Bigtable. Profil aplikasi harus menggunakan perutean cluster tunggal. Jika tanda 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 kustom.

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 mengajukan kueri ke 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 Google Cloud Anda.

  5. Memublikasikan pesan ke topik.

    gcloud pubsub topics publish topic-1 --message='{"name":"Alice"}'
    

    Jika pesan berhasil dipublikasikan, outputnya 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 konsol Google Cloud , buka halaman Instances Bigtable.

    Buka Instances

  2. Klik instance bernama my-cluster-1.

  3. Di menu navigasi, klik Bigtable Studio.

  4. Di query editor, 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, data adalah string JSON, sehingga kueri dapat menggunakan fungsi JSON GoogleSQL 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