In diesem Dokument erfahren Sie, wie Sie Schemas für Pub/Sub-Themen zuordnen.
Hinweise
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor
) für Ihr Projekt zuzuweisen, 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 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 erforderlich, um Schemas zu verknüpfen und zu verwalten:
-
Schema erstellen:
pubsub.schemas.create
-
Schema an Thema anhängen:
pubsub.schemas.attach
-
Schemaüberarbeitung übernehmen:
pubsub.schemas.commit
-
Schema oder Schemaüberarbeitung löschen:
pubsub.schemas.delete
-
Schema oder Schemaversionen abrufen:
pubsub.schemas.get
-
Schemas auflisten:
pubsub.schemas.list
-
Schemaüberarbeitungen auflisten:
pubsub.schemas.listRevisions
-
Schema zurücksetzen:
pubsub.schemas.rollback
-
Nachricht validieren:
pubsub.schemas.validate
-
So 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 Rollen und Berechtigungen zuweisen. Sie können ein Schema in einem Projekt erstellen und es an ein Thema anhängen, das sich in einem anderen Projekt befindet. 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. Im Folgenden finden Sie die Richtlinien für das 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 empfängt, diesem Schema entsprechen.
Wenn Sie ein Schema mit einem Thema verknüpfen, müssen Sie auch die Codierung der zu veröffentlichenden Nachrichten als
BINARY
oderJSON
angeben. Wenn Sie JSON mit einem Avro-Schema verwenden, beachten Sie die Codierungsregeln für Unions.Wenn ein Schema, das einem Thema zugeordnet ist, Revisionen hat, müssen Nachrichten mit der Codierung übereinstimmen und anhand einer Revision innerhalb des verfügbaren Bereichs validiert werden. Wenn sie nicht validiert werden, kann die Nachricht nicht veröffentlicht werden.
Revisionen werden in umgekehrter chronologischer Reihenfolge ausprobiert, die auf der Erstellungszeit basiert. Informationen zum Erstellen einer Schemaversion finden Sie unter Schemaversion übernehmen.
Validierungslogik für ein Nachrichtenschema
Wenn Sie ein Schema mit einem Thema verknüpfen und das Schema Revisionen hat, können Sie einen Teilbereich der zu verwendenden Revisionen angeben. Wenn Sie keinen Bereich angeben, wird der gesamte Bereich für die Validierung verwendet.
Wenn Sie keine Überarbeitung als First revision allowed (Erste zulässige Überarbeitung) angeben, wird die älteste vorhandene Überarbeitung des Schemas für die Validierung verwendet. Wenn Sie keine Revision als Last revision allowed (Letzte zulässige Revision) angeben, wird die neueste vorhandene Revision für das Schema verwendet.
Nehmen wir das Beispiel des Schemas S
, das dem Thema T
zugeordnet ist.
Das Schema S
hat die Versions-IDs A
,B
, C
und D
, die in der Reihenfolge erstellt wurden, wobei A
die erste oder älteste Version ist. Keines der Schemas ist identisch mit einem anderen oder ein Rollback eines vorhandenen Schemas.
Wenn Sie nur das Feld First revision allowed auf
B
festlegen, werden Nachrichten, die nur dem SchemaA
entsprechen, abgelehnt, während Nachrichten, die den SchemasB
,C
undD
entsprechen, akzeptiert werden.Wenn Sie nur das Feld Last revision allowed auf
C
festlegen, werden Nachrichten, die den SchemasA
,B
undC
entsprechen, akzeptiert. Nachrichten, die nur dem SchemaD
entsprechen, werden abgelehnt.Wenn Sie First revision allowed auf
B
und Last revision allowed aufC
setzen, werden Nachrichten akzeptiert, die den SchemasB
undC
entsprechen.Sie können auch die erste und die letzte Überarbeitung auf dieselbe Überarbeitungs-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 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 zum Benennen eines Themas finden Sie in den Richtlinien.
Klicken Sie das Kästchen für Schema verwenden an.
Behalten Sie für die restlichen Felder die Standardeinstellungen 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 auf 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 Nachrichten-Codierung JSON oder Binär aus.
Das Schema, das Sie gerade erstellt haben, hat eine Revisions-ID. Sie können weitere Schemaversionen erstellen, wie unter Schemaversion übernehmen 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 Nachrichten-Codierung JSON oder Binär aus.
Optional: Wenn das ausgewählte Schema Überarbeitungen hat, verwenden Sie für Überarbeitungsbereich die Drop-down-Menüs für 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 restlichen 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, dem ein zuvor erstelltes 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 werden. Dieser Wert muss entweder auf
JSON
oderBINARY
gesetzt werden. - SCHEMA_ID ist die ID eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Revision, die validiert werden soll.
- LAST_REVISION_ID ist die ID der neuesten Revision, 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 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 werden. Muss entweder auf
JSON
oderBINARY
festgelegt sein. - FIRST_REVISION_ID ist die ID der ältesten Revision, die validiert werden soll.
- LAST_REVISION_ID ist die ID der neuesten Revision, 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 ausgelassen, 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 Bereich der Versionen zu aktualisieren, der zum Validieren von Nachrichten verwendet wird. Wenn Sie Änderungen am verwendeten Schema planen, können Sie im Allgemeinen eine neue Revision committen und den Bereich der für das Thema verwendeten Revisionen aktualisieren.
Sie können ein Schema, das einem Thema zugeordnet ist, über dieGoogle Cloud -Konsole, die gcloud CLI, die Pub/Sub API oder die 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 Bereich 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 zulässige Überarbeitung und Letzte zulässige Überarbeitung.
Sie können beide Felder angeben, nur eines 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 werden. Dieser Wert muss entweder auf
JSON
oderBINARY
gesetzt werden. - SCHEMA_NAME ist der Name eines vorhandenen Schemas.
- FIRST_REVISION_ID ist die ID der ältesten Revision, die validiert werden soll.
- LAST_REVISION_ID ist die ID der neuesten Revision, 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 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 werden. Muss entweder auf
JSON
oderBINARY
festgelegt sein. - FIRST_REVISION_ID ist die ID der ältesten Revision, die validiert werden soll.
- LAST_REVISION_ID ist die ID der neuesten Revision, 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
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.
Nächste Schritte
- Schemaüberarbeitung übertragen
- Nachrichten in einem Thema mit einem Schema veröffentlichen
- Schemadefinition validieren
- Nachricht anhand eines Schemas validieren