Transfer Berbasis 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 berbasis peristiwa, mungkin ada penundaan 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 pembaruan real-time untuk kasus penggunaan yang paling menuntut.
Saat memilih 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 berbasis peristiwa ke BigQuery memiliki batasan berikut:
- Setelah transfer berbasis peristiwa dipicu, BigQuery Data Transfer Service akan menunggu hingga 10 menit sebelum memicu transfer berikutnya, terlepas dari apakah peristiwa tiba dalam waktu tersebut.
- 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:
Aktifkan 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 Anda untuk memberi Anda peranroles/storage.admin
danroles/pubsub.admin
atau minta administrator Anda untuk menyelesaikan mengonfigurasi Pub/Sub dan mengonfigurasi izin Agen Layanan di bagian berikut dan gunakan 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.create
danpubsub.subscriptions.create
.Baik menggunakan topik dan langganan baru maupun yang sudah ada, Anda harus memiliki izin berikut. Jika telah membuat topik dan langganan di Pub/Sub, Anda mungkin sudah memiliki izin ini.
Anda harus memiliki izin berikut di bucket Cloud Storage yang ingin Anda konfigurasikan notifikasi Pub/Sub-nya.
storage.buckets.get
storage.buckets.update
Peran IAM bawaan
pubsub.admin
danstorage.admin
memiliki 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 gunakan untuk memicu peristiwa notifikasi fileTOPIC_NAME
: Nama topik Pub/Sub yang ingin Anda terima peristiwa notifikasi filenya
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_ID
dengan 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.com
ditampilkan dan diberi peran BigQuery Data Transfer Service Agent.
Untuk informasi selengkapnya tentang agen layanan, lihat Agen layanan.
Berikan peran
pubsub.subscriber
kepada agen BigQuery Data Transfer Service.Cloud Console
Ikuti petunjuk di bagian Mengontrol akses melalui Google Cloud konsol untuk memberikan peran
Pub/Sub Subscriber
kepada agen BigQuery Data Transfer Service. Peran ini dapat diberikan di tingkat topik, langganan, atau project.gcloud
CLIIkuti petunjuk di bagian Menetapkan kebijakan untuk menambahkan binding berikut:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com" }
Ganti
PROJECT_NUMBER
dengan 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 ditagih ke project pengguna.
Pastikan agen BigQuery Data Transfer Service diberi peran
pubsub.subscriber
:Di Google Cloud console, 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 Izin, pastikan agen layanan BigQuery Data Transfer Service memiliki peran
pubsub.subscriber
Perintah ringkasan 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 Berbasis 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 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 yang diperlukan dalam konfigurasi Cloud Storage dan konfigurasi izin Agen Layanan sebelum Anda dapat membuat transfer berbasis peristiwa.