In diesem Dokument erfahren Sie, wie Sie Schemas für Pub/Sub-Themen erstellen.
Hinweise
Führen Sie vor dem Erstellen eines Schemas die folgenden Schritte aus:
- Weitere Informationen zu Themen und zum Veröffentlichungsworkflow
- Funktionsweise von Pub/Sub-Schemas
- Thema erstellen
Erforderliche Rollen und Berechtigungen
Um die Berechtigungen zu erhalten, die Sie zum Erstellen und 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 Berechtigungen zum Erstellen und Verwalten von Schemas erforderlich. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen und Verwalten von Schemas erforderlich:
-
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 erstellen
Sie können ein Schema mit der Google Cloud Console, der gcloud CLI, die Pub/Sub API oder die Cloud-Clientbibliotheken. Im Folgenden finden Sie einige Richtlinien zum Erstellen eines Schemas:
Damit ein Schema mit Pub/Sub funktioniert, müssen Sie nur Ein Typ der obersten Ebene. Anweisungen importieren, die auf andere Typen verweisen werden nicht unterstützt.
Sie können dasselbe Schema mit mehreren Themen verknüpfen.
Sie können manuell testen, ob eine Nachricht mit einem Schema validiert wird.
Console
So erstellen Sie ein Schema:
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Schemas auf.
Klicken Sie auf Schema erstellen.
Geben Sie im Feld Schema-ID eine ID für Ihr Schema ein.
Richtlinien zur Benennung von Schemas finden Sie unter Richtlinien für die Benennung von Themen, Abos oder Snapshots.
Wählen Sie als Schematyp entweder Avro oder den Protokollpuffer aus.
Geben Sie im Feld Schemadefinition den Avro- oder Protocol Buffer ein. die Definition für Ihr Schema.
Hier ist als Beispiel ein Beispielschema in Avro.
{ "type": "record", "name": "Avro", "fields": [ { "name": "ProductName", "type": "string", "default": "" }, { "name": "SKU", "type": "int", "default": 0 }, { "name": "InStock", "type": "boolean", "default": false } ] }
Optional: Klicken Sie auf Definition validieren, um zu prüfen, ob die Schemadefinition ist richtig.
Bei der Validierungsprüfung wird nicht die Kompatibilität des Schemas mit die zu veröffentlichenden Nachrichten. Testen Sie Nachrichten im nächsten Schritt.
Optional: Sie können testen, ob Nachrichten mit dem richtigen Schema veröffentlicht werden.
Klicken Sie auf Nachricht testen.
Wählen Sie im Fenster Nachricht testen den Typ Nachrichtencodierung aus.
Geben Sie unter Nachrichtentext eine Testnachricht ein.
Klicken Sie auf Test.
Hier ist zum Beispiel eine Beispielnachricht für das Testschema. Wählen Sie in diesem Beispiel als Nachrichtencodierung
JSON
aus.{"ProductName":"GreenOnions", "SKU":34543, "InStock":true}
Schließen Sie die Seite mit der Testnachricht.
Klicken Sie auf Erstellen, um das Schema zu speichern.
gcloud
gcloud pubsub schemas create 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 create 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 zum Erstellen eines Schemas eine POST-Anfrage wie die diese:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID 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 }
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.
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.
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
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 zur Pub/Sub C# API.
Avro
Proto
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
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
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
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 Pub/Sub PHP 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
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 zur Pub/Sub Ruby API.
Avro
Proto
Nachdem ein Schema erstellt wurde, können Sie Details zum Schema finden Sie in der Schemas.
Sie können das Schema mit einem Thema verknüpfen.