Ereignisgesteuerte Übertragungen

Mit dem BigQuery Data Transfer Service können Sie ereignisgesteuerte Übertragungen erstellen, bei denen Daten automatisch auf Grundlage von Ereignisbenachrichtigungen geladen werden. Wir empfehlen die Verwendung ereignisgesteuerter Übertragungen, wenn Sie eine inkrementelle Datenaufnahme benötigen, die die Kosteneffizienz optimiert.

Wenn Sie ereignisgesteuerte Übertragungen einrichten, kann es zwischen den einzelnen Datenübertragungen zu einer Verzögerung von einigen Minuten kommen. Wenn Sie sofortigen Zugriff auf die Daten benötigen, empfehlen wir die Verwendung der Storage Write API, mit der Daten mit der geringstmöglichen Latenz direkt in BigQuery gestreamt werden. Die Storage Write API bietet Echtzeitaktualisierungen für die anspruchsvollsten Anwendungsfälle.

Bei der Auswahl zwischen den beiden Optionen sollten Sie überlegen, ob Sie die kostengünstige inkrementelle Batcherfassung mit ereignisgesteuerten Übertragungen priorisieren möchten oder die Flexibilität der Storage Write API bevorzugen.

Datenquellen mit Unterstützung für ereignisgesteuerte Übertragungen

Der BigQuery Data Transfer Service kann ereignisgesteuerte Übertragungen mit den folgenden Datenquellen verwenden:

Beschränkungen

Für ereignisgesteuerte Übertragungen nach BigQuery gelten die folgenden Beschränkungen:

  • Nachdem eine ereignisgesteuerte Übertragung ausgelöst wurde, wartet der BigQuery Data Transfer Service bis zu 10 Minuten, bevor er die nächste Übertragungsausführung auslöst. Das gilt unabhängig davon, ob innerhalb dieser Zeit ein Ereignis eintrifft.
  • Ereignisgesteuerte Übertragungen unterstützen keine Laufzeitparameter für den Quell-URI oder den Datenpfad.
  • Dasselbe Pub/Sub-Abo kann nicht von mehreren Konfigurationen für ereignisgesteuerte Übertragungen verwendet werden.

Ereignisgesteuerte Übertragung von Cloud Storage einrichten

Bei ereignisgesteuerten Übertragungen aus Cloud Storage werden Pub/Sub-Benachrichtigungen verwendet, um zu erfahren, wann Objekte im Quell-Bucket geändert oder hinzugefügt wurden. Wenn Sie den inkrementellen Übertragungs-Modus verwenden, werden beim Löschen eines Objekts im Quell-Bucket die zugehörigen Daten in der Ziel-BigQuery-Tabelle nicht gelöscht.

Hinweis

Bevor Sie eine ereignisgesteuerte Übertragung von Cloud Storage konfigurieren, müssen Sie die folgenden Schritte ausführen:

  1. Aktivieren Sie die Pub/Sub API für das Projekt, das Benachrichtigungen erhält.

    API aktivieren

  2. Wenn Sie der Cloud Storage-Administrator (roles/storage.admin) und der Pub/Sub-Administrator (roles/pubsub.admin) sind, können Sie mit dem Erstellen einer Konfiguration für ereignisgesteuerte Übertragungen fortfahren.

  3. Wenn Sie nicht der Cloud Storage-Administrator (roles/storage.admin) und der Pub/Sub-Administrator (roles/pubsub.admin) sind, bitten Sie Ihren Administrator, Ihnen die Rollen roles/storage.admin und roles/pubsub.admin zuzuweisen. Alternativ kann Ihr Administrator die Konfiguration von Pub/Sub (configure Pub/Sub) und die Berechtigungen für den Dienst-Agent (configure Service Agent permissions) in den folgenden Abschnitten konfigurieren und das vorkonfigurierte Pub/Sub-Abo verwenden, um eine Konfiguration für ereignisgesteuerte Übertragungen zu erstellen (create an event-driven transfer configuration).

  4. Detaillierte Berechtigungen, die zum Einrichten von Benachrichtigungen für die Konfiguration ereignisgesteuerter Übertragungen erforderlich sind:

    • Wenn Sie Themen und Abos zum Veröffentlichen von Benachrichtigungen erstellen möchten, benötigen Sie die pubsub.topics.create und pubsub.subscriptions.create Berechtigungen.

    • Wenn Sie neue oder vorhandene Themen und Abos verwenden möchten, benötigen Sie die folgenden Berechtigungen. Wenn Sie bereits Themen und Abos in Pub/Sub erstellt haben, haben Sie diese Berechtigungen wahrscheinlich schon.

    • Sie benötigen die folgenden Berechtigungen für den Cloud Storage-Bucket, für den Sie Pub/Sub-Benachrichtigungen konfigurieren möchten.

      • storage.buckets.get
      • storage.buckets.update
    • Die vordefinierten IAM-Rollen pubsub.admin und storage.admin enthalten alle erforderlichen Berechtigungen zum Konfigurieren einer ereignisgesteuerten Übertragung von Cloud Storage. Weitere Informationen finden Sie unter Pub/Sub-Zugriffssteuerung.

