In diesem Dokument erfahren Sie, wie Sie einen Commit für eine Schemaversion für Pub/Sub-Themen durchführen.
Hinweise
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor
) für Ihr Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie benötigen, um einen Commit für eine Schemaversion durchzuführen und Schemas zu verwalten.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die erforderlich sind, um einen Commit für eine Schemaversion durchzuführen und Schemas zu verwalten. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um einen Commit für eine Schemaversion durchzuführen und Schemas 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.
Schema überarbeiten
Sie können einen Commit für eine Schemaversion mit der Google Cloud Console, der gcloud CLI, der Pub/Sub API oder den Cloud-Clientbibliotheken durchführen.
Im Folgenden finden Sie einige Richtlinien für die Commit einer Schemaversion:
Sie können ein Schema innerhalb bestimmter Einschränkungen überarbeiten:
Bei Protokollzwischenspeicher-Schemas können Sie optionale Felder hinzufügen oder entfernen. Sie können keine anderen Felder hinzufügen oder löschen. Außerdem können Sie keine vorhandenen Felder bearbeiten.
Regeln zur Schemaauflösung finden Sie in der Avro-Dokumentation zu Avro-Schemas. Eine neue Version muss den Regeln so folgen, als wäre sie sowohl das Lese- als auch das Autorenschema.
Ein Schema kann maximal 20 Versionen gleichzeitig haben. Wenn Sie das Limit überschreiten, löschen Sie eine Schemaversion, bevor Sie eine neue erstellen.
Jeder Version ist eine eindeutige Überarbeitungs-ID zugeordnet. Die Versions-ID ist eine automatisch generierte achtstellige UUID.
Wenn Sie den Überarbeitungsbereich 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 Seite Pub/Sub-Schemas auf.
Klicken Sie auf die Schema-ID eines vorhandenen Schemas.
Die Seite Schemadetails für das Schema wird geöffnet.
Klicken Sie auf Überarbeitung erstellen.
Die Seite Schemaversion erstellen wird geöffnet.
Nehmen Sie die erforderlichen Änderungen vor.
Für das Beispielschema in Avro, das Sie unter Schema erstellen erstellt haben, können Sie beispielsweise ein zusätzliches optionales Feld namens
Price
hinzufü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 Nachricht testen, um eine Beispielnachricht zu testen.
Wählen Sie im Fenster Nachricht testen den Typ Nachrichtencodierung aus.
Geben Sie im Nachrichtentext eine Testnachricht ein.
Hier ist ein Beispiel für eine Nachricht für das Testschema. Wählen Sie in diesem Beispiel die Nachrichtencodierung als
JSON
aus.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
Klicken Sie auf Test.
Klicken Sie auf Commit, um das Schema zu speichern.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Wobei:
- SCHEMA_TYPE ist entweder
avro
oderprotocol-buffer
. - SCHEMA_DEFINITION ist ein
string
, der die Definition des Schemas enthält, die gemäß dem ausgewählten Schematyp formatiert ist.
Sie können die Schemadefinition auch in der Datei angeben:
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition-file=SCHEMA_DEFINITION_FILE
Wobei:
- SCHEMA_TYPE ist entweder
avro
oderprotocol-buffer
. - SCHEMA_DEFINITION_FILE ist ein
string
-Wert, der den Pfad zur Datei mit der Definition des Schemas enthält, formatiert gemäß dem ausgewählten Schematyp.
REST
Senden Sie eine POST-Anfrage wie die folgende, um einen Commit für eine Schemaversion durchzuführen:
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 }
Wobei:
- SCHEMA_TYPE ist entweder
AVRO
oderPROTOCOL_BUFFER
. - SCHEMA_DEFINITION ist ein String, der die Definition des Schemas 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 }
Wobei:
- REVISION_ID ist die vom Server generierte ID für die Version.
- REVISION_CREATE_TIME ist der ISO 8601-Zeitstempel für die Erstellung der Überarbeitung.
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.
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 PHP 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 PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Avro
Proto
Nachdem Sie einen Commit für eine Schemaversion durchgeführt haben, können Sie die Details der neuen Überarbeitung auf der Seite Schemas ansehen.