Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von Schemaregistern mit Kafka-Ereignisquellen in Lambda
Schemaregister unterstützen Sie bei der Definition und Verwaltung von Datenstromschemas. Ein Schema definiert die Struktur und das Format eines Datensatzes. Im Zusammenhang mit Zuordnungen von Kafka-Ereignisquellen können Sie eine Schemaregistrierung konfigurieren, um die Struktur und das Format von Kafka-Nachrichten anhand vordefinierter Schemas zu validieren, bevor sie Ihre Lambda-Funktion erreichen. Dies erweitert Ihre Anwendung um eine Ebene der Daten-Governance und ermöglicht Ihnen die effiziente Verwaltung von Datenformaten, die Sicherstellung der Schema-Compliance und die Kostenoptimierung durch Ereignisfilterung.
Dieses Feature ist mit allen Programmiersprachen kompatibel, jedoch sollten Sie folgende wichtige Punkte beachten:
Powertools for Lambda bietet spezifische Unterstützung für Java, Python und TypeScript gewährleistet die Konsistenz mit bestehenden Kafka-Entwicklungsmustern und ermöglicht den direkten Zugriff auf Geschäftsobjekte ohne benutzerdefinierten Deserialisierungscode
Dieses Feature ist nur für Zuordnungen von Ereignisquellen im Bereitstellungsmodus verfügbar. Die Schemaregistrierung unterstützt keine Zuordnungen von Ereignisquellen im On-Demand-Modus. Wenn Sie den Bereitstellungsmodus verwenden und eine Schemaregistrierung konfiguriert haben, können Sie nicht in den On-Demand-Modus wechseln, es sei denn, Sie entfernen zuvor Ihre Schemaregistrierungskonfiguration. Weitere Informationen finden Sie unter Modus bereitgestellter Kapazität.
Sie können nur eine Schemaregistrierung pro Zuordnung von Ereignisquellen (Event Source Mapping, (ESM) konfigurieren. Die Verwendung einer Schemaregistrierung mit Ihrer Kafka-Ereignisquelle kann zu einer erhöhten Nutzung Ihrer Lambda Event Poller Unit (EPU) führen, die eine Preisdimension für den Bereitstellungsmodus darstellt.
Topics
Optionen für die Schemaregistrierung
Lambda unterstützt die folgenden Optionen für die Schemaregistrierung:
Ihre Schemaregistrierung unterstützt die Validierung von Nachrichten in den folgenden Datenformaten:
-
Apache Avro
-
Protokollpuffer (Protobuf)
-
JSON-Schema (JSON-SE)
Um eine Schemaregistrierung zu verwenden, stellen Sie zunächst sicher, dass sich Ihre Zuordnung von Ereignisquellen im Bereitstellungsmodus befindet. Wenn Sie eine Schemaregistrierung verwenden, fügt Lambda Metadaten zum Schema zu den Nutzdaten hinzu. Weitere Informationen finden Sie unter Nutzdatenformate und Deserialisierungsverhalten.
So führt Lambda die Schemavalidierung für Kafka-Nachrichten durch
Wenn Sie eine Schemaregistrierung konfigurieren, führt Lambda für jede Kafka-Nachricht die folgenden Schritte aus:
-
Lambda fragt den Kafka-Datensatz aus Ihrem Cluster ab.
-
Lambda validiert ausgewählte Nachrichtenattribute im Datensatz anhand eines bestimmten Schemas in Ihrer Schemaregistrierung.
-
Wenn das der Nachricht zugeordnete Schema nicht in der Registrierung gefunden wird, sendet Lambda die Nachricht mit dem Ursachencode
SCHEMA_NOT_FOUNDan eine DLQ.
-
-
Lambda deserialisiert die Nachricht gemäß der Schemaregistrierungskonfiguration, um die Nachricht zu validieren. Wenn eine Ereignisfilterung konfiguriert ist, führt Lambda anschließend eine Filterung basierend auf den konfigurierten Filterkriterien durch.
-
Wenn die Deserialisierung fehlschlägt, sendet Lambda die Nachricht mit dem Ursachencode
DESERIALIZATION_ERRORan eine DLQ. Wenn keine DLQ konfiguriert ist, verwirft Lambda die Nachricht.
-
-
Wenn die Nachricht von der Schemaregistrierung validiert und nicht durch Ihre Filterkriterien herausgefiltert wird, ruft Lambda Ihre Funktion mit der Nachricht auf.
Dieses Feature dient zur Validierung von Nachrichten, die bereits mit Kafka-Clients erstellt wurden, die in eine Schemaregistrierung integriert sind. Wir empfehlen, Ihre Kafka-Producer so zu konfigurieren, dass sie mit Ihrer Schemaregistrierung zusammenarbeiten, um korrekt formatierte Nachrichten zu erstellen.
Konfiguration einer Kafka-Schemaregistrierung
Die folgenden Konsolenschritte fügen Ihrer Zuordnung von Ereignisquellen eine Kafka-Schemaregistrierungskonfiguration hinzu.
Hinzufügen einer Kafka-Schemaregistrierungskonfiguration zu Ihrer Zuordnung von Ereignisquellen (Konsole)
-
Öffnen Sie die Seite Funktion
der Lambda-Konsole. -
Wählen Sie Konfiguration.
-
Wählen Sie Auslöser.
-
Wählen Sie die Kafka-Zuordnung von Ereignisquellen, für die Sie eine Schemaregistrierung konfigurieren möchten und wählen Sie Bearbeiten.
-
Wählen Sie unter Konfiguration des Event-Pollers die Option Schemaregistrierung konfigurieren aus. Ihre Zuordnung von Ereignisquellen muss sich im Bereitstellungsmodus befinden, damit diese Option angezeigt wird.
-
Geben Sie für Schema Registry URI den ARN Ihrer AWS Glue Schemaregistry oder die HTTPS-URL Ihrer Confluent Cloud-Schemaregistry oder Self-Managed Confluent Schema Registry ein.
-
Die folgenden Konfigurationsschritte teilen Lambda mit, wie auf Ihre Schemaregistrierung zugegriffen werden kann. Weitere Informationen finden Sie unter Authentifizierungsmethoden für Ihre Schemaregistrierung.
-
Wählen Sie für Zugriffskonfigurationstyp den Authentifizierungstyp aus, den Lambda für den Zugriff auf Ihre Schemaregistrierung verwendet.
-
Geben Sie für URI der Zugriffskonfiguration die ARN des Secrets-Manager-Geheimnisses ein, um sich bei Ihrer Schemaregistrierung zu authentifizieren, falls zutreffend. Stellen Sie sicher, dass die Ausführungsrolle Ihrer Funktion die richtigen Berechtigungen enthält.
-
-
Das Feld Verschlüsselung gilt nur, wenn Ihre Schemaregistrierung von einer privaten Zertifizierungsstelle (CA) oder einer Zertifizierungsstelle (CA) signiert ist, die sich nicht im Lambda-Vertrauensspeicher befindet. Geben Sie gegebenenfalls den geheimen Schlüssel mit dem privaten CA-Zertifikat an, das von Ihrer Schemaregistrierung für die TLS-Verschlüsselung verwendet wird.
-
Wählen Sie unter Ereignisdatensatzformat aus, wie Lambda die Datensätze nach der Schemavalidierung an Ihre Funktion übermitteln soll. Weitere Informationen finden Sie unter Beispiele für das Nutzdatenformat.
-
Wenn Sie JSON wählen, liefert Lambda die Attribute, die Sie unten unter „Schemavalidierungsattribut“ auswählen, im Standard-JSON-Format. Die Attribute, die Sie nicht auswählen, liefert Lambda unverändert.
-
Wenn Sie SOURCE wählen, liefert Lambda die Attribute, die Sie unten unter „Schemavalidierungsattribut“ auswählen, im ursprünglichen Quellformat.
-
-
Wählen Sie für Schemavalidierungsattribut die Nachrichtenattribute aus, die Lambda mithilfe Ihrer Schemaregistrierung validieren und deserialisieren soll. Sie müssen mindestens entweder KEY oder VALUE auswählen. Wenn Sie JSON als Ereignisdatensatzformat ausgewählt haben, deserialisiert Lambda auch die ausgewählten Nachrichtenattribute, bevor sie an Ihre Funktion gesendet werden. Weitere Informationen finden Sie unter Nutzdatenformate und Deserialisierungsverhalten.
-
Wählen Sie Speichern.
Sie können auch die Lambda-API verwenden, um Ihre Zuordnung von Ereignisquellen mit einer Schemaregistrierungskonfiguration zu erstellen oder zu aktualisieren. Die folgenden Beispiele zeigen, wie Sie eine AWS Glue oder Confluent-Schemaregistry mithilfe von konfigurieren AWS CLI, was den API-Operationen UpdateEventSourceMappingund CreateEventSourceMappingin der API-Referenz entspricht:AWS Lambda
Wichtig
Wenn Sie ein Konfigurationsfeld für die Schemaregistrierung mithilfe der AWS CLI oder der update-event-source-mapping API aktualisieren, müssen Sie alle Felder der Schemaregistrierungskonfiguration aktualisieren.
Filterung nach Avro und Protobuf
Wenn Sie die Formate Avro oder Protobuf mit einer Schemaregistrierung verwenden, können Sie die Ereignisfilterung auf Ihre Lambda-Funktion anwenden. Die Filtermuster werden nach der Schemavalidierung auf die deserialisierte klassische JSON-Darstellung Ihrer Daten angewendet. Mit einem Avro-Schema, das Produktdetails einschließlich des Preises definiert, können Sie beispielsweise Nachrichten basierend auf dem Preiswert filtern:
Anmerkung
Bei der Deserialisierung wird Avro in Standard-JSON konvertiert, was bedeutet, dass es nicht direkt wieder in ein Avro-Objekt konvertiert werden kann. Wenn Sie eine Konvertierung in ein Avro-Objekt benötigen, verwenden Sie stattdessen das SOURCE-Format.
Bei der Protobuf-Deserialisierung stimmen die Feldnamen im resultierenden JSON mit denen überein, die in Ihrem Schema definiert sind, anstatt wie bei Protobuf üblich in Camelcase konvertiert zu werden. Beachten Sie dies bei der Erstellung von Filtermustern.
aws lambda create-event-source-mapping \ --function-name myAvroFunction \ --topics myAvroTopic \ --starting-position TRIM_HORIZON \ --kafka-bootstrap-servers '["broker1:9092", "broker2:9092"]' \ --schema-registry-config '{ "SchemaRegistryURI": "arn:aws:glue:us-east-1:123456789012:registry/myAvroRegistry", "EventRecordFormat": "JSON", "SchemaValidationConfigs": [ { "Attribute": "VALUE" } ] }' \ --filter-criteria '{ "Filters": [ { "Pattern": "{ \"value\" : { \"field_1\" : [\"value1\"], \"field_2\" : [\"value2\"] } }" } ] }'
In diesem Beispiel analysiert das Filtermuster das value-Objekt und gleicht Nachrichten in field_1 mit "value1" und field_2 mit "value2" ab. Die Filterkriterien werden anhand der deserialisierten Daten ausgewertet, nachdem Lambda die Nachricht vom Avro-Format in JSON konvertiert hat.
Ausführlichere Informationen zur Ereignisfilterung finden Sie unter Lambda-Ereignisfilterung.
Nutzdatenformate und Deserialisierungsverhalten
Bei Verwendung einer Schemaregistrierung liefert Lambda die endgültigen Nutzdaten in einem Format, das den regulären Ereignisnutzdaten ähnelt, jedoch einige zusätzliche Felder enthält. Die zusätzlichen Felder hängen vom Parameter SchemaValidationConfigs ab. Für jedes Attribut, das Sie für die Validierung auswählen (Schlüssel oder Wert), fügt Lambda den Nutzdaten entsprechende Schemametadaten hinzu.
Anmerkung
Sie müssen Ihr System aws-lambda-java-events
Wenn Sie beispielsweise das Feld value validieren, fügt Lambda Ihren Nutzdaten ein Feld namens valueSchemaMetadata hinzu. In ähnlicher Weise fügt Lambda für das Feld key ein Feld namens keySchemaMetadata hinzu. Diese Metadaten enthalten Informationen über das Datenformat und die Schema-ID, die für die Validierung verwendet werden:
"valueSchemaMetadata": { "dataFormat": "AVRO", "schemaId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }
Der Parameter EventRecordFormat kann entweder auf JSON oder SOURCE gesetzt werden. Damit wird festgelegt, wie Lambda schemavalidierte Daten verarbeitet, bevor sie an Ihre Funktion übermittelt werden. Jede Option bietet unterschiedliche Verarbeitungsmöglichkeiten:
-
JSON– Lambda deserialisiert die validierten Attribute in das Standard-JSON-Format, sodass die Daten direkt in Sprachen mit nativer JSON-Unterstützung verwendet werden können. Dieses Format ist ideal, wenn Sie das ursprüngliche Binärformat nicht beibehalten oder mit generierten Klassen arbeiten müssen. -
SOURCE– Lambda behält das ursprüngliche Binärformat der Daten als Base64-codierte Zeichenfolge bei, sodass eine direkte Konvertierung in Avro- oder Protobuf-Objekte möglich ist. Dieses Format ist unerlässlich, wenn Sie mit stark typisierten Sprachen arbeiten oder die volle Leistungsfähigkeit von Avro- oder Protobuf-Schemas beibehalten müssen.
Basierend auf diesen Formatmerkmalen und sprachspezifischen Überlegungen empfehlen wir die folgenden Formate:
| Sprache | Avro | Protobuf | JSON |
|---|---|---|---|
| Java | SOURCE | SOURCE | SOURCE |
| Python | JSON | JSON | JSON |
| NodeJS | JSON | JSON | JSON |
| .NET | SOURCE | SOURCE | SOURCE |
| Weitere | JSON | JSON | JSON |
In den folgenden Abschnitten werden diese Formate ausführlich beschrieben und Beispielnutzdaten für jedes Format bereitgestellt.
JSON-Format
Wenn Sie dies wählen JSONEventRecordFormat, validiert und deserialisiert Lambda die Nachrichtenattribute, die Sie in dem SchemaValidationConfigs Feld ausgewählt haben (die Attribute). key and/or value Lambda liefert diese ausgewählten Attribute als Base64-codierte Zeichenfolgen ihrer Standard-JSON-Darstellung in Ihrer Funktion.
Anmerkung
Bei der Deserialisierung wird Avro in Standard-JSON konvertiert, was bedeutet, dass es nicht direkt wieder in ein Avro-Objekt konvertiert werden kann. Wenn Sie eine Konvertierung in ein Avro-Objekt benötigen, verwenden Sie stattdessen das SOURCE-Format.
Bei der Protobuf-Deserialisierung stimmen die Feldnamen im resultierenden JSON mit denen überein, die in Ihrem Schema definiert sind, anstatt wie bei Protobuf üblich in Camelcase konvertiert zu werden. Beachten Sie dies bei der Erstellung von Filtermustern.
Im Folgenden finden Sie ein Beispiel für Nutzdaten, wobei davon ausgegangen wird, dass Sie JSON als EventRecordFormat und sowohl die key- als auch die value-Attribute als SchemaValidationConfigs wählen.
{ "eventSource":"aws:kafka", "eventSourceArn":"arn:aws:kafka:us-east-1:123456789012:cluster/vpc-2priv-2pub/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111-1", "bootstrapServers":"b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "records":{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", //Base64 encoded string of JSON "keySchemaMetadata": { "dataFormat": "AVRO", "schemaId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "value":"abcDEFghiJKLmnoPQRstuVWXyz1234", //Base64 encoded string of JSON "valueSchemaMetadata": { "dataFormat": "AVRO", "schemaId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "headers":[ { "headerKey":[ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ] } }
In diesem Beispiel:
-
Sowohl
keyals auchvaluesind Base64-codierte Zeichenfolgen ihrer JSON-Darstellung nach der Deserialisierung. -
Lambda enthält Schemametadaten für beide Attribute in
keySchemaMetadataundvalueSchemaMetadata. -
Ihre Funktion kann die
key- undvalue-Zeichenfolgen decodieren, um auf die deserialisierten JSON-Daten zuzugreifen.
Das JSON-Format wird für Sprachen empfohlen, die nicht stark typisiert sind, wie Python oder Node.js. Diese Sprachen bieten native Unterstützung für die Konvertierung von JSON in Objekte.
Quellformat
Wenn Sie SOURCE als EventRecordFormat auswählen, validiert Lambda den Datensatz trotzdem anhand der Schemaregistrierung, liefert jedoch die ursprünglichen Binärdaten ohne Deserialisierung an Ihre Funktion. Diese Binärdaten werden als Base64-codierte Zeichenfolge der ursprünglichen Byte-Daten geliefert, wobei die vom Producer angehängten Metadaten entfernt werden. Dadurch können Sie die binären Rohdaten direkt in Avro- und Protobuf-Objekte innerhalb Ihres Funktionscodes konvertieren. Wir empfehlen die Verwendung von Powertools for AWS Lambda, das die rohen Binärdaten deserialisiert und Ihnen Avro- und Protobuf-Objekte direkt zur Verfügung stellt.
Wenn Sie beispielsweise Lambda so konfigurieren, dass sowohl die key- als auch die value-Attribute validiert werden, aber das SOURCE-Format verwenden, erhält Ihre Funktion Nutzdaten wie diese:
{ "eventSource": "aws:kafka", "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/vpc-2priv-2pub/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111-1", "bootstrapServers": "b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "records": { "mytopic-0": [ { "topic": "mytopic", "partition": 0, "offset": 15, "timestamp": 1545084650987, "timestampType": "CREATE_TIME", "key": "abcDEFghiJKLmnoPQRstuVWXyz1234==", // Base64 encoded string of Original byte data, producer-appended metadata removed "keySchemaMetadata": { "dataFormat": "AVRO", "schemaId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "value": "abcDEFghiJKLmnoPQRstuVWXyz1234==", // Base64 encoded string of Original byte data, producer-appended metadata removed "valueSchemaMetadata": { "dataFormat": "AVRO", "schemaId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "headers": [ { "headerKey": [ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ] } }
In diesem Beispiel:
-
Sowohl
keyals auchvalueenthalten die ursprünglichen Binärdaten als Base64-codierte Zeichenfolgen. -
Ihre Funktion muss die Deserialisierung mit den entsprechenden Bibliotheken verarbeiten.
Die Auswahl von SOURCE für EventRecordFormat wird empfohlen, wenn Sie mit Avro oder Protobuf generierte Objekte verwenden, insbesondere mit Java-Funktionen. Dies liegt daran, dass Java stark typisiert ist und spezifische Deserialisierer für die Formate Avro und Protobuf erfordert. In Ihrem Funktionscode können Sie Ihre bevorzugte Avro- oder Protobuf-Bibliothek verwenden, um die Daten zu deserialisieren.
Arbeiten mit deserialisierten Daten in Lambda-Funktionen
Powertools for AWS Lambda hilft Ihnen dabei, Kafka-Datensätze in Ihrem Funktionscode auf der Grundlage des von Ihnen verwendeten Formats zu deserialisieren. Dieses Tool vereinfacht die Arbeit mit Kafka-Datensätzen, indem es die Datenkonvertierung übernimmt und Objekte bereitstellt. ready-to-use
Um Powertools for AWS Lambda in Ihrer Funktion zu verwenden, müssen Sie Powertools for AWS Lambda entweder als Ebene oder als Abhängigkeit hinzufügen, wenn Sie Ihre Lambda-Funktion erstellen. Anweisungen zur Einrichtung und weitere Informationen finden Sie in der AWS Lambda Powertools-Dokumentation für Ihre bevorzugte Sprache:
Anmerkung
Bei der Arbeit mit der Schemaregistrierungsintegration können Sie zwischen dem SOURCE- und dem JSON-Format wählen. Jede Option unterstützt verschiedene Serialisierungsformate, wie unten gezeigt:
| Format | Unterstützt |
|---|---|
|
SOURCE |
Avro und Protobuf (unter Verwendung der Lambda-Schemaregistrierungsintegration) |
|
JSON |
JSON-Daten |
Wenn Sie das JSON Format SOURCE oder verwenden, können Sie Powertools for verwenden, AWS um die Daten in Ihrem Funktionscode zu deserialisieren. Hier sind Beispiele für den Umgang mit verschiedenen Datenformaten:
Authentifizierungsmethoden für Ihre Schemaregistrierung
Um eine Schemaregistrierung verwenden zu können, muss Lambda in der Lage sein, sicher darauf zuzugreifen. Wenn Sie mit einer AWS Glue Schemaregistrierung arbeiten, stützt sich Lambda auf die IAM-Authentifizierung. Das bedeutet, dass die Ausführungsrolle Ihrer Funktion über die folgenden Berechtigungen für den Zugriff auf die AWS Glue Registrierung verfügen muss:
-
GetRegistryin der AWS Glue Web-API-Referenz
-
GetSchemaVersionin der AWS Glue Web-API-Referenz
Beispiel für die erforderliche IAM-Richtlinie:
Anmerkung
Wenn Sie bei AWS Glue Schemaregistern eine AWS Glue Registrierung angebenAccessConfigs, gibt Lambda eine Validierungsausnahme zurück.
Wenn Sie mit einer Confluent-Schemaregistry arbeiten, können Sie eine von drei unterstützten Authentifizierungsmethoden für den Type Parameter Ihres Objekts wählen: KafkaSchemaRegistryAccessConfig
-
BASIC_AUTH – Lambda verwendet die Authentifizierung mit Benutzername und Passwort oder API-Schlüssel und API-Geheimnis, um auf Ihre Registrierung zuzugreifen. Wenn Sie diese Option auswählen, geben Sie die Secrets-Manager-ARN mit Ihren Anmeldeinformationen im Feld „URI“ an.
-
CLIENT_CERTIFICATE_TLS_AUTH – Lambda verwendet die gegenseitige TLS-Authentifizierung mit Client-Zertifikaten. Um diese Option zu verwenden, benötigt Lambda Zugriff sowohl auf das Zertifikat als auch auf den privaten Schlüssel. Geben Sie den Secrets-Manager-ARN mit diesen Anmeldeinformationen im URI-Feld an.
-
NO_AUTH – Das öffentliche CA-Zertifikat muss von einer Zertifizierungsstelle (CA) signiert sein, die sich im Lambda-Vertrauensspeicher befindet. Für ein privates CA-/selbstsigniertes Zertifikat konfigurieren Sie das Root-CA-Zertifikat des Servers. Um diese Option zu verwenden, lassen Sie den Parameter
AccessConfigsweg.
Wenn Lambda Zugriff auf ein privates CA-Zertifikat benötigt, um das TLS-Zertifikat Ihrer Schemaregistrierung zu überprüfen, wählen Sie zusätzlich SERVER_ROOT_CA_CERT als Type und geben Sie den Secrets-Manager-ARN für das Zertifikat in das URI-Feld ein.
Anmerkung
Um die Option SERVER_ROOT_CA_CERT in der Konsole zu konfigurieren, geben Sie den Geheimnis-ARN, der das Zertifikat enthält, in das Feld Verschlüsselung ein.
Die Authentifizierungskonfiguration für Ihre Schemaregistrierung ist unabhängig von der Authentifizierung, die Sie für Ihren Kafka-Cluster konfiguriert haben. Sie müssen beide separat konfigurieren, auch wenn sie ähnliche Authentifizierungsmethoden verwenden.
Fehlerbehandlung und -behebung bei Problemen mit der Schemaregistrierung
Bei der Verwendung einer Schemaregistrierung mit Ihrer Amazon-MSK-Ereignisquelle können verschiedene Fehler auftreten. Dieser Abschnitt enthält Anleitungen zu häufigen Problemen und deren Behebung.
Konfigurationsfehler
Diese Fehler treten beim Einrichten Ihrer Schemaregistrierungskonfiguration auf.
- Bereitstellungsmodus erforderlich
-
Fehlermeldung:
SchemaRegistryConfig is only available for Provisioned Mode. To configure Schema Registry, please enable Provisioned Mode by specifying MinimumPollers in ProvisionedPollerConfig.Lösung: Aktivieren Sie den Bereitstellungsmodus für Ihre Zuordnung von Ereignisquellen, indem Sie den Parameter
MinimumPollersinProvisionedPollerConfigkonfigurieren. - Ungültige Schemaregistrierungs-URL
-
Fehlermeldung:
Malformed SchemaRegistryURI provided. Please provide a valid URI or ARN. For example, https://schema-registry.example.com:8081 or arn:aws:glue:us-east-1:123456789012:registry/ExampleRegistry.Lösung: Geben Sie eine gültige HTTPS-URL für Confluent Schema Registry oder einen gültigen ARN für AWS Glue Schema Registry an.
- Ungültiges oder fehlendes Ereignisdatensatzformat
-
Fehlermeldung:
EventRecordFormat is a required field for SchemaRegistryConfig. Please provide one of supported format types: SOURCE, JSON.Lösung: Geben Sie EventRecordFormat in Ihrer Schemaregistrierungskonfiguration entweder SOURCE oder JSON an.
- Doppelte Validierungsattribute
-
Fehlermeldung:
Duplicate KEY/VALUE Attribute in SchemaValidationConfigs. SchemaValidationConfigs must contain at most one KEY/VALUE Attribute.Lösung: Entfernen Sie doppelte KEY- oder VALUE-Attribute aus Ihrem SchemaValidationConfigs. Jeder Attributtyp darf nur einmal vorkommen.
- Fehlende Validierungskonfiguration
-
Fehlermeldung:
SchemaValidationConfigs is a required field for SchemaRegistryConfig.Lösung: Fügen Sie SchemaValidationConfigs es zu Ihrer Konfiguration hinzu und geben Sie mindestens ein Validierungsattribut (KEY oder VALUE) an.
Zugriffs- und Berechtigungsfehler
Diese Fehler treten auf, wenn Lambda aufgrund von Berechtigungs- oder Authentifizierungsproblemen nicht auf die Schemaregistrierung zugreifen kann.
- AWS Glue Zugriff auf die Schemaregistrierung verweigert
-
Fehlermeldung:
Cannot access Glue Schema with provided role. Please ensure the provided role can perform the GetRegistry and GetSchemaVersion Actions on your schema.Lösung: Fügen Sie die erforderlichen Berechtigungen (
glue:GetRegistryundglue:GetSchemaVersion) zur Ausführungsrolle Ihrer Funktion hinzu. - Zugriff auf Confluent-Schemaregistrierung verweigert
-
Fehlermeldung:
Cannot access Confluent Schema with the provided access configuration.Lösung: Stellen Sie sicher, dass Ihre Authentifizierungsanmeldeinformationen (gespeichert in Secrets Manager) korrekt sind und über die erforderlichen Berechtigungen für den Zugriff auf die Schemaregistrierung verfügen.
- Kontoübergreifende AWS Glue Schemaregistrierung
-
Fehlermeldung:
Cross-account Glue Schema Registry ARN not supported.Lösung: Verwenden Sie eine AWS Glue Schemaregistry, die sich im selben AWS Konto wie Ihre Lambda-Funktion befindet.
- Regionsübergreifende Schemaregistrierung AWS Glue
-
Fehlermeldung:
Cross-region Glue Schema Registry ARN not supported.Lösung: Verwenden Sie eine AWS Glue Schemaregistry, die sich in derselben Region wie Ihre Lambda-Funktion befindet.
- Probleme beim Zugriff auf Geheimnisse
-
Fehlermeldung:
Lambda received InvalidRequestException from Secrets Manager.Lösung: Stellen Sie sicher, dass die Ausführungsrolle Ihrer Funktion berechtigt ist, auf das Geheimnis zuzugreifen, und dass das Geheimnis nicht mit einem AWS KMS Standardschlüssel verschlüsselt ist, wenn Sie von einem anderen Konto aus zugreifen.
Verbindungsfehler
Diese Fehler treten auf, wenn Lambda keine Verbindung mit der Schemaregistrierung herstellen kann.
- Probleme mit der VPC-Konnektivität
-
Fehlermeldung:
Cannot connect to your Schema Registry. Your Kafka cluster's VPC must be able to connect to the schema registry. You can provide access by configuring AWS PrivateLink or a NAT Gateway or VPC Peering between Kafka Cluster VPC and the schema registry VPC.Lösung: Konfigurieren Sie Ihr VPC-Netzwerk so, dass Verbindungen zur Schemaregistry über AWS PrivateLink ein NAT-Gateway oder VPC-Peering möglich sind.
- TLS-Handshake-Fehler
-
Fehlermeldung:
Unable to establish TLS handshake with the schema registry. Please provide correct CA-certificate or client certificate using Secrets Manager to access your schema registry.Lösung: Überprüfen Sie, ob Ihre CA-Zertifikate und Client-Zertifikate (für mTLS) korrekt sind und ordnungsgemäß in Secrets Manager konfiguriert wurden.
- Drosselung
-
Fehlermeldung:
Receiving throttling errors when accessing the schema registry. Please increase API TPS limits for your schema registry.Lösung: Erhöhen Sie die API-Ratenlimits für Ihre Schemaregistrierung oder reduzieren Sie die Anzahl der Anforderungen von Ihrer Anwendung.
- Fehler bei selbstverwalteten Schemaregistrierungen
-
Fehlermeldung:
Lambda received an internal server an unexpected error from the provided self-managed schema registry.Lösung: Überprüfen Sie den Zustand und die Konfiguration des Servers Ihrer selbstverwalteten Schemaregistrierung.