Memublikasikan peristiwa ke tabel BigQuery
Panduan memulai ini menunjukkan cara memublikasikan dan menerima pesan peristiwa dengan membuat pendaftaran dan bus Eventarc Advanced di project Google Cloud Anda.
Bus memungkinkan Anda memusatkan alur pesan melalui sistem, dan bertindak sebagai router. Layanan ini menerima pesan peristiwa dari sumber pesan atau yang dipublikasikan oleh penyedia, dan mengevaluasinya sesuai dengan pendaftaran.
Pendaftaran mengidentifikasi langganan ke bus tertentu, dan menentukan kriteria pencocokan untuk pesan, sehingga pesan tersebut dirutekan dengan tepat ke satu atau beberapa tujuan.
Dalam panduan memulai ini, Anda akan:
Buat tabel BigQuery.
Buat bus Advanced Eventarc.
Buat pendaftaran Lanjutan Eventarc.
Memublikasikan pesan peristiwa ke bus.
Lihat data peristiwa di tabel BigQuery.
Anda dapat menyelesaikan panduan memulai cepat ini menggunakan gcloud CLI dan alat command line bq.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan yang terbatas Google Cloud .
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Eventarc APIs:
gcloud services enable bigquery.googleapis.com
eventarc.googleapis.com eventarcpublishing.googleapis.com -
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Eventarc APIs:
gcloud services enable bigquery.googleapis.com
eventarc.googleapis.com eventarcpublishing.googleapis.com - Perbarui komponen
gcloud
:gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
REGION=REGION
Ganti
REGION
dengan lokasi yang didukung untuk bus—misalnya,us-central1
. -
Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (
roles/owner
). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi).
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
BigQuery Data Editor (
roles/bigquery.dataEditor
) -
Eventarc Developer (
roles/eventarc.developer
) -
Eventarc Message Bus Admin (
roles/eventarc.messageBusAdmin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.
-
BigQuery Data Editor (
- Untuk memberi Eventarc Advanced izin yang diperlukan untuk memperbarui properti tabel BigQuery, minta administrator Anda untuk memberi peran IAM BigQuery Data Editor (
roles/bigquery.dataEditor
) di project Google Cloud Anda kepada akun layanan:- Membuat akun layanan. Untuk tujuan pengujian, Anda akan melampirkan akun layanan ini ke pipeline Lanjutan Eventarc untuk merepresentasikan identitas pipeline.
Gantigcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan Anda. - Berikan peran IAM
roles/bigquery.dataEditor
ke akun layanan:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID." \ --role=roles/bigquery.dataEditor
- Membuat akun layanan. Untuk tujuan pengujian, Anda akan melampirkan akun layanan ini ke pipeline Lanjutan Eventarc untuk merepresentasikan identitas pipeline.
Untuk membuat set data baru, gunakan perintah bq mk dengan flag
--dataset
.bq --location=$REGION mk --dataset DATASET_ID
Ganti
DATASET_ID
dengan nama unik untuk set data BigQuery—misalnya,my_dataset
.Di terminal, buat file baru bernama
my-schema.json
.Salin dan tempel skema berikut ke dalam file baru, lalu simpan file.
[ { "name": "name", "type": "STRING", "mode": "REQUIRED" }, { "name": "age", "type": "INTEGER", "mode": "NULLABLE" } ]
Untuk membuat tabel, gunakan perintah bq mk dengan flag
--table
.bq mk --table PROJECT_ID:DATASET_ID.TABLE_ID my-schema.json
Ganti
TABLE_ID
dengan nama unik untuk tabel BigQuery—misalnya,my-table
.Buat pipeline menggunakan perintah
gcloud eventarc pipelines create
:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID/insertAll',http_endpoint_message_binding_template='{"headers": headers.merge({"content-type":"application/json"}), "body": {"rows":[{"json":message.data}]}}',oauth_token_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --input-payload-format-json= \ --location=$REGION
Ganti
PIPELINE_NAME
dengan ID pipeline atau nama yang sepenuhnya memenuhi syarat—misalnya,my-pipeline
.Perhatikan hal berikut:
- Kunci
http_endpoint_message_binding_template
mengubah peristiwa menjadi format yang diharapkan oleh API. Saat menentukan binding pesan, Anda harus mengonfigurasi format input untuk mengakses payload. - Kunci
oauth_token_authentication_service_account
menentukan email akun layanan. Email ini digunakan untuk membuat token OAuth yang umumnya hanya boleh digunakan saat memanggil Google API yang dihosting di*.googleapis.com
. - Flag
input-payload-format-json
menentukan bahwa format payload input pipeline adalah JSON; pesan apa pun yang tidak cocok dengan format ini akan dianggap sebagai error persisten.
- Kunci
Buat pendaftaran menggunakan perintah
gcloud eventarc enrollments create
:gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
Ganti kode berikut:
ENROLLMENT_NAME
: ID pendaftaran atau nama yang sepenuhnya memenuhi syarat—misalnya,my-enrollment
.MATCH_EXPRESSION
: ekspresi pencocokan untuk pendaftaran ini menggunakan CEL—misalnya:"message.type == 'hello-world-type'"
Hapus resource Eventarc Advanced:
Membuat tabel BigQuery
Buat tabel BigQuery sebagai tujuan peristiwa Anda. Tujuan acara lainnya didukung seperti topik Pub/Sub, Workflows, atau endpoint HTTP lainnya. Untuk mengetahui informasi selengkapnya, lihat Penyedia dan tujuan peristiwa.
Sebelum membuat tabel BigQuery, buat set data yang berfungsi sebagai penampung tingkat teratas untuk tabel, dan skema tabel.
Membuat bus Tingkat lanjut Eventarc
Bus menerima pesan peristiwa dari sumber pesan atau yang dipublikasikan oleh penyedia dan bertindak sebagai router pesan.
Untuk mengetahui informasi selengkapnya, lihat Membuat bus untuk merutekan pesan.
Buat bus Eventarc Advanced di project Anda menggunakan perintah
gcloud eventarc message-buses create
:
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
Ganti BUS_NAME
dengan ID bus atau nama yang sepenuhnya memenuhi syarat—misalnya, my-bus
.
Membuat pendaftaran Lanjutan Eventarc
Pendaftaran menentukan pesan mana yang dirutekan ke tujuan dan juga menentukan pipeline yang digunakan untuk mengonfigurasi tujuan bagi pesan peristiwa. Dalam hal ini, tujuan target adalah endpoint BigQuery API.
Untuk mengetahui informasi selengkapnya, lihat Membuat pendaftaran untuk menerima peristiwa.
Saat menggunakan gcloud CLI, Anda harus membuat pipeline terlebih dahulu, lalu membuat pendaftaran:
Memublikasikan pesan peristiwa ke bus
Untuk memublikasikan pesan langsung ke bus, Anda dapat menggunakan perintah
gcloud eventarc message-buses publish
atau mengirim permintaan ke
Eventarc Publishing REST API.
Untuk mengetahui informasi selengkapnya, lihat
Memublikasikan peristiwa secara langsung.
Pesan harus dalam format CloudEvents, yaitu spesifikasi untuk mendeskripsikan data peristiwa dengan cara yang umum. Elemen data
adalah payload
peristiwa dan pada akhirnya harus cocok dengan skema tabel
BigQuery Anda. JSON yang disusun dengan baik dapat dimasukkan ke dalam kolom ini. Untuk mengetahui informasi selengkapnya tentang atribut konteks CloudEvents, lihat Format peristiwa.
Berikut adalah contoh memublikasikan peristiwa secara langsung ke bus Eventarc Advanced:
Contoh 1
Anda dapat memublikasikan peristiwa ke bus menggunakan gcloud CLI dan
--event-data
serta flag atribut peristiwa lainnya:
gcloud eventarc message-buses publish BUS_NAME \
--event-data='{"name": "my-name", "age": "20"}' \
--event-id=hello-world-id-1234 \
--event-source=hello-world-source \
--event-type=hello-world-type \
--event-attributes="datacontenttype=application/json" \
--location=$REGION
Contoh 2
Anda dapat memublikasikan peristiwa ke bus sebagai pesan JSON menggunakan gcloud CLI
dan flag --json-message
:
gcloud eventarc message-buses publish BUS_NAME \
--location=$REGION \
--json-message='{"id": "hello-world-id-1234", "type":
"hello-world-type", "source":
"hello-world-source", "specversion": "1.0", "data":
{"name": "my-name", "age": "20"}}'
Setelah memublikasikan acara, Anda akan menerima pesan "Acara berhasil dipublikasikan".
Melihat data peristiwa di tabel BigQuery
Setelah memublikasikan peristiwa ke bus Eventarc Advanced, Anda dapat menggunakan perintah bq query untuk mengonfirmasi bahwa baris baru telah ditambahkan ke tabel BigQuery Anda.
bq query \ --use_legacy_sql=false \ 'SELECT * FROM `PROJECT_ID.DATASET_ID.TABLE_ID` LIMIT 10;'
Anda telah berhasil membuat dan mendaftarkan bus Eventarc Advanced, memublikasikan pesan peristiwa ke bus, dan memverifikasi hasil yang diharapkan dengan mengkueri tabel BigQuery.
Pembersihan
Setelah menyelesaikan tugas yang dijelaskan dalam panduan memulai ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat:
Atau, Anda dapat menghapus Google Cloud project untuk menghindari tagihan. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID