Transfer Berbasis Peristiwa
Transfer berbasis peristiwa di BigQuery Data Transfer Service memungkinkan Anda memuat data secara otomatis ke BigQuery sebagai respons terhadap notifikasi peristiwa. Anda dapat menggunakan pendekatan ini untuk penyerapan batch inkremental yang hemat biaya jika workload Anda dapat menoleransi penundaan beberapa menit di antara operasi transfer. Jika Anda memerlukan ketersediaan data real-time dengan latensi yang lebih rendah, gunakan Storage Write API untuk melakukan streaming data langsung ke BigQuery.
Sumber data dengan dukungan transfer berbasis peristiwa
BigQuery Data Transfer Service dapat menggunakan transfer berbasis peristiwa dengan sumber data berikut:
Batasan
Transfer berbasis peristiwa ke BigQuery tunduk pada batasan berikut:
- Setelah transfer berbasis peristiwa dipicu, BigQuery Data Transfer Service akan menunggu hingga 10 menit sebelum memicu operasi transfer berikutnya, terlepas dari apakah peristiwa tiba dalam waktu tersebut atau tidak.
- Transfer berbasis peristiwa tidak mendukung parameter runtime untuk URI sumber atau jalur data.
- Langganan Pub/Sub yang sama tidak dapat digunakan kembali oleh beberapa konfigurasi transfer berbasis peristiwa.
Menyiapkan transfer berbasis peristiwa Cloud Storage
Transfer berbasis peristiwa dari Cloud Storage menggunakan notifikasi Pub/Sub untuk mengetahui kapan objek di bucket sumber telah diubah atau ditambahkan. Saat menggunakan mode transfer inkremental, menghapus objek di bucket sumber tidak akan menghapus data terkait di tabel BigQuery tujuan.
Sebelum memulai
Sebelum mengonfigurasi transfer berbasis peristiwa Cloud Storage, Anda harus melakukan langkah-langkah berikut:
Mengaktifkan Pub/Sub API untuk project yang menerima notifikasi.
Jika Anda adalah Cloud Storage Admin (
roles/storage.admin) dan Pub/Sub Admin (roles/pubsub.admin), Anda dapat melanjutkan ke Membuat konfigurasi transfer berbasis peristiwa.Jika Anda bukan Cloud Storage Admin (
roles/storage.admin) dan Pub/Sub Admin (roles/pubsub.admin), minta administrator untuk memberi Anda peranroles/storage.admindanroles/pubsub.adminatau minta administrator untuk menyelesaikan mengonfigurasi Pub/Sub dan mengonfigurasi izin Agen Layanan di bagian berikut dan menggunakan langganan Pub/Sub yang telah dikonfigurasi sebelumnya untuk membuat konfigurasi transfer berbasis peristiwa.Izin mendetail yang diperlukan untuk menyiapkan notifikasi konfigurasi transfer berbasis peristiwa:
Jika berencana membuat topik dan langganan untuk memublikasikan notifikasi, Anda harus memiliki izin
pubsub.topics.createdanpubsub.subscriptions.create.Baik menggunakan topik dan langganan baru maupun yang sudah ada, Anda harus memiliki izin berikut. Jika Anda telah membuat topik dan langganan di Pub/Sub, kemungkinan Anda sudah memiliki izin ini.
Anda harus memiliki izin berikut pada bucket Cloud Storage yang ingin Anda konfigurasi notifikasi Pub/Sub-nya.
storage.buckets.getstorage.buckets.update
Peran IAM yang telah ditetapkan
pubsub.admindanstorage.adminmemiliki semua izin yang diperlukan untuk mengonfigurasi transfer berbasis peristiwa Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses Pub/Sub.
Mengonfigurasi notifikasi Pub/Sub di Cloud Storage
Pastikan Anda telah memenuhi Prasyarat untuk menggunakan Pub/Sub dengan Cloud Storage.
Terapkan konfigurasi notifikasi ke bucket Cloud Storage Anda:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE
Ganti kode berikut:
BUCKET_NAME: Nama bucket Cloud Storage yang ingin Anda picu peristiwa notifikasi filenyaTOPIC_NAME: Nama topik Pub/Sub yang Anda inginkan untuk menerima peristiwa notifikasi file
Anda juga dapat menambahkan konfigurasi notifikasi menggunakan metode lain selain gcloud CLI. Untuk mengetahui informasi selengkapnya, lihat Menerapkan konfigurasi notifikasi.
Pastikan notifikasi Pub/Sub dikonfigurasi dengan benar untuk Cloud Storage. Gunakan perintah
gcloud storage buckets notifications list:gcloud storage buckets notifications list gs://BUCKET_NAME
Jika berhasil, responsnya akan terlihat mirip dengan berikut ini:
etag: '132' id: '132' kind: storage#notification payload_format: JSON_API_V1 selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132 topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
Buat langganan pull untuk topik:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
Ganti
SUBSCRIPTION_IDdengan nama atau ID langganan pull Pub/Sub baru Anda.Anda dapat membuat langganan pull menggunakan metode lain.
Mengonfigurasi izin Agen Layanan
Temukan nama agen BigQuery Data Transfer Service untuk project Anda:
Buka halaman IAM & Admin.
Centang kotak Include Google-provided role grants.
Agen BigQuery Data Transfer Service tercantum dengan nama
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.comyang ditampilkan dan diberi peran BigQuery Data Transfer Service Agent (roles/bigquerydatatransfer.serviceAgent).
Untuk mengetahui informasi selengkapnya tentang agen layanan, lihat Agen layanan.
Berikan peran Pub/Sub Subscriber (
pubsub.subscriber) kepada agen BigQuery Data Transfer Service.Konsol Cloud
Ikuti petunjuk dalam Mengontrol akses melalui konsol Google Cloud untuk memberikan peran
Pub/Sub Subscriberkepada agen BigQuery Data Transfer Service. Peran ini dapat diberikan di level topik, langganan, atau project.gcloudCLIIkuti petunjuk di Menetapkan kebijakan untuk menambahkan binding berikut:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com" }
Ganti
PROJECT_NUMBERdengan project ID yang menghosting resource transfer yang dibuat dan ditagih.Atribusi penggunaan kuota: saat agen BigQuery Data Transfer Service mengakses langganan Pub/Sub, penggunaan kuota akan ditagihkan ke project pengguna.
Pastikan agen BigQuery Data Transfer Service diberi peran Pub/Sub Subscriber (
pubsub.subscriber).Di konsol Google Cloud , buka halaman Pub/Sub.
Pilih langganan Pub/Sub yang Anda gunakan dalam transfer berbasis peristiwa.
Jika panel info disembunyikan, klik Tampilkan panel info di pojok kanan atas.
Di tab Permissions, pastikan agen layanan BigQuery Data Transfer Service memiliki peran Pub/Sub Subscriber (
pubsub.subscriber).

