In diesem Dokument wird beschrieben, wie Sie ein Pub/Sub-Thema mit Single Message Transforms (SMTs) erstellen.
Mit Topic-SMTs lassen sich Nachrichtendaten und ‑attribute direkt in Pub/Sub auf einfache Weise ändern. Mit dieser Funktion können Daten bereinigt, gefiltert oder in ein anderes Format konvertiert werden, bevor die Nachrichten im Thema veröffentlicht werden.
Sie können ein Thema mit SMTs über die Google Cloud Console, die Google Cloud CLI, die Clientbibliothek oder die Pub/Sub API erstellen.
Hinweise
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub Editor (roles/pubsub.editor
) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Themas 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 Themas mit SMTs erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um ein Thema mit SMTs zu erstellen:
-
Erteilen Sie die Berechtigung zum Erstellen eines Themas für das Projekt:
pubsub.topics.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Sie können die Zugriffssteuerung auf Projektebene und auf der Ebene einzelner Ressourcen konfigurieren.
Thema mit SMTs erstellen
Bevor Sie ein Thema mit SMTs erstellen, sollten Sie sich die Dokumentation zu Eigenschaften eines Themas ansehen.
In den folgenden Beispielen wird davon ausgegangen, dass Sie ein Thema mit dieser benutzerdefinierten SMT-Funktion erstellen möchten. Weitere Informationen zu UDFs finden Sie in der Übersicht zu UDFs.
function redactSSN(message, metadata) {
const data = JSON.parse(message.data);
delete data['ssn'];
message.data = JSON.stringify(data);
return message;
}
Console
Rufen Sie in der Google Cloud Console die Pub/Sub-Seite Themen auf.
-
Klicken Sie auf Thema erstellen.
Die Seite Thema erstellen wird geöffnet.
-
Geben Sie im Feld Themen-ID eine ID für das Thema ein. Weitere Informationen zur Benennung von Themen finden Sie in den Benennungsrichtlinien.
-
Klicken Sie unter Transformationen auf Transformation hinzufügen.
-
Geben Sie einen Funktionsnamen ein. Beispiel:
redactSSN
. -
Wenn Sie die SMT nicht sofort auf Ihr Thema anwenden möchten, klicken Sie auf die Option Transformation deaktivieren. Die SMT wird weiterhin gespeichert, aber nicht ausgeführt, wenn Nachrichten über Ihr Thema gesendet werden.
-
Geben Sie eine neue Transformation ein. Beispiel:
function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; }
-
Pub/Sub bietet eine Validierungsfunktion, mit der Sie eine SMT validieren können. Klicken Sie auf Validieren, um die Transformation zu validieren.
-
Wenn Sie eine weitere Transformation hinzufügen möchten, klicken Sie auf Transformation hinzufügen.
- Mit den Auf- und Abwärtspfeilen können Sie alle SMTs in einer bestimmten Reihenfolge anordnen. Wenn Sie ein SMT entfernen möchten, klicken Sie auf die Schaltfläche „Löschen“.
-
Pub/Sub bietet eine Testfunktion, mit der Sie das Ergebnis der Ausführung des SMT für eine Beispielnachricht prüfen können. Wenn Sie die SMTs testen möchten, klicken Sie auf Transformation testen.
-
Wählen Sie im Fenster Testtransformierung die Funktion aus, die Sie testen möchten.
-
Geben Sie im Fenster Eingabenachricht eine Beispielnachricht ein.
-
Wenn Sie Nachrichtenattribute hinzufügen möchten, klicken Sie auf Attribut hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare ein.
-
Klicken Sie auf Testen. Das Ergebnis der Anwendung der SMTs auf die Nachricht wird angezeigt.
-
Schließen Sie das Fenster, um das Testen von SMTs für Beispielnachrichten zu beenden.
-
Klicken Sie auf Erstellen, um das Thema zu erstellen.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Pub/Sub bietet eine Validierungsfunktion, mit der Sie ein SMT validieren können. Führen Sie den Befehl
gcloud pubsub message-transforms validate
aus:gcloud pubsub message-transforms validate --message-transform-file=TRANSFORM_FILE
Ersetzen Sie Folgendes:
-
TRANSFORM_FILE: Der Pfad zur YAML- oder JSON-Datei, die ein einzelnes SMT enthält.
Hier ist ein Beispiel für eine YAML-Transformationsdatei:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
-
Pub/Sub bietet eine Testfunktion, mit der Sie das Ergebnis der Ausführung von einem oder mehreren SMTs für eine Beispielnachricht prüfen können. Führen Sie den Befehl
gcloud pubsub message-transforms test
aus:gcloud pubsub message-transforms test --message-transforms-file=TRANSFORMS_FILE --message=MESSAGE --attributes=ATTRIBUTES
Ersetzen Sie Folgendes:
-
TRANSFORMS_FILE: Der Pfad zur YAML- oder JSON-Datei, die ein oder mehrere SMTs enthält.
Hier ist ein Beispiel für eine YAML-Datei mit Transformationen:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
MESSAGE: Nachrichtentext, mit dem die SMTs getestet werden sollen.
-
ATTRIBUTES: Nachrichtenattribute, mit denen die SMTs getestet werden sollen.
-
-
Führen Sie den Befehl
gcloud pubsub topics create
aus, um das Thema zu erstellen:gcloud pubsub topics create TOPIC_ID \ --message-transforms-file=TRANSFORMS_FILE
Ersetzen Sie Folgendes:
-
TOPIC_ID: Die ID oder der Name des Themas, das Sie erstellen möchten. Richtlinien zum Benennen eines Themas finden Sie unter Ressourcennamen. Der Name eines Themas kann nicht geändert werden.
-
TRANSFORMS_FILE: Der Pfad zur YAML- oder JSON-Datei, die ein oder mehrere SMTs enthält.
Hier ist ein Beispiel für eine YAML-Datei mit Transformationen:
- javascriptUdf: code: > function redactSSN(message, metadata) { const data = JSON.parse(message.data); delete data['ssn']; message.data = JSON.stringify(data); return message; } functionName: redactSSN
-
Java
Folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Richten Sie zur Authentifizierung bei Pub/Sub Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Folgen Sie der Einrichtungsanleitung für Python in der Pub/Sub-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Richten Sie zur Authentifizierung bei Pub/Sub Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Go
Folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Richten Sie zur Authentifizierung bei Pub/Sub Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.