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, 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 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 Thema anhängen:
pubsub.schemas.attach
-
Commit einer 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 eines Schemas durchführen:
pubsub.schemas.rollback
-
Nachricht validieren:
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
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 es an ein Thema in einem anderen Projekt anhängen. Prüfen Sie, ob Sie die erforderlichen Berechtigungen für jedes Projekt haben.
Richtlinien für die Verknüpfung eines Schemas mit einem Thema
Wenn Sie ein Thema erstellen oder bearbeiten, können Sie ein Schema mit einem Thema verknüpfen. Im Folgenden finden Sie die Richtlinien zum Verknüpfen eines Schemas mit einem Thema:
Ein Schema lässt sich 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.
Wenn Sie ein Schema mit einem Thema verknüpfen, müssen Sie auch die Codierung der Nachrichten angeben, 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 über Überarbeitungen verfügt, müssen Nachrichten mit der Codierung übereinstimmen und anhand einer Version innerhalb des verfügbaren Bereichs validiert werden. Wenn sie nicht validiert werden, kann die Nachricht nicht veröffentlicht werden.
Überarbeitungen werden in umgekehrter chronologischer Reihenfolge (basierend auf dem Erstellungszeit) ausgeführt. 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 das Schema Versionen enthält, können Sie eine Teilmenge von zu verwendenden Versionen angeben. Wenn Sie keinen Bereich angeben, wird der gesamte Bereich für die Validierung verwendet.
Wenn Sie keine Version als Erste Überarbeitung zulässig angeben, wird die älteste vorhandene Version des Schemas zur Validierung verwendet. Wenn Sie keine Version als Letzte zulässige Überarbeitung angeben, wird die letzte vorhandene Version für das Schema verwendet.
Sehen wir uns das Schema S
an, das mit dem Thema T
verknüpft ist.
Für das Schema S
werden die Überarbeitungs-IDs A
, B
, C
und D
in der richtigen Reihenfolge erstellt, wobei A
die erste oder älteste Version ist. Keines der Schemas sind identisch oder Rollbacks eines vorhandenen Schemas sind nicht identisch.
Wenn Sie im Feld Erste Überarbeitung zulässig nur
B
festlegen, werden Nachrichten abgelehnt, die nur dem SchemaA
entsprechen. Nachrichten, die den SchemasB
,C
undD
entsprechen, werden akzeptiert.Wenn Sie das Feld Letzte zulässige Überarbeitung nur auf
C
setzen, werden Nachrichten, die den SchemasA
,B
undC
entsprechen, akzeptiert und Nachrichten, die nur dem SchemaD
entsprechen, abgelehnt.Wenn Sie beide Felder für Erste Überarbeitung zugelassen auf
B
und für Letzte zulässige Überarbeitung aufC
setzen, werden Nachrichten akzeptiert, die den SchemasB
undC
entsprechen.Sie können auch für die erste und letzte Überarbeitung dieselbe Überarbeitungs-ID festlegen. In diesem Fall werden nur Nachrichten akzeptiert, die dieser Version entsprechen.
Schema erstellen und verknüpfen, wenn Sie ein Thema erstellen
Sie können ein Thema mit einem Schema mithilfe der Google Cloud Console, der gcloud CLI, der Pub/Sub API oder der 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 zur Benennung von Themen finden Sie in den Richtlinien.
Klicken Sie auf das Kästchen Schema verwenden.
Behalten Sie für die übrigen Felder die Standardeinstellungen bei.
Sie können ein Schema erstellen oder ein vorhandenes verwenden.
Wenn Sie ein Schema erstellen, gehen Sie so vor: `
- Wählen Sie für Pub/Sub-Schema auswählen die Option Neues Schema erstellen aus.
Die Seite Schema erstellen wird auf einem sekundären Tab angezeigt.
Führen Sie die Schritte unter Schema erstellen aus.
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 Schema, das Sie gerade erstellt haben, hat eine Versions-ID. Sie können zusätzliche Schemaversionen erstellen, wie unter Commit für Schemaversion durchführen 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 zulässige Überarbeitung und Letzte zulässige Überarbeitung.
Sie können je nach Ihren Anforderungen beide Felder, nur eines davon 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
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 wurden. Dieser Wert muss auf
JSON
oderBINARY
festgelegt werden. - SCHEMA_ID ist die ID eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Version, die validiert 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 die Methode projects.topics.create
, um ein Thema zu erstellen:
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 lautet:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert werden. Hier muss entweder
JSON
oderBINARY
festgelegt werden. - FIRST_REVISION_ID ist die ID der ältesten Version, die validiert 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 wurden.
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, zu entfernen oder den Versionsbereich zum Validieren von Nachrichten zu aktualisieren. Allgemein gilt: Wenn Änderungen für das verwendete Schema geplant sind, können Sie 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, 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 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 Abschnitt Schema den Namen eines Schemas aus.
Aktualisieren Sie die anderen Felder nach Bedarf.
- Wenn Sie den Versionsbereich aktualisieren möchten, verwenden Sie für Überarbeitungsbereich die Drop-down-Menüs für Erste zulässige Überarbeitung und Letzte zulässige Überarbeitung.
Sie können je nach Ihren Anforderungen beide Felder, nur eines davon oder die Standardeinstellungen 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 des Themas, das Sie erstellen.
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Dieser Wert muss auf
JSON
oderBINARY
festgelegt werden. - SCHEMA_NAME ist der Name eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Version, die validiert 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 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 lautet:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert werden. Hier muss entweder
JSON
oderBINARY
festgelegt werden. - FIRST_REVISION_ID ist die ID der ältesten Version, die validiert 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" } }
Weder firstRevisionId
noch 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 mit einem Schema in einem Thema veröffentlichen
- Schemadefinition überprüfen
- Nachricht für ein Schema validieren