Ringkasan perintah untuk mengonfigurasi notifikasi dan izin
Perintah Google Cloud CLI berikut mencakup semua perintah yang diperlukan untuk menyiapkan notifikasi dan izin seperti yang dijelaskan di bagian sebelumnya.
gcloud
PROJECT_ID=project_id CONFIG_NAME=config_name RESOURCE_NAME="bqdts-event-driven-${CONFIG_NAME}" # Create a Pub/Sub topic. gcloud pubsub topics create "${RESOURCE_NAME}" --project="${PROJECT_ID}" # Create a Pub/Sub subscription. gcloud pubsub subscriptions create "${RESOURCE_NAME}" --project="${PROJECT_ID}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" # Create a Pub/Sub notification. gcloud storage buckets notifications create gs://"${RESOURCE_NAME}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" --event-types=OBJECT_FINALIZE # Grant roles/pubsub.subscriber permission to the DTS service agent. PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format='value(projectNumber)') gcloud pubsub subscriptions add-iam-policy-binding "${RESOURCE_NAME}" --project="${PROJECT_ID}" --member=serviceAccount:service-"${PROJECT_NUMBER}"@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role=roles/pubsub.subscriber
Ganti kode berikut:
PROJECT_ID: ID project Anda.CONFIG_NAME: Nama untuk mengidentifikasi konfigurasi transfer ini.
Membuat konfigurasi transfer
Anda dapat membuat transfer Cloud Storage berbasis peristiwa dengan membuat transfer Cloud Storage dan memilih Event-driven sebagai Schedule Type. Sebagai Cloud Storage Admin (roles/storage.admin) dan Pub/Sub Admin (roles/pubsub.admin), Anda memiliki izin yang memadai bagi BigQuery Data Transfer Service untuk mengonfigurasi Cloud Storage secara otomatis agar mengirimkan notifikasi.
Jika Anda bukan Cloud Storage Admin (roles/storage.admin) dan Pub/Sub Admin (roles/pubsub.admin), Anda harus meminta administrator untuk memberi Anda peran tersebut atau meminta administrator untuk menyelesaikan notifikasi Pub/Sub di konfigurasi Cloud Storage dan konfigurasi izin Agen Layanan yang diperlukan sebelum Anda dapat membuat transfer berbasis peristiwa.