In diesem Dokument erfahren Sie, wie Sie für Pub/Sub-Themen
Hinweise
Erforderliche Rollen und Berechtigungen
So erhalten Sie die Berechtigungen, die Sie zum Commit einer Schemaversion und zum Verwalten von Schemas benötigen:
bitten Sie Ihren Administrator, Ihnen
IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor
) für Ihr Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Commit einer Schemaversion 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 ein Commit für eine Schemaversion durchzuführen und Schemas zu verwalten:
-
Schema erstellen:
pubsub.schemas.create
-
Schema an Thema anhängen:
pubsub.schemas.attach
-
Führen Sie einen Commit für eine Schemaversion durch:
pubsub.schemas.commit
-
So löschen Sie ein Schema oder eine Schemaversion:
pubsub.schemas.delete
-
Rufen Sie ein Schema oder eine Schemaversion ab:
pubsub.schemas.get
-
Schemas auflisten:
pubsub.schemas.list
-
Schemaversionen auflisten:
pubsub.schemas.listRevisions
-
Rollback eines Schemas durchführen:
pubsub.schemas.rollback
-
Validieren Sie eine Nachricht:
pubsub.schemas.validate
-
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. Sie können ein Schema in einem Projekt erstellen und an ein Thema in einem anderen Projekt anhängen. Achten Sie darauf, dass Sie die erforderlichen Berechtigungen für für jedes Projekt.
Schema überarbeiten
Sie können einen Commit für eine Schemaversion durchführen, indem Sie die Google Cloud Console, gcloud CLI, Pub/Sub API Cloud-Clientbibliotheken.
Im Folgenden finden Sie einige Richtlinien für das Commit einer Schemaversion:
Sie können ein Schema im Rahmen bestimmter Einschränkungen überarbeiten:
Für Protokollzwischenspeicherschemas können Sie optionale Felder hinzufügen oder entfernen. Sie können keine anderen Felder hinzufügen oder löschen. Sie können auch keine vorhandenen Feld.
Informationen zu Avro-Schemas finden Sie in der Avro-Dokumentation finden Sie Regeln zur Schemaauflösung. Eine neue Überarbeitung muss die folgenden Regeln erfüllen: obwohl es sowohl das Leser- als auch das Schreiberschema ist.
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 ID zugeordnet. Versions-ID ist eine automatisch generierte achtstellige UUID.
Wenn Sie den Versionsbereich oder die Version eines Schemas aktualisieren, das für Themenvalidierung überprüft, 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 in Schema erstellen, können Sie eine weitere optionale mit dem Namen
Price
:{ "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 unter Nachrichtentext eine Testnachricht ein.
Hier ist zum Beispiel eine Beispielnachricht für das Testschema. Wählen Sie in diesem Beispiel als Nachrichtencodierung
JSON
aus.{"ProductName":"GreenOnions", "SKU":34543, "Price":12, "InStock":true}
Klicken Sie auf Test.
Klicken Sie auf Commit durchführen, 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 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 zum mit der Definition des Schemas, die gemäß dem gewählten Schematyp.
REST
Senden Sie eine POST-Anfrage wie die folgende, um ein 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 }
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 Version.
- REVISION_CREATE_TIME ist der ISO 8601-Zeitstempel, zu dem der Überarbeitung wurde erstellt.
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 Version auf der Seite Schemas