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 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
-
Schemaüberarbeitungen auflisten:
pubsub.schemas.listRevisions
-
Rollback eines Schemas durchfü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. 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 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 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 verwenden, beachten Sie die Codierungsregeln für Unions.Wenn ein mit einem Thema verknüpftes Schema Versionen hat, müssen Nachrichten mit den Codierung und Validierung gegen eine Version innerhalb des verfügbaren Bereichs. Andernfalls wird die Nachricht nicht veröffentlicht.
Ü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 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 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 Version. Keines der Schemas ist mit einem anderen identisch oder ein Rollback eines vorhandenen 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 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
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 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 Binär aus.
Das soeben 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 angeben, nur eines oder die Standardeinstellungen beibehalten.
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
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 des Themas, das Sie erstellen.
- ENCODING_TYPE ist die Codierung der Nachrichten, die anhand des
Schema. Dieser Wert muss entweder
JSON
oderBINARY
sein. - 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 dafür 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.
Response:
{ "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 mithilfe der Google Cloud Console, gcloud CLI, Pub/Sub API Cloud-Clientbibliotheken.
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 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 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, die validiert werden 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 die veröffentlichten 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 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.
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 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
- Schemaüberarbeitung festschreiben
- Nachrichten zu einem Thema mit einem Schema veröffentlichen
- Schemadefinition validieren
- Nachricht für ein Schema validieren