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 Datenerfassung 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 eine sofortige Datenverfügbarkeit benötigen, empfehlen wir die 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 Entscheidung zwischen den beiden Optionen sollten Sie überlegen, ob Sie kostengünstige inkrementelle Batch-Aufnahmen mit ereignisgesteuerten Übertragungen priorisieren oder die Flexibilität der Storage Write API bevorzugen.
Datenquellen mit Unterstützung für ereignisgesteuerte Übertragungen
Mit dem BigQuery Data Transfer Service können ereignisgesteuerte Übertragungen für die folgenden Datenquellen verwendet werden:
Beschränkungen
Für ereignisgesteuerte Übertragungen nach BigQuery gelten die folgenden Einschränkungen:
- Nachdem eine ereignisgesteuerte Übertragung ausgelöst wurde, wartet der BigQuery Data Transfer Service bis zu 10 Minuten, bevor er die nächste Übertragung auslöst, unabhängig davon, ob innerhalb dieses Zeitraums ein Ereignis eintrifft.
- Bei ereignisgesteuerten Übertragungen werden Laufzeitparameter für den Quell-URI oder den Datenpfad nicht unterstützt.
- Dasselbe Pub/Sub-Abo kann nicht von mehreren ereignisgesteuerten Übertragungskonfigurationen wiederverwendet werden.
Ereignisgesteuerte Cloud Storage-Übertragung einrichten
Bei ereignisgesteuerten Übertragungen aus Cloud Storage werden Pub/Sub-Benachrichtigungen verwendet, um zu erkennen, wann Objekte im Quell-Bucket geändert oder hinzugefügt wurden. Wenn Sie den Modus Inkrementelle Übertragung verwenden, werden beim Löschen eines Objekts im Quell-Bucket die zugehörigen Daten in der BigQuery-Tabelle nicht gelöscht.
Hinweise
Bevor Sie eine ereignisgesteuerte Cloud Storage-Übertragung konfigurieren, müssen Sie die folgenden Schritte ausführen:
Aktivieren Sie die Pub/Sub API für das Projekt, das Benachrichtigungen erhält.
Wenn Sie der Cloud Storage-Administrator (
roles/storage.admin) und der Pub/Sub-Administrator (roles/pubsub.admin) sind, können Sie mit Erstellen einer ereignisgesteuerten Übertragungskonfiguration fortfahren.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 Rollenroles/storage.adminundroles/pubsub.adminzuzuweisen oder die Pub/Sub-Konfiguration und die Konfiguration der Dienst-Agent-Berechtigungen in den folgenden Abschnitten vorzunehmen und das vorkonfigurierte Pub/Sub-Abo zu verwenden, um eine ereignisgesteuerte Übertragungskonfiguration zu erstellen.Detaillierte Berechtigungen, die zum Einrichten von Benachrichtigungen für die Konfiguration der ereignisgesteuerten Übertragung erforderlich sind:
Wenn Sie Themen und Abos zum Veröffentlichen von Benachrichtigungen erstellen möchten, benötigen Sie die Berechtigungen
pubsub.topics.createundpubsub.subscriptions.create.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.getstorage.buckets.update
Die vordefinierten IAM-Rollen
pubsub.adminundstorage.adminhaben alle erforderlichen Berechtigungen zum Konfigurieren einer ereignisgesteuerten Cloud Storage-Übertragung. Weitere Informationen finden Sie unter Pub/Sub-Zugriffssteuerung.
Pub/Sub-Benachrichtigungen in Cloud Storage konfigurieren
Achten Sie darauf, dass Sie die Voraussetzungen für die Verwendung von Pub/Sub mit Cloud Storage erfüllen.
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 Dateibenachrichtigungsereignisse auslösen möchten.TOPIC_NAME: Der Name des Pub/Sub-Themas, für das Sie die Dateibenachrichtigungsereignisse 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.
Prüfen Sie, ob die Pub/Sub-Benachrichtigung für Cloud Storage richtig konfiguriert ist. Führen Sie den Befehl
gcloud storage buckets notifications listaus: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
Erstellen Sie ein Pull-Abo für das Thema:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
Ersetzen Sie
SUBSCRIPTION_IDdurch den Namen oder die ID Ihres neuen Pub/Sub-Pull-Abos.Sie können ein Pull-Abo mit anderen Methoden erstellen.
Berechtigungen für Dienst-Agent konfigurieren
So finden Sie den Namen des BigQuery Data Transfer Service-Agents für Ihr Projekt:
Rufen Sie die Seite IAM und Verwaltung auf.
Klicken Sie auf das Kästchen Von Google bereitgestellte Rollenzuweisungen einschließen.
Der Dienst-Agent für BigQuery Data Transfer Service wird mit dem Namen
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.comangezeigt und hat die Rolle Dienst-Agent für BigQuery Data Transfer Service (roles/bigquerydatatransfer.serviceAgent).
Weitere Informationen zu Dienst-Agents finden Sie unter Dienst-Agents.
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 -Konsole steuern, um dem BigQuery Data Transfer Service-Agent die Rolle
Pub/Sub Subscriberzuzuweisen. Die Rolle kann auf Themen-, Abo- oder Projektebene gewährt werden.gcloudCLIFolgen 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_NUMBERdurch die Projekt-ID, die die Übertragung hostet. Übertragungsressourcen werden erstellt und in Rechnung gestellt.Zuordnung der Kontingentnutzung:Wenn der BigQuery Data Transfer Service-Agent auf das Pub/Sub-Abo zugreift, wird die Kontingentnutzung dem Nutzerprojekt in Rechnung gestellt.
Prüfen Sie, ob dem Dienst-Agent für BigQuery Data Transfer Service die Rolle „Pub/Sub-Abonnent“ (
pubsub.subscriber) zugewiesen wurde.Rufen Sie in der Google Cloud Console die Seite Pub/Sub auf.
Wählen Sie das Pub/Sub-Abo aus, das Sie bei der ereignisgesteuerten Übertragung verwendet haben.
Wenn das Infofeld ausgeblendet ist, klicken Sie oben rechts auf Infofeld ansehen.
Prüfen Sie auf dem Tab Berechtigungen, ob der Dienst-Agent von BigQuery Data Transfer Service die Rolle „Pub/Sub-Abonnent“ (
pubsub.subscriber) 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 die erforderlichen Berechtigungen, damit der BigQuery Data Transfer Service Cloud Storage automatisch für das Senden von Benachrichtigungen konfigurieren kann.
Wenn Sie nicht der Cloud Storage-Administrator (roles/storage.admin) und der Pub/Sub-Administrator (roles/pubsub.admin) sind, müssen Sie Ihren Administrator bitten, Ihnen die Rollen zuzuweisen oder die erforderlichen Pub/Sub-Benachrichtigungen in Cloud Storage-Konfigurationen und Konfigurationen für Dienst-Agent-Berechtigungen zu erstellen, bevor Sie die ereignisgesteuerte Übertragung erstellen können.