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:

  1. Aktifkan 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 Anda untuk memberi Anda peran roles/storage.admin dan roles/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.

  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 gunakan untuk memicu peristiwa notifikasi file
    • TOPIC_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.

  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 ditampilkan dan diberi peran BigQuery Data Transfer Service Agent.

      Pastikan akun layanan memiliki peran agen layanan.

    Untuk informasi selengkapnya tentang agen layanan, lihat Agen layanan.

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

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

  3. Pastikan agen BigQuery Data Transfer Service diberi peran pubsub.subscriber:

    1. Di Google Cloud console, 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 Izin, pastikan agen layanan BigQuery Data Transfer Service memiliki peran pubsub.subscriber

    Pastikan agen layanan memiliki pubsub.subscriber pada langganan.

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.