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 incrementale dei dati che ottimizzi l'efficienza dei costi.

Quando configuri i trasferimenti basati su eventi, può verificarsi un ritardo di alcuni minuti tra ogni trasferimento di dati. Se hai bisogno di una disponibilità immediata dei dati, ti consigliamo di utilizzare l'API Storage Write che trasmette i 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, valuta se devi dare la priorità all'importazione batch incrementale conveniente con 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 l'esecuzione del trasferimento successivo, indipendentemente dal fatto che venga ricevuto 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.

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 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 eseguire i seguenti passaggi:

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

    Attiva l'API

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

  3. Se non disponi dei ruoli Amministratore di Cloud Storage (roles/storage.admin) e Amministratore di Pub/Sub (roles/pubsub.admin), chiedi all'amministratore di concederti i ruoli roles/storage.admin e roles/pubsub.admin oppure di completare la configurazione di Pub/Sub e la configurazione delle autorizzazioni dell'agente di servizio nelle sezioni seguenti e di utilizzare 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 su eventi:

Configurare le notifiche Pub/Sub in Cloud Storage

  1. Assicurati di soddisfare 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 per cui vuoi ricevere gli eventi di notifica dei file

    Puoi anche aggiungere una configurazione di notifica utilizzando altri metodi oltre all'interfaccia alla gcloud CLI. Per ulteriori informazioni, 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

    Se l'operazione ha 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 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 viene visualizzato e gli viene concesso il ruolo Agente BigQuery Data Transfer Service.

      Verifica se l&#39;account di servizio ha il ruolo di agente di servizio.

    Per ulteriori informazioni sugli agenti di servizio, consulta Agenti di servizio.

  2. Concedi il ruolo pubsub.subscriber all'agente 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 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 un criterio per aggiungere la seguente associazione:

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

    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 all'abbonamento Pub/Sub, l'utilizzo della quota viene addebitato al progetto utente.

  3. Verifica che all'agente BigQuery Data Transfer Service sia stato concesso il ruolo pubsub.subscriber:

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

      Vai a Pub/Sub.

    2. Seleziona la sottoscrizione Pub/Sub utilizzata nel trasferimento basato su eventi.

    3. Se il riquadro informazioni è nascosto, fai clic su Mostra riquadro informazioni nell'angolo superiore destro.

    4. Nella scheda Autorizzazioni, verifica che l'agente di servizio di BigQuery Data Transfer Service abbia il ruolo pubsub.subscriber

    Verifica se l&#39;agente di servizio ha pubsub.subscriber nell&#39;abbonamento.

Comandi riepilogati per configurare notifiche e autorizzazioni

I seguenti comandi Google Cloud CLI includono tutti i comandi necessari per configurare notifiche e 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 di Cloud Storage basato su eventi creando un trasferimento di Cloud Storage e selezionando In base a eventi come Tipo di pianificazione. In qualità di amministratore di Cloud Storage (roles/storage.admin) e di 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 di Cloud Storage (roles/storage.admin) e di Pub/Sub (roles/pubsub.admin), devi chiedere all'amministratore di concederti i ruoli o di completare le notifiche Pub/Sub nelle configurazioni di Cloud Storage e le configurazioni delle autorizzazioni dell'agente di servizio necessarie prima di poter creare il trasferimento basato su eventi.