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:
Abilita l'API Pub/Sub per il progetto che riceve le notifiche.
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.Se non sei l'amministratore Cloud Storage (
roles/storage.admin) e l'amministratore Pub/Sub (roles/pubsub.admin), chiedi all'amministratore di concederti i ruoliroles/storage.admineroles/pubsub.adminoppure 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.Autorizzazioni dettagliate richieste per configurare le notifiche di configurazione del trasferimento basato sugli eventi:
Se prevedi di creare argomenti e abbonamenti per la pubblicazione di notifiche, devi disporre delle autorizzazioni
pubsub.topics.createepubsub.subscriptions.create.Indipendentemente dal fatto che tu intenda utilizzare argomenti e abbonamenti 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 per il bucket Cloud Storage per il quale vuoi configurare le notifiche Pub/Sub.
storage.buckets.getstorage.buckets.update
I ruoli IAM predefiniti
pubsub.adminestorage.admindispongono di tutte le autorizzazioni necessarie per configurare un trasferimento basato su eventi di Cloud Storage. Per saperne di più, consulta Controllo dell'accesso a Pub/Sub.
Configurare 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 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.
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 del nuovo abbonamento pull Pub/Sub.Puoi creare un abbonamento pull utilizzando altri metodi.
Configura le autorizzazioni dell'agente di servizio
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.iam.gserviceaccount.come gli viene concesso il ruolo Agente BigQuery Data Transfer Service (roles/bigquerydatatransfer.serviceAgent).
Per saperne di più sui service agent, consulta Service agent.
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 Subscriberall'agente BigQuery Data Transfer Service. Google Cloud Il ruolo può essere concesso a livello di argomento, sottoscrizione o progetto.gcloudCLISegui 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_NUMBERcon 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.
Verifica che all'agente BigQuery Data Transfer Service sia concesso il ruolo Abbonato 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 di BigQuery Data Transfer Service disponga del ruolo Abbonato Pub/Sub (
pubsub.subscriber).

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.