In diesem Dokument erfahren Sie, wie Sie Schemas für Pub/Sub-Themen verknüpfen.
Hinweise
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 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 zum Verknüpfen und Verwalten von Schemas erforderlich:
-
Schema erstellen:
pubsub.schemas.create
-
Schema an Thema anhängen:
pubsub.schemas.attach
-
Führen Sie einen Commit für eine Schemaversion durch:
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 eines Schemas durchfü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 wurde, die von den Publishern empfangen werden, dem 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 ist, achten Sie genau auf die Codierungsregeln für Unions.Wenn ein mit einem Thema verknüpftes Schema über Überarbeitungen verfügt, müssen Nachrichten mit den Codierung und Validierung gegen eine Version innerhalb des verfügbaren Bereichs. 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 es Versionen enthält, können Sie eine Teilmenge der zu verwendenden Überarbeitungen angeben. 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 Letzte zulässige Überarbeitung angeben, gilt Folgendes: wird die neueste vorhandene Version des Schemas verwendet.
Nehmen wir das Beispiel für das Schema S
, das an das Thema T
angehängt ist.
Das Schema S
hat die Überarbeitungs-IDs A
, B
, C
und D
, die der Reihe nach erstellt wurden:
Dabei ist A
die erste oder älteste Überarbeitung. Keines der Schemas ist identisch
oder Rollbacks eines bestehenden Schemas.
Wenn Sie nur das Feld Erste Überarbeitung zugelassen auf
B
festlegen, Nachrichten, die nur dem SchemaA
entsprechen, werden abgelehnt. Nachrichten, die den SchemasB
,C
undD
entsprechen, werden akzeptiert.Wenn Sie nur das Feld Letzte zulässige Überarbeitung auf
C
festlegen, Nachrichten, die den SchemasA
,B
undC
entsprechen, werden akzeptiert. Nachrichten, die nur dem SchemaD
entsprechen, werden abgelehnt.Wenn Sie beide Felder als Erste Überarbeitung zugelassen auf
B
und Letzte Überarbeitung zulässig alsC
, Nachrichten, die den Die SchemasB
undC
werden akzeptiert.Sie können auch für die erste und die letzte Version dieselbe Versions-ID 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
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Themen auf.
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 die Standardeinstellungen für die übrigen Felder bei.
Sie können ein Schema erstellen oder ein vorhandenes Schema 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 Binär aus.
Das soeben 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 Versionen enthält, geben Sie unter Versionsbereich Folgendes ein: verwenden Sie das Drop-down-Menü für Erste Überarbeitung zugelassen 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
Befehl:
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 für das Thema, 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, die validiert werden 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 die veröffentlichten 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 wird. Dies muss entweder auf
JSON
oderBINARY
festgelegt werden. - FIRST_REVISION_ID ist die ID der ältesten Überarbeitung, die geprüft werden soll.
- LAST_REVISION_ID ist die ID der neuesten Version, die validiert werden soll.
Sowohl firstRevisionId
als auch lastRevisionId
sind optional.
Lösung:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" "firstRevisionId": "FIRST_REVISION_ID" "lastRevisionId": "LAST_REVISION_ID" } }
firstRevisionId
und lastRevisionId
werden weggelassen, wenn sie nicht angegeben sind
in der Anfrage.
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, zu entfernen oder Aktualisieren Sie den Versionsbereich, der zum Validieren 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 Methode Google Cloud Console, gcloud CLI, Pub/Sub API Cloud-Clientbibliotheken.
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, gehen Sie im Abschnitt Schema so vor: wählen Sie den Namen eines Schemas aus.
Aktualisieren Sie die anderen Felder nach Bedarf.
- Wenn Sie den Überarbeitungsbereich aktualisieren möchten, führen Sie für den Überarbeitungsbereich die folgenden Schritte aus: verwenden Sie das Drop-down-Menü für Erste Überarbeitung zugelassen und Letzte zulässige Überarbeitung.
Sie können beide oder nur eines davon angeben oder den Standardwert beibehalten. je nach Ihren Anforderungen anpassen.
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 für das Thema, 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, die validiert werden soll.
--first-revision-id
und --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 die veröffentlichten 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 wird. Dies muss entweder auf
JSON
oderBINARY
festgelegt werden. - FIRST_REVISION_ID ist die ID der ältesten Überarbeitung, die geprüft werden soll.
- LAST_REVISION_ID ist die ID der neuesten Version, die validiert werden soll.
Sowohl firstRevisionId
als auch lastRevisionId
sind optional.
Lösung:
{ "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 nicht nach dem
aktualisieren.
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
- Commit für Schemaversion durchführen
- Nachrichten zu einem Thema mit einem Schema veröffentlichen
- Schemadefinition validieren
- Nachricht für ein Schema validieren