Pub/Sub-Benachrichtigungen in Cloud Storage konfigurieren

  1. Prüfen Sie, ob Sie die Voraussetzungen für die Verwendung von Pub/Sub mit Cloud Storage erfüllen.

  2. Wenden Sie eine Benachrichtigungskonfiguration auf Ihren Cloud Storage-Bucket an:

    gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE

    Ersetzen Sie Folgendes:

    • BUCKET_NAME: Der Name des Cloud Storage-Bucket, für den Sie Benachrichtigungsereignisse für Dateien auslösen möchten.
    • TOPIC_NAME: Der Name des Pub/Sub-Themas, für das Sie Benachrichtigungsereignisse für Dateien erhalten möchten.

    Sie können auch mit anderen Methoden als der gcloud CLI eine Benachrichtigungskonfiguration hinzufügen. Weitere Informationen finden Sie unter Benachrichtigungskonfiguration anwenden.

  3. Prüfen Sie, ob die Pub/Sub-Benachrichtigung für Cloud Storage richtig konfiguriert ist. Verwenden Sie den Befehl gcloud storage buckets notifications list:

    gcloud storage buckets notifications list gs://BUCKET_NAME

    Wenn der Vorgang erfolgreich war, sieht die Antwort in etwa so aus:

    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. Erstellen Sie ein Pull-Abo für das Thema:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME

    Ersetzen Sie SUBSCRIPTION_ID durch den Namen oder die ID Ihres neuen Pub/Sub-Pull-Abos.

    Sie können ein Pull-Abo auch mit anderen Methoden erstellen.

Berechtigungen für Dienst-Agent konfigurieren

  1. Suchen Sie den Namen des Dienst-Agents für BigQuery Data Transfer Service für Ihr Projekt:

    1. Rufen Sie die Seite IAM &Verwaltung auf.

      IAM &Verwaltung aufrufen

    2. Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.

    3. Der Dienst-Agent für BigQuery Data Transfer Service wird mit dem Namen service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com angezeigt und hat die Rolle Dienst-Agent für BigQuery Data Transfer Service (roles/bigquerydatatransfer.serviceAgent) zugewiesen.

      Prüfen, ob das Dienstkonto die Dienst-Agent-Rolle hat.

    Weitere Informationen zu Dienst-Agents finden Sie unter Dienst-Agents.

  2. Weisen Sie dem Dienst-Agent für BigQuery Data Transfer Service die Rolle Pub/Sub-Abonnent (pubsub.subscriber) zu.

    Cloud Console

    Folgen Sie der Anleitung unter Zugriff über die Google Cloud Console steuern, um dem Dienst-Agent für BigQuery Data Transfer Service die Rolle Pub/Sub Subscriber zuzuweisen. Die Rolle kann auf Thema-, Abo- oder Projektebene zugewiesen werden.

    gcloud CLI

    Folgen Sie der Anleitung unter Richtlinie festlegen, um die folgende Bindung hinzuzufügen:

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

    Ersetzen Sie PROJECT_NUMBER durch die Projekt-ID, in der die Übertragungsressourcen erstellt und in Rechnung gestellt werden.

    Zuordnung der Kontingentnutzung:Wenn der Dienst-Agent für BigQuery Data Transfer Service auf das Pub/Sub-Abo zugreift, wird die Kontingentnutzung dem Nutzerprojekt in Rechnung gestellt.

  3. Prüfen Sie, ob dem Dienst-Agent für BigQuery Data Transfer Service die Rolle Pub/Sub-Abonnent (pubsub.subscriber) zugewiesen wurde.

    1. Rufen Sie in der Google Cloud Console die Pub/Sub Seite auf.

      Zu Pub/Sub

    2. Wählen Sie das Pub/Sub-Abo aus, das Sie in der ereignisgesteuerten Übertragung verwendet haben.

    3. Wenn das Infofeld ausgeblendet ist, klicken Sie oben rechts auf Infofeld ansehen.

    4. Prüfen Sie auf dem Tab Berechtigungen, ob der Dienst-Agent für BigQuery Data Transfer Service die Rolle Pub/Sub-Abonnent (pubsub.subscriber) hat.

    Prüfen Sie, ob der Dienst-Agent die Rolle „pubsub.subscriber“ für das Abo hat.

Zusammengefasste Befehle zum Konfigurieren von Benachrichtigungen und Berechtigungen

Die folgenden Google Cloud CLI-Befehle enthalten alle erforderlichen Befehle zum Einrichten von Benachrichtigungen und Berechtigungen, wie in den vorherigen Abschnitten beschrieben.

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die ID Ihres Projekts.
  • CONFIG_NAME: Ein Name zur Identifizierung dieser Übertragungskonfiguration.

Übertragungskonfiguration erstellen

Sie können eine ereignisgesteuerte Cloud Storage-Übertragung erstellen, indem Sie eine Cloud Storage-Übertragung erstellen und Ereignisgesteuert als Zeitplantyp auswählen. Als Cloud Storage-Administrator (roles/storage.admin) und Pub/Sub-Administrator (roles/pubsub.admin) haben Sie ausreichende Berechtigungen, damit der BigQuery Data Transfer Service Cloud Storage automatisch so konfigurieren kann, dass Benachrichtigungen gesendet werden.

Wenn Sie nicht der Cloud Storage-Administrator (roles/storage.admin) und der Pub/Sub-Administrator (roles/pubsub.admin) sind, müssen Sie stattdessen Ihren Administrator bitten, Ihnen die Rollen zuzuweisen. Alternativ kann Ihr Administrator die erforderlichen Pub/Sub-Benachrichtigungen in den Cloud Storage-Konfigurationen und die Berechtigungen für den Dienst-Agent konfigurieren, bevor Sie die ereignisgesteuerte Übertragung erstellen können.