In diesem Dokument wird erläutert, wie Sie ein Pub/Sub-Abo mit Single Message Transforms (SMTs) erstellen.
Abo-SMTs ermöglichen direkt in Pub/Sub einfache Änderungen an Nachrichtendaten und -attributen. Mit dieser Funktion können Daten bereinigt, gefiltert oder formatiert werden, bevor die Nachrichten an einen Abonnentenclient gesendet werden.
Wenn Sie ein Abo mit SMTs erstellen möchten, können Sie die Google Cloud Console, die Google Cloud CLI, die Clientbibliothek oder die Pub/Sub API verwenden.
Hinweis
Weitere Informationen zu SMTs
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Abos mit SMTs benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen eines Abos mit SMTs erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um ein Abo mit SMTs zu erstellen:
-
Erteilen Sie die Berechtigung zum Erstellen eines Abos für das Projekt:
pubsub.subscriptions.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Je nach Abo sind möglicherweise zusätzliche Berechtigungen erforderlich. Eine genaue Liste der Berechtigungen finden Sie im Dokument zum Erstellen des jeweiligen Abos. Wenn Sie beispielsweise ein BigQuery-Abo mit SMTs erstellen, finden Sie weitere Informationen unter BigQuery-Abos erstellen.
Wenn Sie ein Abo in einem anderen Projekt als dem Thema erstellen, müssen Sie dem Hauptkonto des Projekts, das das Abo enthält, die Rolle roles/pubsub.subscriber im Projekt zuweisen, das das Thema enthält.
Sie können die Zugriffssteuerung auf Projektebene und auf der Ebene einzelner Ressourcen konfigurieren.
Abo mit SMTs erstellen
Bevor Sie ein Abo mit SMTs erstellen, lesen Sie die Dokumentation zu Eigenschaften eines Abos.
So erstellen Sie ein Pub/Sub-Abo mit einem oder mehreren SMTs: Sie können bis zu fünf SMTs pro Abo aktivieren.
Console
Rufen Sie in der Google Cloud Console die Seite „Pub/Sub“ → Abos auf.
Klicken Sie auf Abo erstellen.
Geben Sie im Feld Abo-ID eine ID für Ihr Abo ein. Weitere Informationen zum Benennen von Abos finden Sie in den Benennungsrichtlinien.
Klicken Sie unter Transformationen auf Transformation hinzufügen.
Wählen Sie den Transformationstyp aus. Weitere Informationen zu den unterstützten SMT-Typen finden Sie unter SMT-Typen.
Konfigurationsattribute für das SMT festlegen Die Menge der Eigenschaften hängt vom Typ des SMT ab. Weitere Informationen finden Sie in der Dokumentation für den jeweiligen SMT-Typ.
Optional. Klicken Sie auf Validieren, um das SMT zu validieren. Wenn das SMT gültig ist, wird die Meldung
"Validation passed"angezeigt. Andernfalls wird eine Fehlermeldung angezeigt.Wenn Sie eine weitere Transformation hinzufügen möchten, klicken Sie auf Transformation hinzufügen und wiederholen Sie die vorherigen Schritte.
Wenn Sie die SMTs in einer bestimmten Reihenfolge anordnen möchten, klicken Sie auf Nach oben oder Nach unten. Wenn Sie ein SMT entfernen möchten, klicken Sie auf Löschen.
Optional. So testen Sie eine SMT an einer Beispielnachricht:
Klicken Sie auf Transformationen testen.
Wählen Sie im Fenster Transformation testen die Funktion aus, die Sie testen möchten.
Geben Sie im Fenster Eingabenachricht eine Beispielnachricht ein.
Wenn Sie der Mitteilung ein Attribut hinzufügen möchten, klicken Sie auf Attribut hinzufügen und geben Sie den Schlüssel und den Wert des Attributs ein. Sie können mehrere Attribute hinzufügen.
Klicken Sie auf Testen. Das Ergebnis der Anwendung des SMT auf die Nachricht wird unter Ausgabemeldung angezeigt.
Klicken Sie auf Schließen, um das Fenster Transformationen testen zu schließen.
Wenn Sie mehrere SMTs erstellen, können Sie die gesamte Transformationssequenz so testen:
- Testen Sie das erste SMT in der Sequenz, wie in den vorherigen Schritten beschrieben.
- Wählen Sie das nächste SMT aus. Die Eingabenachricht wird mit der Ausgabenachricht aus dem vorherigen Test vorab ausgefüllt.
- Testen Sie die SMTs der Reihe nach, um sicherzugehen, dass die gesamte Sequenz wie erwartet funktioniert.
Klicken Sie auf Erstellen, um das Abo zu erstellen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Erstellen Sie eine YAML- oder JSON-Datei, in der ein oder mehrere SMTs definiert sind. Die YAML- oder JSON-Definition hängt vom Typ des SMT ab. Weitere Informationen finden Sie unter Arten von SMTs.
Wenn die Datei mehrere SMTs enthält, werden sie von Pub/Sub in der aufgeführten Reihenfolge ausgeführt.
Optional. Führen Sie den Befehl
gcloud pubsub message-transforms validateaus, um ein SMT zu validieren:gcloud pubsub message-transforms validate \ --message-transform-file=TRANSFORM_FILEErsetzen Sie Folgendes:
- TRANSFORM_FILE: Der Pfad zu einer YAML- oder JSON-Datei, die eine einzelne SMT definiert. Wenn Sie mehrere SMTs erstellen, müssen Sie sie einzeln validieren.
Optional. Wenn Sie eine oder mehrere SMTs für eine Pub/Sub-Beispielnachricht testen möchten, führen Sie den Befehl
gcloud pubsub message-transforms testaus:gcloud pubsub message-transforms test \ --message-transforms-file=TRANSFORMS_FILE \ --message=MESSAGE \ --attribute=ATTRIBUTESErsetzen Sie Folgendes:
- TRANSFORMS_FILE: Der Pfad zu einer YAML- oder JSON-Datei, in der eine oder mehrere SMTs definiert sind.
- MESSAGE: Der Text der Beispielnachricht.
- ATTRIBUTES: Optional. Eine durch Kommas getrennte Liste von Nachrichtenattributen. Jedes Attribut ist ein Schlüssel/Wert-Paar im Format
KEY="VALUE".
Der Befehl führt die SMTs in der richtigen Reihenfolge aus und verwendet die Ausgabe jeder SMT als Eingabe für die nächste. Der Befehl gibt die Ergebnisse der einzelnen Schritte aus.
Führen Sie den Befehl
gcloud pubsub subscriptions createaus, um das Abo zu erstellen:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=projects/PROJECT_ID/topics/TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILEErsetzen Sie Folgendes:
SUBSCRIPTION_ID: Die ID oder der Name des Abos, das Sie erstellen möchten. Richtlinien zum Benennen eines Abos finden Sie unter Ressourcennamen. Der Name eines Abos kann nicht geändert werden.
PROJECT_ID: Die ID des Projekts, das das Thema enthält.
TOPIC_ID: Die ID des Themas, das abonniert werden soll.
TRANSFORMS_FILE: Der Pfad zur YAML- oder JSON-Datei, in der ein oder mehrere SMTs definiert sind.
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier die Migrationsanleitung zu v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Go-Einrichtungsanleitung in der Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Interaktion von SMTs mit anderen Abofunktionen
Beachten Sie bei der Verwendung eines Abo-SMT die folgenden Punkte.
Filtern
Wenn in Ihrem Abo sowohl SMTs als auch die integrierten Filter von Pub/Sub verwendet werden, wird der Filter vor dem SMT angewendet. Das hat folgende Auswirkungen:
- Wenn durch die SMT die Nachrichtenattribute geändert werden, wird der Pub/Sub-Filter nicht auf die neuen Attribute angewendet.
- Ihr SMT wird nicht auf Nachrichten angewendet, die vom Pub/Sub-Filter herausgefiltert werden.
- Wenn Ihr SMT Nachrichten herausfiltert, sollten Sie sich über die Auswirkungen auf die Überwachung Ihres Abo-Rückstands im Klaren sein.
- Wenn Sie ein Abo mit einer Dataflow-Pipeline verbinden, verwenden Sie kein Abo-SMT, um Nachrichten herauszufiltern, da dies die automatische Skalierung von Dataflow beeinträchtigt.
Nachrichtenreihenfolge
Wenn Sie eine SMT für ein Abo definieren, für das die Reihenfolge aktiviert ist, und beim Ausführen der SMT ein Fehler auftritt, werden nachfolgende Nachrichten für denselben Reihenfolgeschlüssel nicht an den Abonnenten zugestellt. Um dieses Problem zu vermeiden, richten Sie ein Thema für unzustellbare Nachrichten für das Abo ein, um die unverarbeitete Nachricht aus dem Nachrichten-Backlog zu entfernen.