In diesem Dokument erfahren Sie, wie Sie Schemas für Pub/Sub-Themen verknüpfen.
Hinweis
Erforderliche Rollen und Berechtigungen
Um die Berechtigungen zu erhalten, die Sie zum Verknüpfen und Verwalten von Schemas benötigen,
bitten Sie Ihren Administrator, Ihnen
IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor
) für Ihr Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält Berechtigungen zum Verknüpfen und Verwalten von Schemas erforderlich. 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
-
So nehmen Sie eine Schemaüberarbeitung vor:
pubsub.schemas.commit
-
So löschen Sie ein Schema oder eine Schemaversion:
pubsub.schemas.delete
-
Rufen Sie ein Schema oder eine Schemaversion ab:
pubsub.schemas.get
-
Schemas auflisten:
pubsub.schemas.list
-
Schemaversionen auflisten:
pubsub.schemas.listRevisions
-
Rollback für ein Schema ausführen:
pubsub.schemas.rollback
-
Validieren Sie eine Nachricht:
pubsub.schemas.validate
-
Rufen Sie die IAM-Richtlinie für ein Schema ab:
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. Sie können ein Schema in einem Projekt erstellen und an ein Thema in einem anderen Projekt anhängen. Achten Sie darauf, dass Sie die erforderlichen Berechtigungen für für jedes Projekt.
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 zum Verknüpfen 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.
Beim Verknüpfen eines Schemas mit einem Thema müssen Sie auch die Codierung angeben. der Nachrichten, die als
BINARY
oderJSON
veröffentlicht werden sollen. 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 kann die Nachricht nicht veröffentlicht werden.
Überarbeitungen werden in umgekehrter chronologischer Reihenfolge Zeitpunkt der Erstellung. Informationen zum Erstellen einer Schemaversion finden Sie unter Führen Sie einen Commit für eine Schemaversion durch.
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 kein wird der gesamte Bereich zur Validierung verwendet.
Wenn Sie keine Überarbeitung als Erste Überarbeitung zugelassen angeben, geschieht Folgendes: wird die älteste vorhandene Version des Schemas zur Validierung verwendet. Wenn Sie keine Überarbeitung als Zuletzt zulässige Überarbeitung angeben, wird die neueste vorhandene Überarbeitung für das Schema verwendet.
Nehmen wir das Beispiel für das Schema S
, das an das Thema T
angehängt ist.
Das 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 Überarbeitung 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.
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 dazu, wie Sie Themen benennen, 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 zusätzliche Schemaversionen wie unter Commit einer Schemaversion durchführen erläutert.
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 Binär 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 Standardeinstellung beibehalten je nach Ihren Anforderungen anpassen.
Behalten Sie die Standardeinstellungen für die übrigen Felder 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 der Nachrichten, die anhand des
Schema. Dieser Wert muss auf
JSON
oderBINARY
festgelegt werden. - SCHEMA_ID ist die ID eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Überarbeitung, die geprüft werden 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 den 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 ist:
projects/PROJECT_ID/schemas/SCHEMA_ID
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Dies muss entweder auf
JSON
oderBINARY
festgelegt werden. - 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 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. Im Allgemeinen wenn Sie Änderungen an dem verwendeten Schema geplant haben, können Sie einen Commit für eine neue Version durchführen und Aktualisieren Sie den für das Thema verwendeten Versionsbereich.
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
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Themen auf.
Klicken Sie auf die Themen-ID eines Themas.
Klicken Sie auf der Seite mit den Themendetails auf Bearbeiten.
Sie können folgende Ä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 der Nachrichten, die anhand des
Schema. Dieser Wert muss auf
JSON
oderBINARY
festgelegt werden. - SCHEMA_NAME ist der Name eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Überarbeitung, die geprüft werden 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 zum Aktualisieren eines Themas den projects.topics.patch
.
:
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 ist:
projects/PROJECT_ID/schemas/SCHEMA_ID
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Dies muss entweder auf
JSON
oderBINARY
festgelegt werden. - 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 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 zu einem Thema mit einem Schema veröffentlichen
- Schemadefinition validieren
- Nachricht anhand eines Schemas validieren