In diesem Dokument wird beschrieben, wie Sie ein Subjekt in einer Schema-Registry erstellen. Ein Subjekt ist ein logischer Container für verschiedene Versionen eines Schemas. Wenn Sie zum ersten Mal ein Subjekt erstellen, erstellen Sie auch die erste Version des Schemas für dieses Subjekt.
Sie haben folgende Möglichkeiten, ein Subjekt zu erstellen:
Implizit (Standard): Das Standardverhalten für viele Producer- und Consumer-Clients besteht darin, automatisch ein Schema zu erstellen, das nicht vorhanden ist, wenn sich der Client verbindet. Das Subjekt und die Version, die auf das Schema verweisen, werden ebenfalls automatisch erstellt. Das ist praktisch, kann aber zu potenziellen Inkonsistenzen in den Daten führen, wenn mehrere Clients gleichzeitig Versionen erstellen.
Explizit (empfohlen): Bei dieser Methode muss jedes Schema in der Registry erstellt werden, bevor es von einem Producer- oder Consumer-Client verwendet werden kann. Sie können dazu Google Cloud dieConsole oder die Managed Kafka API verwenden.
Dieses Verhalten muss in den Clienteinstellungen konfiguriert werden. Weitere Informationen finden Sie in der Dokumentation zur Clientbibliothek für Serialisierung oder Deserialisierung.
Hinweis
Informationen zur Schemaübersicht
Erstellen Sie eine Schema-Registry falls Sie noch keine haben.
Informationen zu Schemareferenzen
Erforderliche Rollen und Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die
Managed Kafka Schema Registry Editor (roles/managedkafka.schemaRegistryEditor) IAM-Rolle für Ihr Projekt oder Ihre Schema-Registry zu erteilen,
um die Berechtigungen zu erhalten, die
Sie zum Erstellen eines Subjekts 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, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen eines Subjekts erforderlich:
-
Erteilen Sie diese Berechtigung für den übergeordneten Kontext oder den 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 Subjekt 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 Schema-Registry, in der Sie ein Subjekt erstellen möchten.
Klicken Sie auf Subjekt erstellen.
Geben Sie unter Subjektname einen eindeutigen Namen für das Subjekt 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 Subjekts kann nicht geändert werden.Weitere Informationen zur Auswahl eines Subjektnamens finden Sie unter Strategien für die Benennung von Subjekten.
Wählen Sie unter Kontext einen Kontext aus oder erstellen Sie einen neuen Kontext. Kontexte fungieren wie Namespaces, um Ihre Subjekte 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 in 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 kann nicht geändert werden.Klicken Sie auf Speichern.
Wählen Sie unter Schematyp entweder Avro oder Protokollpuffer aus.
Geben Sie im Feld Schemadefinition die Schemadefinition ein. Das Format des Schemas muss mit dem Schematyp übereinstimmen. Die Namen der Schemafelder 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 Subjekt das Subjekt aus, das 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.
Mit den folgenden REST API-Beispielen wird die erste Version eines Subjekts erstellt.
Wenn Sie ein Subjekt im Standardkontext erstellen möchten, senden Sie eine POST Anfrage an den
angegebenen URI mit der
projects.locations.schemaRegistries.subjects.versions.create
Methode:
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, fügen Sie den Kontext alternativ mit der
projects.locations.schemaRegistries.contexts.subjects.versions.create
Methode in den URI der Subjektsammlung ein:
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 sich die Schema-Registry befindet.
REGISTRY_ID (erforderlich): die ID der Ziel-Schema Registry.
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.Der Name 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 für das neue Subjekt unter dem die erste Version erstellt werden soll.
Der Name 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 im Anfragetext ein JSON-Objekt mit den Schemadetails ein:
{
"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 Schemafelder dürfen keine vertraulichen Informationen wie personenidentifizierbare Informationen oder Sicherheitsdaten enthalten.
schemaType(optional): der Typ des Schemas. KannAVROoderPROTOBUFsein. Wenn nichts angegeben ist, wird standardmäßigAVROverwendet.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 in der Definition dieses Schemas auf das andere Schema 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. Für die erste Version eines Subjekts istversionId„1“.
Wenn die Anfrage erfolgreich ist und das Schema gültig ist und die Kompatibilitätsprüfungen besteht (falls 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 ID unterscheidet sich von der Versions-ID.
Weitere Informationen finden Sie in der REST API-Dokumentation.
Nächste Schritte
- Weitere Informationen zur Schema-Registry
- Subjekte auflisten
- Neue Schemaversion registrieren
- Subjekt löschen