In diesem Dokument wird beschrieben, wie Sie ein Thema in einer Schemaregistrierung erstellen. Ein Thema ist ein logischer Container für verschiedene Versionen eines Schemas. Wenn Sie ein Subjekt zum ersten Mal erstellen, erstellen Sie auch die erste Version des Schemas für dieses Subjekt.
Sie haben folgende Möglichkeiten, ein Thema zu erstellen:
Implizit (Standard): Das Standardverhalten für viele Producer- und Consumer-Clients besteht darin, automatisch ein Schema zu erstellen, das noch nicht vorhanden ist, wenn der Client eine Verbindung herstellt. Das Thema und die Version, die auf das Schema verweisen, werden ebenfalls automatisch erstellt. Das ist zwar praktisch, kann aber zu potenziellen Inkonsistenzen bei den Daten führen, wenn mehrere Clients gleichzeitig Versionen erstellen.
Explizit (empfohlen): Bei dieser Methode muss jedes Schema in der Registry erstellt werden, bevor ein Producer- oder Consumer-Client es verwenden kann. Sie können dazu die Google Cloud Console oder die Managed Kafka API verwenden.
Dieses Verhalten muss in den Clienteinstellungen konfiguriert werden. Weitere Informationen finden Sie in der Dokumentation zu Ihrer Clientbibliothek für Serialisierung oder Deserialisierung.
Hinweis
Erstellen Sie eine Schema-Registry, falls Sie noch keine haben.
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Bearbeiter der verwalteten Kafka-Schemaregister (roles/managedkafka.schemaRegistryEditor) für Ihr Projekt oder Schemaregister zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen eines Themas 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 Erstellen eines Subjekts erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen eines Themas erforderlich:
-
Erteilen Sie diese Berechtigung im übergeordneten Kontext oder im Standardkontext:
managedkafka.versions.create
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Subjekt oder erste Version eines Schemas erstellen
Wenn Sie ein Thema erstellen, erstellen Sie auch die erste Version. Mit dieser ersten Version wird ein neues Schema erstellt oder auf ein vorhandenes Schema verwiesen.
Console
Rufen Sie in der Google Cloud Console die Seite Schema-Registries auf.
Klicken Sie auf den Namen der Schemaregistrierung, in der Sie ein Thema erstellen möchten.
Klicken Sie auf Fach erstellen.
Geben Sie unter Name des Themas einen eindeutigen Namen für das Thema ein.
Der Name muss mit einem Buchstaben beginnen und darf nur Buchstaben, Ziffern und die folgenden Sonderzeichen enthalten: Bindestrich (
-), Punkt (.), Unterstrich (_), Tilde (~), Prozentzeichen (%) oder Pluszeichen (+). Der Name eines Themas ist unveränderlich.Weitere Informationen zum Auswählen eines Betreffnamens finden Sie unter Strategien für die Betreffbenennung.
Wählen Sie unter Kontext einen Kontext aus oder erstellen Sie einen neuen. Kontexte fungieren wie Namespaces, um Ihre Themen und Schemas zu organisieren und eine Isolation zwischen verschiedenen Gruppen zu ermöglichen.
Wenn Sie einen vorhandenen Kontext verwenden möchten, wählen Sie ihn aus der Liste Kontext aus. Der Standardkontext wird als
(default context)angezeigt.So erstellen Sie einen neuen Kontext:
Wählen Sie in der Liste Kontext die Option Kontext erstellen aus.
Geben Sie im Feld Kontextname einen Namen für den Kontext ein.
Der Name muss mit einem Buchstaben beginnen und darf nur Buchstaben, Ziffern und die folgenden Sonderzeichen enthalten: Bindestrich (
-), Punkt (.), Unterstrich (_), Tilde (~), Prozentzeichen (%) oder Pluszeichen (+). Der Name eines Kontexts ist unveränderlich.Klicken Sie auf Speichern.
Wählen Sie für Schematyp die Option Avro oder Protocol Buffer aus.
Geben Sie im Feld Schemadefinition die Schemadefinition ein. Das Format des Schemas muss dem Schematyp entsprechen. Die Namen von Schemafeldern dürfen keine vertraulichen Informationen wie personenidentifizierbare Informationen oder Sicherheitsdaten enthalten.
Wenn Ihr Schema Datenstrukturen verwendet oder von Datenstrukturen abhängt, die in anderen Schemas in der Schema-Registry definiert sind, führen Sie die folgenden Schritte aus:
- Klicken Sie auf Schemareferenz hinzufügen.
- Geben Sie im Feld Referenzname den Referenznamen des referenzierten Schemas ein.
- Wählen Sie in der Liste Betreff den Betreff aus, der das referenzierte Schema enthält.
- Wählen Sie in der Liste Version die Versionsnummer des referenzierten Schemas aus.
- Klicken Sie auf OK.
Wiederholen Sie diese Schritte für jedes referenzierte Schema.
Klicken Sie auf Erstellen.
REST
Die Anfrage muss mit einem Zugriffstoken im Header Authorization authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab:
gcloud auth application-default print-access-token.
In den folgenden REST API-Beispielen wird die erste Version eines Themas erstellt.
Wenn Sie ein Thema im Standardkontext erstellen möchten, senden Sie eine POST-Anfrage an den angegebenen URI mit der Methode projects.locations.schemaRegistries.subjects.versions.create:
POST https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID/versions
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json
Wenn Sie einen bestimmten Kontext verwenden, können Sie ihn alternativ mit der Methode projects.locations.schemaRegistries.contexts.subjects.versions.create in den URI der Subjektsammlung einfügen:
POST https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID/versions
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json
Ersetzen Sie Folgendes:
PROJECT_ID (erforderlich): Ihre Google Cloud-Projekt-ID.
LOCATION (erforderlich): die Google Cloud Region, in der die Schema-Registry vorhanden ist.
REGISTRY_ID (erforderlich): Die ID der Zielschemaregistrierung.
CONTEXT_ID (optional): Die ID des Kontexts, der das Subjekt enthält. Verwenden Sie
.für den Standardkontext, wenn Sie ihn explizit angeben möchten. Andernfalls lassen Sie/contexts/CONTEXT_IDweg, um den Standardkontext implizit zu verwenden.Er muss mit einem Buchstaben beginnen und darf nur Buchstaben, Ziffern und die folgenden Sonderzeichen enthalten: Bindestriche
-, Punkte., Unterstriche_, Tilden~, Prozentzeichen%oder Pluszeichen+. Der Name eines Kontexts kann nicht geändert werden.SUBJECT_ID (erforderlich): die ID des neuen Themas, unter dem die erste Version erstellt werden soll.
Er muss mit einem Buchstaben beginnen und darf nur Buchstaben, Ziffern und die folgenden Sonderzeichen enthalten: Bindestriche
-, Punkte., Unterstriche_, Tilden~, Prozentzeichen%oder Pluszeichen+. Der Name eines Subjekts kann nicht geändert werden.
Anfragetext:
Fügen Sie dem Anfragetext ein JSON-Objekt mit den Schemadetails hinzu:
{
"schema": "YOUR_SCHEMA_DEFINITION_STRING",
"schema_type": "AVRO" | "PROTOBUF", // Optional, defaults to AVRO
"references": [ // Optional
{
"name": "REFERENCE_NAME",
"subject": "REFERENCED_SUBJECT_ID",
"version": REFERENCED_VERSION_NUMBER
}
// ... more references
]
// "version": VERSION_NUMBER, // Optional: Usually omitted, let service assign next
// "id": SCHEMA_ID, // Optional: Usually omitted, let service assign or reuse
}
Ersetzen Sie Folgendes:
YOUR_SCHEMA_DEFINITION_STRING(erforderlich): Ein String mit der Nutzlast der Schemadefinition.Die Namen der Schematafelder dürfen keine vertraulichen Informationen wie personenidentifizierbare Informationen oder Sicherheitsdaten enthalten.
schemaType(optional): Der Typ des Schemas. KannAVROoderPROTOBUFsein. Wenn keine Angabe gemacht wird, ist der StandardwertAVRO.references(optional): Ein Array von Objekten, die alle Schemas definieren, auf die in diesem Schema verwiesen wird.REFERENCE_NAME: Der Name, der verwendet wird, um auf das andere Schema in der Definition dieses Schemas zu verweisen.REFERENCED_SUBJECT_ID: die Subjekt-ID des Schemas, auf das verwiesen wird.REFERENCED_VERSION_NUMBER: Die spezifische Versionsnummer des Schemas des referenzierten Subjekts.
versionId,schemaId: Optionale Felder, die normalerweise vom Dienst verarbeitet werden. Bei der ersten Version eines Themas istversionId„1“.
Wenn die Anfrage erfolgreich ist und das Schema gültig ist und die Kompatibilitätsprüfungen besteht, sofern konfiguriert, gibt die API den Statuscode 200 OK zurück. Der Antworttext enthält die Schema-ID, die von der erstellten Version verwendet wird. Diese unterscheidet sich von der Versions-ID.
Weitere Informationen finden Sie in der REST API-Dokumentation.
Nächste Schritte
- Weitere Informationen zur Schemaregistrierung
- Themen auflisten
- Neue Schemaversion registrieren
- Betreff löschen