Trasferimenti basati su eventi

I trasferimenti basati su eventi in BigQuery Data Transfer Service ti consentono di caricare automaticamente i dati in BigQuery in risposta alle notifiche degli eventi. Puoi utilizzare questo approccio per l'importazione in batch incrementale ed economica quando il tuo workload può tollerare un ritardo di alcuni minuti tra le esecuzioni del trasferimento. Se hai bisogno di dati in tempo reale con una latenza inferiore, utilizza l'API Storage Write per trasmettere i dati direttamente in BigQuery.

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 l'esecuzione del trasferimento successivo, indipendentemente dal fatto che un evento si verifichi 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 del trasferimento basato su eventi.

Configura 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 comporta l'eliminazione dei dati associati nella tabella BigQuery di destinazione.

Prima di iniziare

Prima di configurare un trasferimento basato su eventi di Cloud Storage, devi completare 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 basato su eventi.

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

  4. Autorizzazioni dettagliate necessarie per configurare le notifiche di configurazione del trasferimento basato su eventi:

Configura 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 che vuoi che riceva 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 Applica 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

    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 della nuova sottoscrizione pull Pub/Sub.

    Puoi creare una sottoscrizione pull utilizzando altri metodi.

Configura le autorizzazioni del service agent

  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. e gli è stato concesso il ruolo Agente BigQuery Data Transfer Service (roles/bigquerydatatransfer.serviceAgent).

      Verifica se il account di servizio ha il ruolo di agente di servizio.

    Per saperne di più sugli agenti di servizio, consulta Agenti di servizio.

  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 Google Cloud per concedere il ruolo Pub/Sub Subscriber all'agente BigQuery Data Transfer Service. Il ruolo può essere concesso a livello di argomento, sottoscrizione o progetto.

    Interfaccia a riga di comando gcloud

    Segui le istruzioni riportate in Impostazione di una policy per aggiungere la seguente associazione:

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

    Sostituisci PROJECT_NUMBER con l'ID progetto che ospita le risorse di trasferimento create e fatturate.

    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 Sottoscrittore 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 BigQuery Data Transfer Service disponga del ruolo Sottoscrittore Pub/Sub (pubsub.subscriber).

    Verifica se l'agente di servizio dispone dell'autorizzazione pubsub.subscriber per la sottoscrizione.

Comandi riassuntivi per configurare notifiche e autorizzazioni

I seguenti comandi di 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.  --role=roles/pubsub.subscriber

Sostituisci quanto segue:

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

Crea una configurazione del 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 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 di notifiche.

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