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:

  1. Mengaktifkan Pub/Sub API untuk project yang menerima notifikasi.

    Mengaktifkan API

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

  3. Jika Anda bukan Cloud Storage Admin (roles/storage.admin) dan Pub/Sub Admin (roles/pubsub.admin), minta administrator untuk memberi Anda peran roles/storage.admin dan roles/pubsub.admin atau 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.

  4. Izin mendetail yang diperlukan untuk menyiapkan notifikasi konfigurasi transfer berbasis peristiwa:

Mengonfigurasi notifikasi Pub/Sub di Cloud Storage

  1. Pastikan Anda telah memenuhi Prasyarat untuk menggunakan Pub/Sub dengan Cloud Storage.

  2. 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 filenya
    • TOPIC_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.

  3. 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
  4. 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

  1. Temukan nama agen BigQuery Data Transfer Service untuk project Anda:

    1. Buka halaman IAM & Admin.

      Buka IAM & Admin

    2. Centang kotak Include Google-provided role grants.

    3. Agen BigQuery Data Transfer Service tercantum dengan nama service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com yang ditampilkan dan diberi peran BigQuery Data Transfer Service Agent (roles/bigquerydatatransfer.serviceAgent).

      Pastikan akun layanan memiliki peran agen layanan.

    Untuk mengetahui informasi selengkapnya tentang agen layanan, lihat Agen layanan.

  2. 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 Subscriber kepada agen BigQuery Data Transfer Service. Peran ini dapat diberikan di level topik, langganan, atau project.

    gcloud CLI

    Ikuti 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_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 ditagihkan ke project pengguna.

  3. Pastikan agen BigQuery Data Transfer Service diberi peran Pub/Sub Subscriber (pubsub.subscriber).

    1. Di konsol Google Cloud , buka halaman Pub/Sub.

      Buka Pub/Sub

    2. Pilih langganan Pub/Sub yang Anda gunakan dalam transfer berbasis peristiwa.

    3. Jika panel info disembunyikan, klik Tampilkan panel info di pojok kanan atas.

    4. Di tab Permissions, pastikan agen layanan BigQuery Data Transfer Service memiliki peran Pub/Sub Subscriber (pubsub.subscriber).

    Pastikan agen layanan memiliki pubsub.subscriber pada langganan.

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.