In diesem Dokument erfahren Sie, wie Sie Schemas für Pub/Sub-Themen verknüpfen.
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 Verknüpfen und Verwalten von Schemas 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 Verknüpfen und Verwalten von Schemas erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um Schemas zu verknüpfen und zu verwalten:
-
Schema erstellen:
pubsub.schemas.create
-
Schema an das Thema anhängen:
pubsub.schemas.attach
-
Schemaüberarbeitung festschreiben:
pubsub.schemas.commit
-
So löschen Sie ein Schema oder eine Schemaüberarbeitung:
pubsub.schemas.delete
-
So rufen Sie ein Schema oder Schemaüberarbeitungen ab:
pubsub.schemas.get
-
Listenschemata:
pubsub.schemas.list
-
Schemaüberarbeitungen auflisten:
pubsub.schemas.listRevisions
-
Rollback für ein Schema ausführen:
pubsub.schemas.rollback
-
Nachricht prüfen:
pubsub.schemas.validate
-
IAM-Richtlinie für ein Schema abrufen:
pubsub.schemas.getIamPolicy
-
Konfigurieren Sie die IAM-Richtlinie für ein Schema:
pubsub.schemas.setIamPolicy
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Sie können Hauptkonten wie Nutzern, Gruppen, Domains oder Dienstkonten Rollen und Berechtigungen zuweisen. Sie können ein Schema in einem Projekt erstellen und einem Thema in einem anderen Projekt anhängen. Sie müssen die erforderlichen Berechtigungen für jedes Projekt haben.
Richtlinien zum Verknüpfen eines Schemas mit einem Thema
Sie können ein Schema mit einem Thema verknüpfen, wenn Sie ein Thema erstellen oder bearbeiten. Hier finden Sie die Richtlinien für die Verknüpfung eines Schemas mit einem Thema:
Sie können ein Schema mit einem oder mehreren Themen verknüpfen.
Nachdem ein Schema mit einem Thema verknüpft ist, muss jede Nachricht, die das Thema von Publishern empfängt, diesem Schema folgen.
Wenn Sie ein Schema mit einem Thema verknüpfen, müssen Sie auch die Codierung der zu veröffentlichenden Nachrichten als
BINARY
oderJSON
angeben. Wenn Sie JSON mit einem Avro-Schema verwenden, beachten Sie die Codierungsregeln für Unions.Wenn ein mit einem Thema verknüpftes Schema Versionen hat, müssen Nachrichten der Codierung entsprechen und anhand einer Version innerhalb des verfügbaren Bereichs validiert werden. Andernfalls wird die Nachricht nicht veröffentlicht.
Die Versionen werden in umgekehrter chronologischer Reihenfolge basierend auf der Erstellungszeit ausprobiert. Informationen zum Erstellen einer Schemaversion finden Sie unter Schemaversion festschreiben.
Validierungslogik für ein Nachrichtenschema
Wenn Sie ein Schema mit einem Thema verknüpfen und das Schema Versionen hat, können Sie einen Teilbereich der Versionen angeben, die verwendet werden sollen. Wenn Sie keinen Bereich angeben, wird der gesamte Bereich für die Validierung verwendet.
Wenn Sie keine Überarbeitung als Erste zulässige Überarbeitung angeben, wird die älteste vorhandene Überarbeitung des Schemas für die Validierung verwendet. Wenn Sie keine Überarbeitung als Zuletzt zulässige Überarbeitung angeben, wird die neueste vorhandene Überarbeitung für das Schema verwendet.
Nehmen wir als Beispiel das Schema S
, das mit dem Thema T
verknüpft ist.
Schema S
hat die Versions-IDs A
, B
, C
und D
, die nacheinander erstellt wurden. A
ist die erste oder älteste Version. Keines der Schemas ist mit einem anderen identisch oder ein Rollback eines vorhandenen Schemas.
Wenn Sie nur das Feld Erste zulässige Version auf
B
festlegen, werden Nachrichten, die nur dem SchemaA
entsprechen, abgelehnt. Nachrichten, die den SchemasB
,C
undD
entsprechen, werden hingegen akzeptiert.Wenn Sie nur das Feld Zuletzt zulässige Version auf
C
festlegen, werden Nachrichten, die den SchemasA
,B
undC
entsprechen, akzeptiert und Nachrichten, die nur dem SchemaD
entsprechen, abgelehnt.Wenn Sie beide Felder Erste zulässige Überarbeitung auf
B
und Letzte zulässige Überarbeitung aufC
festlegen, werden Nachrichten akzeptiert, die den SchemasB
undC
entsprechen.Sie können auch dieselbe Überarbeitungs-ID für die erste und letzte Version festlegen. In diesem Fall werden nur Nachrichten akzeptiert, die dieser Version entsprechen.
Schema beim Erstellen eines Themas erstellen und verknüpfen
Sie können ein Thema mit einem Schema über die Google Cloud Console, die gcloud CLI, die Pub/Sub API oder die Cloud-Clientbibliotheken erstellen.
Console
Öffnen Sie in der Google Cloud Console die Seite Pub/Sub-Themen.
Klicken Sie auf Thema erstellen.
Geben Sie im Feld Themen-ID eine ID für das Thema ein.
Informationen zum Benennen von Themen finden Sie in den Richtlinien.
Klicken Sie das Kästchen Schema verwenden an.
Behalten Sie für die übrigen Felder die Standardeinstellungen bei.
Sie können ein Schema erstellen oder ein vorhandenes verwenden.
So erstellen Sie ein Schema: `
- Wählen Sie unter Pub/Sub-Schema auswählen die Option Neues Schema erstellen aus.
Die Seite Schema erstellen wird in einem sekundären Tab angezeigt.
Folgen Sie der Anleitung unter Schema erstellen.
Kehren Sie zum Tab Thema erstellen zurück und klicken Sie auf Aktualisieren.
Suchen Sie im Feld Pub/Sub-Schema auswählen nach Ihrem Schema.
Wählen Sie als Nachrichtencodierung JSON oder Binary aus.
Das von Ihnen erstellte Schema hat eine Versions-ID. Sie können weitere Schemaversionen erstellen, wie unter Schemaversion festschreiben beschrieben.
Wenn Sie ein bereits erstelltes Schema verknüpfen, gehen Sie so vor:
Wählen Sie unter Pub/Sub-Schema auswählen ein vorhandenes Schema aus.
Wählen Sie als Nachrichtencodierung JSON oder Binary aus.
Optional: Wenn das ausgewählte Schema Überarbeitungen hat, verwenden Sie für Überarbeitungsbereich die Drop-down-Menüs Erste zulässige Überarbeitung und Letzte zulässige Überarbeitung.
Sie können beide Felder, nur eines oder die Standardeinstellungen angeben.
Behalten Sie für die übrigen Felder die Standardeinstellungen bei.
Klicken Sie auf Erstellen, um das Thema zu speichern und dem ausgewählten Schema zuzuweisen.
gcloud
Führen Sie den Befehl gcloud pubsub topics create
aus, um ein Thema zu erstellen, das einem zuvor erstellten Schema zugewiesen ist:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --first-revision-id=FIRST_REVISION_ID \ --last-revision-id=LAST_REVISION_ID \
Wobei:
- TOPIC_ID ist die ID des Themas, das Sie erstellen.
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert werden. Dieser Wert muss entweder
JSON
oderBINARY
sein. - SCHEMA_ID ist die ID eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Version, anhand derer die Validierung erfolgen soll.
- LAST_REVISION_ID ist die ID der neuesten Version, anhand derer die Validierung erfolgen soll.
Sowohl --first-revision-id
als auch --last-revision-id
sind optional.
Sie können auch ein Schema aus einem anderen Google Cloud-Projekt zuweisen:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
Wobei:
- SCHEMA_PROJECT ist die Projekt-ID des Google Cloud-Projekts für das Schema.
- TOPIC_PROJECT ist die Projekt-ID des Google Cloud-Projekts für das Thema.
REST
Verwenden Sie zum Erstellen eines Themas die Methode projects.topics.create
:
Anfrage:
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Anfragetext:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
Wobei:
- PROJECT_ID ist die Projekt-ID.
- TOPIC_ID ist Ihre Themen-ID.
- SCHEMA_NAME ist der Name des Schemas, anhand dessen veröffentlichte Nachrichten validiert werden sollen. Das Format dafür ist:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Muss entweder
JSON
oderBINARY
sein. - FIRST_REVISION_ID ist die ID der ältesten Version, anhand derer die Validierung erfolgen soll.
- LAST_REVISION_ID ist die ID der neuesten Version, die überprüft werden soll.
Sowohl firstRevisionId
als auch lastRevisionId
sind optional.
Response:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
Sowohl firstRevisionId
als auch lastRevisionId
werden weggelassen, wenn sie in der Anfrage nicht angegeben sind.
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
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 zu Pub/Sub C# API.
Go
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go 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 zu Pub/Sub Java API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur PHP-API von Pub/Sub.
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 zu Pub/Sub Python API.
Ruby
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Ruby in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Ruby API.
Mit einem Thema verknüpftes Schema bearbeiten
Sie können ein Thema bearbeiten, um ein Schema anzuhängen, ein Schema zu entfernen oder den Versionsbereich zu aktualisieren, der für die Validierung von Nachrichten verwendet wird. Wenn Sie Änderungen am verwendeten Schema planen, können Sie im Allgemeinen eine neue Version festschreiben und den Bereich der für das Thema verwendeten Versionen aktualisieren.
Sie können ein mit einem Thema verknüpftes Schema mit der Google Cloud Console, der gcloud CLI, der Pub/Sub API oder den Cloud-Clientbibliotheken bearbeiten.
Console
Öffnen Sie in der Google Cloud Console die Seite Pub/Sub-Themen.
Klicken Sie auf die Themen-ID eines Themas.
Klicken Sie auf der Seite mit den Themendetails auf Bearbeiten.
Sie können die folgenden Änderungen am Schema vornehmen.
Es kann einige Minuten dauern, bis die Änderungen wirksam werden.
Wenn Sie das Schema aus dem Thema entfernen möchten, entfernen Sie auf der Seite Thema bearbeiten das Häkchen aus dem Kästchen Schema verwenden.
Wenn Sie das Schema ändern möchten, wählen Sie im Bereich Schema den Namen eines Schemas aus.
Aktualisieren Sie die anderen Felder nach Bedarf.
- Wenn Sie den Überarbeitungszeitraum aktualisieren möchten, verwenden Sie für Überarbeitungszeitraum die Drop-down-Menüs Erste zulässige Überarbeitung und Letzte zulässige Überarbeitung.
Sie können beide Felder, nur eines oder die Standardeinstellungen angeben.
Klicken Sie auf Aktualisieren, um die Änderungen zu speichern.
gcloud
gcloud pubsub topics update TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_NAME \ --first-revision-id=FIRST_REVISION_ID \ --last-revision-id=LAST_REVISION_ID \
Wobei:
- TOPIC_ID ist die ID des Themas, das Sie erstellen.
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert werden. Dieser Wert muss entweder
JSON
oderBINARY
sein. - SCHEMA_NAME ist der Name eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Version, anhand derer die Validierung erfolgen soll.
- LAST_REVISION_ID ist die ID der neuesten Version, anhand derer die Validierung erfolgen soll.
Sowohl --first-revision-id
als auch --last-revision-id
sind optional.
REST
Verwenden Sie die Methode projects.topics.patch
, um ein Thema zu aktualisieren:
Anfrage:
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Anfragetext:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" "update_mask": } }
Wobei:
- PROJECT_ID ist die Projekt-ID.
- TOPIC_ID ist Ihre Themen-ID.
- SCHEMA_NAME ist der Name des Schemas, anhand dessen veröffentlichte Nachrichten validiert werden sollen. Das Format dafür ist:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Muss entweder
JSON
oderBINARY
sein. - FIRST_REVISION_ID ist die ID der ältesten Version, anhand derer die Validierung erfolgen soll.
- LAST_REVISION_ID ist die ID der neuesten Version, die überprüft werden soll.
Sowohl firstRevisionId
als auch lastRevisionId
sind optional.
Response:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
Sowohl firstRevisionId
als auch lastRevisionId
sind nach dem Update nicht festgelegt.
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
Go
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go 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 zu 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 zu Pub/Sub Python API.
0Nächste Schritte
- Schemaüberarbeitung festschreiben
- Nachrichten in einem Thema mit einem Schema veröffentlichen
- Schemadefinition validieren
- Nachricht anhand eines Schemas validieren