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 su eventi se hai bisogno di un'importazione dati incrementale 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 flussi di dati 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 opzioni, valuta se devi dare la priorità all'importazione batch incrementale economicamente vantaggiosa con i trasferimenti basati su eventi o se preferisci la flessibilità dell'API Storage Write.

Origini dati con supporto per i 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 dal fatto che un evento arrivi entro questo periodo di tempo.
  • I trasferimenti basati su eventi non supportano i parametri 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.

Configurare un trasferimento basato su eventi di 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 di Cloud Storage (roles/storage.admin) e l'amministratore di Pub/Sub (roles/pubsub.admin), puoi procedere alla creazione di una configurazione di trasferimento basata su eventi.

  3. Se non sei l'amministratore di Cloud Storage (roles/storage.admin) e l'amministratore di Pub/Sub (roles/pubsub.admin), chiedi al tuo amministratore di concederti i ruoli roles/storage.admin e roles/pubsub.admin oppure chiedi al tuo amministratore di completare la configurazione di Pub/Sub e le autorizzazioni dell'agente di servizio nelle sezioni seguenti e di utilizzare la sottoscrizione Pub/Sub preconfigurata per creare una configurazione di trasferimento basata su eventi.

  4. Autorizzazioni dettagliate richieste per configurare le notifiche di configurazione del trasferimento basato su 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 il quale vuoi attivare gli eventi di notifica dei file
    • TOPIC_NAME: il nome dell'argomento Pub/Sub per il quale 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 di notifica.

  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

    In caso di esito positivo, la risposta sarà 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 della nuova sottoscrizione pull Pub/Sub.

    Puoi creare una sottoscrizione pull utilizzando altri metodi.

Configurare le autorizzazioni dell'agente di servizio

  1. Trova il nome dell'agente di servizio 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 viene visualizzato 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 di servizio BigQuery Data Transfer Service.

    console Cloud

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

    gcloud CLI

    Segui le istruzioni riportate in Impostare 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 le 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 di servizio BigQuery Data Transfer Service sia stato concesso il ruolo Sottoscrittore Pub/Sub (pubsub.subscriber).

    1. Nella Google Cloud console, 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 delle informazioni è nascosto, fai clic su Mostra riquadro delle informazioni nell'angolo in alto a destra.

    4. Nella scheda Autorizzazioni, verifica che l'agente di servizio BigQuery Data Transfer Service agente di servizio abbia il ruolo Sottoscrittore 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 tuo progetto.
  • CONFIG_NAME: un nome per identificare questa configurazione di trasferimento.

Creare una configurazione di trasferimento

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

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