Transfer Berdasarkan Peristiwa
Anda dapat menggunakan BigQuery Data Transfer Service untuk membuat transfer berbasis peristiwa yang otomatis memuat data berdasarkan notifikasi peristiwa. Sebaiknya gunakan transfer berbasis peristiwa jika Anda memerlukan penyerapan data inkremental yang mengoptimalkan efisiensi biaya.
Saat Anda menyiapkan transfer yang didorong peristiwa, mungkin ada jeda beberapa menit di antara setiap transfer data. Jika Anda memerlukan ketersediaan data langsung, sebaiknya gunakan Storage Write API yang melakukan streaming data langsung ke BigQuery dengan latensi serendah mungkin. Storage Write API memberikan update real-time untuk kasus penggunaan yang paling menuntut.
Saat memilih di antara keduanya, pertimbangkan apakah Anda perlu memprioritaskan penyerapan batch inkremental yang hemat biaya dengan transfer berbasis peristiwa, atau apakah Anda lebih memilih fleksibilitas Storage Write API.
Sumber data dengan dukungan transfer berbasis peristiwa
BigQuery Data Transfer Service dapat menggunakan transfer berbasis peristiwa dengan sumber data berikut:
Batasan
Transfer yang diaktifkan oleh peristiwa ke BigQuery memiliki 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 yang didorong 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 yang didorong 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 yang diaktifkan oleh peristiwa Cloud Storage, Anda harus melakukan langkah-langkah berikut:
Aktifkan Pub/Sub API untuk project yang menerima notifikasi.
Jika Anda adalah Admin Cloud Storage (
roles/storage.admin) dan Admin Pub/Sub (roles/pubsub.admin), Anda dapat melanjutkan ke Membuat konfigurasi transfer berbasis peristiwa.Jika Anda bukan Admin Cloud Storage (
roles/storage.admin) dan Admin Pub/Sub (roles/pubsub.admin), minta administrator Anda untuk memberi Anda peranroles/storage.admindanroles/pubsub.adminatau minta administrator Anda untuk menyelesaikan konfigurasi Pub/Sub dan konfigurasi 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 yang didorong 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 bawaan
pubsub.admindanstorage.adminmemiliki semua izin yang diperlukan untuk mengonfigurasi transfer yang didorong 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 ingin Anda gunakan 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 yang tercantum dengan nama
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.comditampilkan 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.Cloud Console
Ikuti petunjuk di Mengontrol akses melalui konsol Google Cloud untuk memberikan peran
Pub/Sub Subscriberkepada agen BigQuery Data Transfer Service. Peran dapat diberikan di tingkat 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 dibuat dan ditagih.Atribusi penggunaan kuota: saat agen BigQuery Data Transfer Service mengakses langganan Pub/Sub, penggunaan kuota akan ditagih 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 bahwa agen layanan BigQuery Data Transfer Service memiliki peran Pub/Sub Subscriber (
pubsub.subscriber).

Perintah yang diringkas 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 yang didorong peristiwa dengan membuat transfer Cloud Storage dan memilih Didorong peristiwa sebagai Jenis Jadwal. Sebagai Admin Cloud Storage (roles/storage.admin) dan Admin Pub/Sub (roles/pubsub.admin), Anda memiliki izin yang memadai agar BigQuery Data Transfer Service dapat mengonfigurasi Cloud Storage secara otomatis untuk mengirim notifikasi.
Jika Anda bukan Admin Cloud Storage (roles/storage.admin) dan Admin Pub/Sub (roles/pubsub.admin), Anda harus meminta administrator untuk memberi Anda peran atau meminta administrator untuk menyelesaikan konfigurasi notifikasi Pub/Sub di Cloud Storage dan konfigurasi izin Agen Layanan yang diperlukan sebelum Anda dapat membuat transfer yang didorong peristiwa.