Trasferimenti basati su eventi

Puoi utilizzare BigQuery Data Transfer Service per creare trasferimenti basati su eventi che caricano automaticamente i dati in base alle notifiche degli eventi. Ti consigliamo di utilizzare i trasferimenti basati sugli eventi se hai bisogno di un'importazione incrementale dei dati che ottimizzi l'efficienza dei costi.

Quando configuri i trasferimenti basati su eventi, può verificarsi un ritardo di alcuni minuti tra un trasferimento di dati e l'altro. Se hai bisogno di una disponibilità immediata dei dati, ti consigliamo di utilizzare l'API Storage Write, che trasmette i dati in streaming direttamente in BigQuery con la latenza più bassa possibile. L'API Storage Write fornisce aggiornamenti in tempo reale per i casi d'uso più impegnativi.

Quando scegli tra le due, valuta se devi dare la priorità all'importazione incrementale conveniente in batch con trasferimenti basati su eventi o se preferisci la flessibilità dell'API Storage Write.

Origini dati con supporto dei trasferimenti basati su eventi

BigQuery Data Transfer Service può utilizzare i trasferimenti basati su eventi con le seguenti origini dati:

Limitazioni

I trasferimenti basati su eventi a BigQuery sono soggetti alle seguenti limitazioni:

  • Dopo l'attivazione di un trasferimento basato su eventi, BigQuery Data Transfer Service attende fino a 10 minuti prima di attivare la successiva esecuzione del trasferimento, indipendentemente dall'arrivo di un evento entro questo periodo di tempo.
  • I trasferimenti basati su eventi non supportano i parametri di runtime per l'URI di origine o il percorso dei dati.
  • La stessa sottoscrizione Pub/Sub non può essere riutilizzata da più configurazioni di trasferimento basate su eventi.

Configura un trasferimento basato su eventi Cloud Storage

I trasferimenti basati su eventi da Cloud Storage utilizzano le notifiche Pub/Sub per sapere quando gli oggetti nel bucket di origine sono stati modificati o aggiunti. Quando utilizzi la modalità di trasferimento incrementale, l'eliminazione di un oggetto nel bucket di origine non elimina i dati associati nella tabella BigQuery di destinazione.

Prima di iniziare

Prima di configurare un trasferimento basato su eventi di Cloud Storage, devi eseguire i seguenti passaggi:

  1. Abilita l'API Pub/Sub per il progetto che riceve le notifiche.

    Abilita l'API

  2. Se sei l'amministratore Cloud Storage (roles/storage.admin) e l'amministratore Pub/Sub (roles/pubsub.admin), puoi procedere alla creazione di una configurazione di trasferimento basata sugli eventi.

  3. Se non sei l'amministratore Cloud Storage (roles/storage.admin) e l'amministratore Pub/Sub (roles/pubsub.admin), chiedi all'amministratore di concederti i ruoli roles/storage.admin e roles/pubsub.admin oppure di completare le sezioni Configura Pub/Sub e Configura le autorizzazioni del service agent di seguito e utilizza l'abbonamento Pub/Sub preconfigurato per creare una configurazione di trasferimento basata sugli eventi.

  4. Autorizzazioni dettagliate richieste per configurare le notifiche di configurazione del trasferimento basato sugli eventi:

Configurare le notifiche Pub/Sub in Cloud Storage

  1. Assicurati di aver soddisfatto i prerequisiti per l'utilizzo di Pub/Sub con Cloud Storage.

  2. Applica una configurazione di notifica al bucket Cloud Storage:

    gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE

    Sostituisci quanto segue:

    • BUCKET_NAME: il nome del bucket Cloud Storage per cui vuoi attivare gli eventi di notifica dei file
    • TOPIC_NAME: il nome dell'argomento Pub/Sub da cui vuoi ricevere gli eventi di notifica dei file

    Puoi anche aggiungere una configurazione di notifica utilizzando altri metodi oltre a gcloud CLI. Per saperne di più, consulta Applicare una configurazione delle notifiche.

  3. Verifica che la notifica Pub/Sub sia configurata correttamente per Cloud Storage. Utilizza il comando gcloud storage buckets notifications list:

    gcloud storage buckets notifications list gs://BUCKET_NAME

    Se l'operazione ha esito positivo, la risposta è simile alla seguente:

    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. Crea una sottoscrizione pull per l'argomento:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME

    Sostituisci SUBSCRIPTION_ID con il nome o l'ID del nuovo abbonamento pull Pub/Sub.

    Puoi creare un abbonamento pull utilizzando altri metodi.

