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 zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Verknüpfen und Verwalten von Schemas benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff 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
-
Commit für eine Schemaversion durchführen:
pubsub.schemas.commit
-
Schema oder Schemaversion löschen:
pubsub.schemas.delete
-
Schema- oder Schemaversionen abrufen:
pubsub.schemas.get
-
Schemas auflisten:
pubsub.schemas.list
-
Schemaversionen auflisten:
pubsub.schemas.listRevisions
-
Rollback für Schema durchführen:
pubsub.schemas.rollback
-
Nachricht validieren:
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
Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Sie können Hauptkonten wie Nutzern, Gruppen, Domains oder Dienstkonten Rollen und Berechtigungen gewähren. Sie können ein Schema in einem Projekt erstellen und an ein Thema in einem anderen Projekt anhängen. Prüfen Sie, ob Sie 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 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, muss jede Nachricht, die das Thema von den Publishern erhält, diesem Schema folgen.
Beim Verknüpfen eines Schemas mit einem Thema müssen Sie auch die Codierung der zu veröffentlichenden Nachrichten als
BINARY
oderJSON
angeben. Wenn Sie JSON mit einem Avro-Schema verwenden, achten Sie genau auf die Codierungsregeln für Unions.Wenn ein mit einem Thema verknüpftes Schema Versionen hat, müssen Nachrichten mit der Codierung übereinstimmen 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 basierend auf der Erstellungszeit versucht. Informationen zum Erstellen einer Schemaversion finden Sie unter Commit für Schemaversion durchführen.
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 keinen Bereich angeben, wird der gesamte Bereich zur Validierung verwendet.
Wenn Sie keine Version als Erste Überarbeitung zugelassen angeben, wird die älteste vorhandene Version des Schemas zur Validierung verwendet. Wenn Sie keine Version als Letzte zulässige Version angeben, wird die neueste vorhandene Version des Schemas verwendet.
Nehmen wir als Beispiel das Schema S
, das an das Thema T
angehängt ist.
Das Schema S
hat die Überarbeitungs-IDs A
,B
, C
und D
, die in der richtigen Reihenfolge erstellt werden, wobei A
die erste oder älteste Version ist. Keines der Schemas ist identisch und es gibt keine Rollbacks eines vorhandenen Schemas.
Wenn Sie nur das Feld Erste Überarbeitung zugelassen auf
B
festlegen, werden Nachrichten, die nur dem SchemaA
entsprechen, abgelehnt. Nachrichten, die den SchemasB
,C
undD
entsprechen, werden dagegen akzeptiert.Wenn Sie das Feld Letzte Überarbeitung zulässig nur auf
C
setzen, werden Nachrichten akzeptiert, die den SchemasA
,B
undC
entsprechen, und Nachrichten, die nur dem SchemaD
entsprechen, werden abgelehnt.Wenn Sie für beide Felder Erste Überarbeitung zugelassen den Wert
B
und Letzte Überarbeitung zulässig aufC
festlegen, werden Nachrichten akzeptiert, die den SchemasB
undC
entsprechen.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 mit der Google Cloud Console, der gcloud CLI, der Pub/Sub API oder den Cloud-Clientbibliotheken erstellen.
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.
Wenn Sie ein Schema erstellen, gehen Sie so vor: `
- 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 Schemaüberarbeitungen erstellen, wie unter Schemaüberarbeitung per Commit 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 Binär aus.
Optional: Wenn das ausgewählte Schema Versionen enthält, verwenden Sie für Überarbeitungsbereich die Drop-down-Menüs für Erste Überarbeitung zugelassen und Letzte zulässige Überarbeitung.
Sie können beide Felder angeben, nur eines angeben oder die Standardeinstellungen entsprechend Ihren Anforderungen beibehalten.
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 für das Thema, das Sie erstellen.
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wird. 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.
--first-revision-id
und --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 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.
firstRevisionId
und 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 weggelassen, wenn sie nicht in der Anfrage 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 zur Pub/Sub C# API.
Einfach loslegen (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 zur 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 zur 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 zur 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 zur 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 Pub/Sub PHP 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 zur 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 zur 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 zum Validieren von Nachrichten verwendet wird. Wenn Sie Änderungen für das verwendete Schema geplant haben, können Sie im Allgemeinen einen Commit für eine neue Version durchführen 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, 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 Abschnitt Schema den Namen eines Schemas aus.
Aktualisieren Sie die anderen Felder nach Bedarf.
- Wenn Sie den Überarbeitungsbereich aktualisieren möchten, verwenden Sie für Überarbeitungsbereich die Drop-down-Menüs für Erste Überarbeitung und Letzte zulässige Überarbeitung.
Sie können beide Felder angeben, nur eines angeben oder die Standardeinstellungen entsprechend Ihren Anforderungen beibehalten.
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 von Nachrichten, die anhand des Schemas validiert wird. 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 die Methode 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 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.
firstRevisionId
und 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 nach der Aktualisierung 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.
Einfach loslegen (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 zur 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 zur 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 zur 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