In diesem Dokument erfahren Sie, wie Sie eine Schemaversion für Pub/Sub-Themen festschreiben.
Hinweis
- Informationen zur Funktionsweise von Pub/Sub-Schemas
- Schema erstellen.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die
Pub/Sub Editor (roles/pubsub.editor) IAM-Rolle für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die
Sie zum Festschreiben einer Schemaversion und zum 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 Festschreiben einer Schemaversion und zum Verwalten von Schemas erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um eine Schemaversion festzuschreiben und Schemas zu verwalten:
-
Schema erstellen:
pubsub.schemas.create -
Schema an Thema anhängen:
pubsub.schemas.attach -
Schemaversion festschreiben:
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 -
Schema zurücksetzen:
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
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Sie können Rollen und Berechtigungen für Prinzipale wie Nutzer, Gruppen, Domains oder Dienstkonten gewähren. 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.
Schema überarbeiten
Sie können eine Schemaversion über die Google Cloud Console, die gcloud CLI, die Pub/Sub API, oder die Cloud-Clientbibliotheken festschreiben.
Hier sind einige Richtlinien zum Festschreiben einer Schemaversion:
Sie können ein Schema innerhalb bestimmter Einschränkungen überarbeiten:
Bei Protocol Buffer-Schemas können Sie optionale Felder hinzufügen oder entfernen. Andere Felder können nicht hinzugefügt oder gelöscht werden. Außerdem können Sie keine vorhandenen Felder bearbeiten.
Informationen zu Regeln für die Schemaauflösung für Avro-Schemas finden Sie in der Avro-Dokumentation. Eine neue Version muss den Regeln so folgen, als wäre sie sowohl das Leserschema als auch das Schreiberschema.
Ein Schema kann maximal 20 Versionen gleichzeitig haben. Wenn Sie das Limit überschreiten, löschen Sie eine Schemaversion, bevor Sie eine weitere erstellen.
Jeder Version ist eine eindeutige Versions-ID zugeordnet. Die Versions-ID ist eine automatisch generierte achtstellige UUID.
Wenn Sie den Versionsbereich oder die Version eines Schemas aktualisieren, das für die Themenvalidierung verwendet wird, kann es einige Minuten dauern, bis die Änderungen wirksam werden.
Console
So erstellen Sie eine Schemaversion:
Rufen Sie in der Google Cloud Console die Pub/Sub-Schemas Seite auf.
Klicken Sie auf die Schema-ID eines vorhandenen Schemas.
Die Seite Schemadetails für das Schema wird geöffnet.
Klicken Sie auf Version erstellen.
Die Seite Schemaversion erstellen wird geöffnet.
Nehmen Sie die gewünschten Änderungen vor.
Für das in Schema erstellen erstellte Beispielschema in Avro können Sie beispielsweise so ein zusätzliches optionales Feld namens
Pricehinzufügen:{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false }, { "name": "Price", "type": "double", "default": "0.0" } ] }Klicken Sie auf Definition validieren , um zu prüfen, ob die Schemadefinition korrekt ist.
Sie können auch die Nachrichten für das Schema validieren.
Klicken Sie auf Testnachricht , um eine Beispielnachricht zu testen.
Wählen Sie im Fenster Testnachricht einen Typ für die Nachrichtenkodierung aus.
Geben Sie im Feld Nachrichtentext eine Testnachricht ein.
Hier ist beispielsweise eine Beispielnachricht für das Testschema. Wählen Sie in diesem Beispiel
JSONals Nachrichtenkodierung aus.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}Klicken Sie auf Testen.
Klicken Sie auf Festschreiben , um das Schema zu speichern.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Hierbei gilt:
- SCHEMA_TYPE ist entweder
avrooderprotocol-buffer. - SCHEMA_DEFINITION ist ein
string, der die Definition von dem Schema enthält, die gemäß dem ausgewählten Schematyp formatiert ist.
Sie können die Schemadefinition auch in einer Datei angeben:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Hierbei gilt:
- SCHEMA_TYPE ist entweder
avrooderprotocol-buffer. - SCHEMA_DEFINITION_FILE ist ein
string, der den Pfad zur Datei mit der Definition des Schemas enthält, die gemäß dem ausgewählten Schematyp formatiert ist.
REST
Senden Sie zum Festschreiben einer Schemaversion eine POST-Anfrage wie die folgende:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID:commit Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
Geben Sie im Anfragetext die folgenden Felder an:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE "name": SCHEMA_NAME }
Hierbei gilt:
- SCHEMA_TYPE ist entweder
AVROoderPROTOCOL_BUFFER. - SCHEMA_DEFINITION ist ein String, der die Definition von dem Schema enthält, formatiert gemäß dem ausgewählten Schematyp.
- SCHEMA_NAME ist der Name eines vorhandenen Schemas.
Der Antworttext sollte eine JSON-Darstellung einer Schemaressource enthalten. Beispiel:
{
"name": SCHEMA_NAME,
"type": SCHEMA_TYPE,
"definition": SCHEMA_DEFINITION
"revisionId": REVISION_ID
"revisionCreateTime": REVISION_CREATE_TIME
}
Hierbei gilt:
- REVISION_ID ist die vom Server generierte ID für die Version.
- REVISION_CREATE_TIME ist der ISO 8601-Zeitstempel, zu dem die Version erstellt wurde.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (Version 2) verwendet. Wenn Sie noch die Version 1 verwenden, finden Sie im Migrationsleitfaden Informationen zur Migration zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Veraltete Codebeispiele.
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.
Avro
Proto
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.
Avro
Proto
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.
Avro
Proto
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.
Avro
Proto
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Avro
Proto
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Avro
Proto
Nachdem Sie eine Schemaversion festgeschrieben haben, können Sie die Details der neuen Version auf der Seite Schemas aufrufen.