Configura le autorizzazioni dell'agente di servizio

  1. Trova il nome dell'agente BigQuery Data Transfer Service per il tuo progetto:

    1. Vai alla pagina IAM e amministrazione.

      Vai a IAM e amministrazione

    2. Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.

    3. L'agente BigQuery Data Transfer Service è elencato con il nome service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com e gli viene concesso il ruolo Agente BigQuery Data Transfer Service (roles/bigquerydatatransfer.serviceAgent).

      Verifica se il account di servizio dispone del ruolo di service agent.

    Per saperne di più sui service agent, consulta Service agent.

  2. Concedi il ruolo Sottoscrittore Pub/Sub (pubsub.subscriber) all'agente BigQuery Data Transfer Service.

    console Cloud

    Segui le istruzioni riportate in Controllo dell'accesso tramite la console per concedere il ruolo Pub/Sub Subscriber all'agente BigQuery Data Transfer Service. Google Cloud Il ruolo può essere concesso a livello di argomento, sottoscrizione o progetto.

    gcloud CLI

    Segui le istruzioni riportate in Impostazione di una policy per aggiungere il seguente binding:

    {
      "role": "roles/pubsub.subscriber",
      "members": [
        "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com"
    }

    Sostituisci PROJECT_NUMBER con l'ID progetto in cui vengono creati e fatturati i costi delle risorse di trasferimento.

    Attribuzione dell'utilizzo della quota:quando l'agente BigQuery Data Transfer Service accede alla sottoscrizione Pub/Sub, l'utilizzo della quota viene addebitato al progetto utente.

  3. Verifica che all'agente BigQuery Data Transfer Service sia concesso il ruolo Abbonato Pub/Sub (pubsub.subscriber).

    1. Nella console Google Cloud , vai alla pagina Pub/Sub.

      Vai a Pub/Sub.

    2. Seleziona la sottoscrizione Pub/Sub che hai utilizzato nel trasferimento basato su eventi.

    3. Se il riquadro informazioni è nascosto, fai clic su Mostra riquadro informazioni nell'angolo in alto a destra.

    4. Nella scheda Autorizzazioni, verifica che l'agente di servizio di BigQuery Data Transfer Service disponga del ruolo Abbonato Pub/Sub (pubsub.subscriber).

    Verifica se l&#39;agente di servizio dispone di pubsub.subscriber per l&#39;abbonamento.

Comandi riepilogativi per configurare notifiche e autorizzazioni

I seguenti comandi Google Cloud CLI includono tutti i comandi necessari per configurare le notifiche e le autorizzazioni come descritto nelle sezioni precedenti.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto.
  • CONFIG_NAME: un nome per identificare questa configurazione di trasferimento.

Creare una configurazione di trasferimento

Puoi creare un trasferimento Cloud Storage basato su eventi creando un trasferimento Cloud Storage e selezionando Basato su eventi come Tipo di pianificazione. In qualità di amministratore Cloud Storage (roles/storage.admin) e amministratore Pub/Sub (roles/pubsub.admin), disponi delle autorizzazioni sufficienti per consentire a BigQuery Data Transfer Service di configurare automaticamente Cloud Storage per l'invio di notifiche.

Se non sei l'amministratore Cloud Storage (roles/storage.admin) e l'amministratore Pub/Sub (roles/pubsub.admin), devi chiedere all'amministratore di concederti i ruoli o di completare le configurazioni delle notifiche Pub/Sub in Cloud Storage e le configurazioni delle autorizzazioni dell'agente di servizio richieste prima di poter creare il trasferimento basato su eventi.