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:
Abilita l'API Pub/Sub per il progetto che riceve le notifiche.
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.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 ruoliroles/storage.admineroles/pubsub.admino 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.Autorizzazioni dettagliate necessarie per configurare le notifiche di configurazione del trasferimento basato su eventi:
Se prevedi di creare argomenti e sottoscrizioni per la pubblicazione di notifiche, devi disporre delle autorizzazioni
pubsub.topics.createepubsub.subscriptions.create.Che tu preveda di utilizzare argomenti e sottoscrizioni nuovi o esistenti, devi disporre delle seguenti autorizzazioni. Se hai già creato argomenti e sottoscrizioni in Pub/Sub, probabilmente disponi già di queste autorizzazioni.
Devi disporre delle seguenti autorizzazioni sul bucket Cloud Storage per cui vuoi configurare le notifiche Pub/Sub.
storage.buckets.getstorage.buckets.update
Il ruolo IAM predefinito
pubsub.adminestorage.admindispone di tutte le autorizzazioni necessarie per configurare un trasferimento basato su eventi di Cloud Storage. Per saperne di più, consulta Controllo dell'accesso di Pub/Sub.
Configura le notifiche Pub/Sub in Cloud Storage
Assicurati di aver soddisfatto i prerequisiti per l'utilizzo di Pub/Sub con Cloud Storage.
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 fileTOPIC_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.
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
Crea una sottoscrizione pull per l'argomento:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
Sostituisci
SUBSCRIPTION_IDcon 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
Trova il nome dell'agente BigQuery Data Transfer Service per il tuo progetto:
Vai alla pagina IAM e amministrazione.
Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google.
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).
Per saperne di più sugli agenti di servizio, consulta Agenti di servizio.
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 Subscriberall'agente BigQuery Data Transfer Service. Il ruolo può essere concesso a livello di argomento, sottoscrizione o progetto.Interfaccia a riga di comando
gcloudSegui 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_NUMBERcon 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.
Verifica che all'agente BigQuery Data Transfer Service sia concesso il ruolo Sottoscrittore Pub/Sub (
pubsub.subscriber).Nella console Google Cloud , vai alla pagina Pub/Sub.
Seleziona la sottoscrizione Pub/Sub che hai utilizzato nel trasferimento basato su eventi.
Se il riquadro informazioni è nascosto, fai clic su Mostra riquadro informazioni nell'angolo in alto a destra.
Nella scheda Autorizzazioni, verifica che l'agente di servizio BigQuery Data Transfer Service disponga del ruolo Sottoscrittore Pub/Sub (
pubsub.subscriber).

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.