In diesem Dokument erfahren Sie, wie Sie eine Schemaversion für Pub/Sub-Themen festschreiben.
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 Übertragen einer Schemaüberarbeitung 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 Übertragen einer Schemaüberarbeitung und zum Verwalten von Schemas erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um eine Schemaversion zu übernehmen und Schemas 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.
Schema überarbeiten
Sie können eine Schemaüberarbeitung mit derGoogle Cloud Console, der gcloud CLI, der Pub/Sub API oder den Cloud-Clientbibliotheken festschreiben.
Im Folgenden finden Sie einige Richtlinien zum Übertragen einer Schemaüberarbeitung:
Sie können ein Schema unter bestimmten Einschränkungen überarbeiten:
Bei Protocol Buffer-Schemas können Sie optionale Felder hinzufügen oder entfernen. Sie können keine weiteren Felder hinzufügen oder löschen. Sie können auch keine vorhandenen Felder bearbeiten.
Informationen zu Avro-Schemas finden Sie in der Avro-Dokumentation. Eine neue Version muss den Regeln entsprechen, als wäre sie sowohl das Leser- als auch das Schreibschema.
Ein Schema kann maximal 20 Versionen gleichzeitig haben. Wenn Sie das Limit überschreiten, löschen Sie eine Schemaüberarbeitung, bevor Sie eine weitere erstellen.
Jeder Überarbeitung ist eine eindeutige Überarbeitungs-ID zugewiesen. Die Revisions-ID ist eine automatisch generierte achtstellige UUID.
Wenn Sie den Revisionsbereich oder die Revision 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 Schemaüberarbeitung:
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 Revision erstellen.
Die Seite Schemaüberarbeitung 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 so 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 die Nachrichten auch anhand des Schemas 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 Nachrichtentext eine Testnachricht ein.
Hier sehen Sie beispielsweise einen Beispieltext 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 Testen.
Klicken Sie auf Commit, um das Schema zu speichern.
gcloud
gcloud pubsub schemas commit SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Hierbei gilt:
- 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 einer 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
, der den Pfad zur Datei mit der Definition des Schemas enthält, die gemäß dem ausgewählten Schematyp formatiert ist.
REST
Senden Sie zum Committen einer Schemaüberarbeitung 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
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 Überarbeitung.
- REVISION_CREATE_TIME ist der ISO 8601-Zeitstempel, zu dem die Überarbeitung erstellt wurde.
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 eine Schemaüberarbeitung übernommen haben, können Sie die Details der neuen Überarbeitung auf der Seite Schemas aufrufen.
Nächste Schritte
- Schemaüberarbeitung löschen
- Überarbeitungen eines Schemas auflisten
- Schemaüberarbeitung rückgängig machen