Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich Probleme bei Lambda-Triggern von Amazon MSK und selbstverwalteten Apache Kafka-Clustern?
Ich habe meine AWS Lambda-Funktion so konzipiert, dass sie Datensätze aus meinem Amazon Managed Streaming für Apache Kafka (Amazon MSK)-Cluster oder selbstverwaltete Apache Kafka-Cluster verarbeitet. Die Zuordnung von Ereignisquellen ruft meine Lambda-Funktion jedoch nicht auf.
Kurzbeschreibung
Um eine Lambda-Funktion aufzurufen, muss die Apache Kafka-Zuordnung von Ereignisquellen in der Lage sein, die folgenden Aktionen auszuführen:
- Mit dem Cluster kommunizieren.
- Aufzeichnungen des Themas abfragen.
- Mit der Lambda-Aufruf-API kommunizieren.
- Mit der AWS Security Token Service (AWS STS)-API kommunizieren.
Wenn die Netzwerk-, Authentifizierungs- oder Autorisierungseinstellungen der Zuordnung von Ereignisquellen die nachfolgenden Aktionen verhindern, kann die Zuordnung von Ereignisquellen die Funktion nicht aufrufen. Stattdessen erhältst du eine Fehlermeldung.
Lösung
Nachdem du eine Lambda-Funktion mit einem Amazon MSK-Trigger oder einem selbstverwalteten Kafka-Trigger konfiguriert hast, erstellt Lambda automatisch eine neue Ressource für die Zuordnung von Ereignisquellen. Diese Zuordnung von Ereignisquellen ist eine separate Ressource von der Lambda-Funktion. Die Zuordnung von Ereignisquellen fragt Datensätze aus dem Kafka-Cluster ab und bündelt die Datensätze zu Nutzdaten. Anschließend wird die Lambda-Aufruf-API aufgerufen, um die Nutzdaten zur Verarbeitung an deine Lambda-Funktion zu liefern. Um Probleme mit fehlgeschlagenen Umfragen zu beheben, führe für jeden Fehler, den du erhalten hast, die folgenden Schritte zur Problembehandlung durch.
Wichtig: Lambda-Zuordnungen von Ereignisquellen erben nicht die Virtual Private Cloud (VPC)-Netzwerkkonfiguration der Lambda-Funktion. Dies gilt sowohl für Amazon MSK- als auch für selbstverwaltete Kafka-Trigger. Eine Amazon MSK-Zuordnung von Ereignisquellen verwendet die Subnetz- und Sicherheitsgruppenkonfigurationen, die du auf dem MSK-Ziel-Cluster konfiguriert hast. Ein selbstverwalteter Kafka-Trigger verfügt standardmäßig über WAN (Wide Area Network)-Zugriff. Du kannst jedoch auch den Netzwerkzugriff auf eine VPC im selben AWS-Konto und in derselben AWS-Region konfigurieren. Da die Netzwerkkonfiguration getrennt ist, kannst du eine Lambda-Funktion in einem Netzwerk konfigurieren, die keine Route zum Kafka-Cluster hat.
Um eine Amazon MSK-Zuordnung von Ereignisquellen für die Abfrage von Datensätzen aus einem kontoübergreifenden MSK-Cluster zu konfigurieren, richte eine private Multi-VPC-Konnektivität ein. Beachte, dass du einen selbstverwalteten Kafka-Trigger erstellen kannst, der von einem MSK-Cluster in einem anderen Konto verbraucht wird. Diese Lösung hat jedoch Nachteile. Beispielsweise kannst du die AWS Identity and Access Management(IAM)-Authentifizierung nicht mit einem selbstverwalteten Kafka-Trigger verwenden, selbst wenn der Zielcluster ein MSK-Cluster ist. Um über eine Peer-VPC-Verbindung eine Verbindung zum MSK-Cluster herzustellen, musst du außerdem VPC-Problemumgehungen einrichten. Eine Beispielarchitektur findest du unter How Goldman Sachs builds cross-account connectivity to their Amazon MSK clusters with AWS PrivateLink (Wie Goldman Sachs mit AWS PrivateLink kontenübergreifende Konnektivität zu ihren Amazon MSK-Clustern aufbaut).
**Hinweis:**Stelle sicher, dass du die Anforderungen erfüllst, um die Konnektivität mit Multi-VPC zu verwenden.
Behebe Probleme mit der Netzwerkkommunikation zwischen dem Trigger und dem Cluster
Die Zuordnung von Ereignisquellen sendet mehrere verschiedene Anfragen an die Cluster-Broker-Endpunkte, um einen einzigen Aufruf deiner Lambda-Funktion abzuschließen. Vor einem Aufruf fragt die Zuordnung von Ereignisquellen die Cluster-Broker-Endpunkte nach den Cluster-Metadateninformationen und den Datensätzen aus dem Thema. Nach einem erfolgreichen Aufruf kommuniziert die Zuordnung von Ereignisquellen mit den Broker-Endpunkten, um die verarbeiteten Datensätze zu bestätigen. Wenn die Zuordnung von Ereignisquellen eine Anfrage an die Broker-Endpunkte sendet und keine Antwort erhält, wird bei der Anfrage ein Timeout ausgelöst. Du erhältst die folgende Fehlermeldung:
„PROBLEM: SSL-Verbindungsfehler. Bitte überprüfe die Verbindungskonfiguration deiner Ereignisquelle. Wenn sich die Ereignisquelle in einer VPC befindet, versuche, eine neue Lambda-Funktion oder EC2-Instance mit denselben VPC-, Subnetz- und Sicherheitsgruppeneinstellungen einzurichten. Verbinde das neue Gerät mit dem Kafka-Cluster und nutze Nachrichten, um sicherzustellen, dass das Problem nicht mit der VPC- oder Endpunktkonfiguration zusammenhängt. Wenn das neue Gerät Nachrichten empfangen kann, wende dich für weitere Untersuchungen an den Lambda-Kundensupport.“
Broker-Anfragen, bei denen ein Timeout auftritt, können auftreten, bevor oder nachdem die Anfrage den Broker-Endpunkt erreicht hat. Timeouts vor dem Broker treten auf, wenn Netzwerk- und Sicherheitsgruppeneinstellungen die Anfragen der Zuordnung von Ereignisquellen an die Broker-Endpunkte blockieren. Anfragen, nach dem Timeout des Brokers treten auf, wenn der Broker die Anfrage der Zuordnung von Ereignisquellen erhält, die Anfrage jedoch nicht abschließen kann.
Überprüfe den Broker-Status zum Zeitpunkt des Fehlers, um eine Anfrage zu untersuchen, bei der ein Timeout stattgefunden hat. Wenn der Cluster offline war, als das Problem auftrat, reaktiviere die Zuordnung von Ereignisquellen, wenn der Cluster wieder online und verfügbar ist. Timeout-Anfragen treten auch auf, wenn der Cluster keinen Speicherplatz mehr hat oder die CPU-Auslastung von 100 % erreicht ist oder wenn ein Broker-Endpunkt ausfällt. Um diese Probleme zu beheben, setze die Batch-Größe der Zuordnung von Ereignisquellen auf 1 und aktiviere dann den Trigger erneut. Beachte, dass die Cluster-Antwortzeit länger dauert, wenn du die Batch-Größe auf einen höheren Wert setzt.
Weitere Informationen zur Behebung von Timeout-Fehlern findest du in den Zugriffs- und Systemprotokollen des Brokers.
Wenn bei der Anfrage ein Timeout auftritt, bevor diese Anfrage den Broker-Endpunkt erreicht, überprüfe deine Netzwerkkonfiguration.
Suche in der Netzwerkkonfiguration nach einer Amazon MSK-Zuordnung von Ereignisquellen
Um mit dem MSK-Cluster zu kommunizieren, erstellt die Amazon MSK-Zuordnung von Ereignisquellen eine Hyperplane-Elastic-Network-Schnittstelle in jedem Subnetz, das der Cluster verwendet. Die Zuordnung von Ereignisquellen ist eine Lambda-eigene Ressource. Die Amazon MSK-Zuordnung von Ereignisquellen verwendet jedoch nicht die VPC-Einstellungen der Lambda-Funktion. Stattdessen verwendet die Zuordnung von Ereignisquellen automatisch die Subnetz- und Sicherheitsgruppeneinstellungen, die auf dem MSK-Ziel-Cluster konfiguriert sind. Die Amazon MSK-Zuordnung von Ereignisquellen erstellt dann eine Netzwerkschnittstelle in jedem Subnetz, das der MSK-Cluster verwendet. Diese Netzwerkschnittstellen verwenden dieselbe Sicherheitsgruppe, die vom MSK-Cluster verwendet wird.
Gehe wie folgt vor, um zu überprüfen, ob deine Sicherheitsgruppen den erforderlichen Datenverkehr und die erforderlichen Ports zulassen:
- Führe den AWS CLI-Befehl describe-cluster aus, um alle Sicherheitsgruppen und Subnetze aufzulisten, die der MSK-Cluster verwendet.
- Führe den Befehl describe-security-groups für die Sicherheitsgruppen aus, die in der Ausgabe des Befehls describe-cluster aufgeführt sind, um alle Regeln für eingehenden und ausgehenden Datenverkehr anzuzeigen.
- Konfiguriere die Regeln in den aufgelisteten Sicherheitsgruppen, um den Datenverkehr zwischen der Sicherheitsgruppe und dem MSK-Cluster zuzulassen. Du musst auch den Datenverkehr über die folgenden offenen Authentifizierungsports zulassen, die der Broker verwendet:
9092 für Klartext
9094 für TLS
9096 für SASL
9098 für IAM
443 (ausgehende Regel) für alle Konfigurationen
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.
Überprüfung der Netzwerkkonfiguration für eine selbstverwaltete Kafka-Zuordnung von Ereignisquellen
Standardmäßig kann eine selbstverwaltete Kafka-Zuordnung von Ereignisquellen auf das WAN zugreifen, nicht jedoch auf die VPC. Du kannst den VPC-Zugriff auf bestimmte Subnetze und Sicherheitsgruppen im Kafka-Cluster manuell konfigurieren. Die Zuordnung von Ereignisquellen kann jedoch nur auf Cluster zugreifen, wenn sie sich auf dem Konto befinden, das die Lambda-Funktion enthält. Du kannst eine selbstverwaltete Kafka-Zuordnung von Ereignisquellen für einen Kafka-Cluster erstellen, der sich an einem der folgenden Speicherorte befindet:
- Ein On-Premises-Rechenzentrum
- Ein weiterer Cloud-Anbieter
- Die Amazon MSK-Broker eines Kafka-Clusters, der sich in der VPC eines anderen Kontos befindet
Behebe Probleme, die während der Initialisierung, Abfrage oder des Aufrufs auftreten
Wenn bei der Initialisierung, der Abfrage oder dem Aufruf Probleme auftreten, wird die folgende Fehlermeldung angezeigt:
„PROBLEM: SSL-Verbindungsfehler. Deine Ereignisquellen-VPC muss in der Lage sein, eine Verbindung zu Lambda und STS, Secrets Manager (falls eine Ereignisquellenauthentifizierung erforderlich ist) und der OnFailure Destination (falls eine konfiguriert ist) herzustellen. Du kannst Zugriff gewähren, indem du PrivateLink oder ein NAT-Gateway konfigurierst. Informationen zur Einrichtung von VPC-Endpunkten/NAT-Gateway findest du unter https://aws.amazon.com/blogs/compute/setting-up-aws-lambda-with-an-apache-kafka-cluster-within-a-vpc/“.
Der vorhergehende Fehler tritt aus einem der folgenden Gründe auf:
- Die Zuordnung von Ereignisquellen ist in einer VPC konfiguriert und Aufrufe der AWS STS-API schlagen fehl oder es kommt zu einer Zeitüberschreitung.
- Die Zuordnung von Ereignisquellen ist für die Verwendung der Secrets Manager-Clusterauthentifizierung konfiguriert, aber Aufrufe der Secrets Manager-API schlagen fehl oder es kommt zu einem Timeout.
- Die Zuordnung von Ereignisquellen kann erfolgreich auf deinen Kafka-Cluster zugreifen und Datensätze abfragen, aber Aufrufe der Lambda-API schlagen fehl oder es kommt zu einem Timeout.
- Du hast die Zuordnung der Ereignisquelle mit einem Fehlerziel konfiguriert, z. B. Amazon Simple Storage Service (Amazon S3) oder Amazon Simple Notification Service (Amazon SNS). Wenn deine Funktionsaufrufe jedoch mit einem Fehler enden, schlagen Aufrufe der API des Fehlerziels fehl oder es kommt zu einem Timeout.
Die oben genannten Probleme treten auf, wenn die Konfiguration von Sicherheitsgruppen oder Routingtabellen nicht zulässt, dass deine Zuordnung von Ereignisquellen andere Dienste erreicht. Zu diesen Diensten gehören AWS STS, Lambda oder AWS Secrets Manager. Um die VPC-Einstellungen richtig zu konfigurieren, schließe die Schritte unter AWS Lambda mit einem Apache Kafka-Cluster innerhalb einer VPC einrichtenab.
Gehe wie folgt vor, um diese Probleme für eine selbstverwaltete Kafka-Zuordnung von Ereignisquellen zu beheben:
- Erstelle einen Lambda-VPC-Endpunkt und einen STS-VPC-Endpunkt in der VPC, die die Subnetze enthält, die die selbstverwaltete Kafka-Zuordnung von Ereignisquellen verwendet.
- Wenn du die Zuordnung von Ereignisquellen mit einem Geheimnis konfiguriert hast, erstelle einen VPC-Endpunkt für Secrets Manager.
- Wenn du die Zuordnung der Ereignisquelle mit einem Fehlerziel konfiguriert hast, erstelle einen VPC-Endpunkt für dein Fehlerziel. Zu den Beispielzielen gehören Amazon SNS oder Amazon S3.
- Konfiguriere die VPC-Endpunkte mit einer Sicherheitsgruppe, die eingehenden Datenverkehr auf Port 443 aus der Sicherheitsgruppe der selbstverwalteten Kafka-Zuordnung von Ereignisquellen zulässt.
- Konfiguriere die Sicherheitsgruppe der selbstverwalteten Kafka-Zuordnung von Ereignisquellen so, dass ausgehender Datenverkehr auf Port 443 zur Sicherheitsgruppe der VPC-Endpoints zugelassen wird.
Gehe wie folgt vor, um diese Probleme für eine Amazon MSK-Zuordnung von Ereignisquellen zu beheben:
- Erstelle einen Lambda-VPC-Endpunkt und einen STS-VPC-Endpunkt in der VPC, die den MSK-Cluster enthält.
- Wenn die Zuordnung von Ereignisquellen ein Geheimnis verwendet oder der Cluster die SASL-IAM-Authentifizierung verwendet, erstelle einen VPC-Endpunkt für Secrets Manager. Dieser Endpunkt muss sich in der VPC befinden, die den MSK-Cluster enthält.
- Wenn du die Zuordnung der Ereignisquelle mit einem Fehlerziel konfiguriert hast, erstelle einen VPC-Endpunkt für dein Fehlerziel. Zu den Beispielzielen gehören Amazon SNS oder Amazon S3. Dieser VPC-Endpunkt muss sich in der VPC befinden, die den MSK-Cluster enthält.
- Konfiguriere die VPC-Endpunkte mit einer Sicherheitsgruppe, die eingehenden Datenverkehr auf Port 443 aus der Sicherheitsgruppe, die der MSK-Cluster verwendet, zulässt.
**Wichtig:**Erlaube eingehenden Datenverkehr von der MSK-Cluster-Sicherheitsgruppe, nicht von der Sicherheitsgruppe der Lambda-Funktion. - Konfiguriere die MSK-Cluster-Sicherheitsgruppe so, dass ausgehender Datenverkehr auf Port 443 zur Sicherheitsgruppe der VPC-Endpoints zugelassen wird.
Problembehandlung mit deiner VPC-Richtlinie oder Ausführungsrolle
Suche nach Problemen mit der Ausführungsrolle
Wenn es in der STS VPC-Endpunkt-Ressourcenrichtlinie Konfigurationsprobleme gibt, erhältst du die folgende Fehlermeldung:
„PROBLEM: Lambda konnte deine Rolle zur Funktionsausführung nicht übernehmen. “
Gehe wie folgt vor, um dieses Problem zu beheben:
- Stelle sicher, dass der Serviceprinzipal lambda.amazonaws.com in der Vertrauensrichtlinie der IAM-Rolle als vertrauenswürdiger Service aufgeführt ist.
- Stelle sicher, dass die STS VPC-Endpunktrichtlinie es dem Lambda-Serviceprinzipal ermöglicht, die sts:AssumeRole aufzurufen. Weitere Informationen zur Konfiguration deiner VPC findest du unter Netzwerksicherheit konfigurieren.
Wenn du eine restriktive VPC-Endpunktrichtlinie für den Lambda-VPC-Endpunkt hast, wird die folgende Fehlermeldung angezeigt:
„Keine VPC-Endpunktrichtlinie erlaubt die Aktion lambda:invokeFunction“
Um diese Probleme zu lösen, stelle sicher, dass die Lambda-VPC-Endpunktrichtlinie es dem Lambda-Serviceprinzipal ermöglicht, lambda:InvokeFunction aufzurufen.
Hinweis: Du kannst als Fehlerziel eine Amazon Simple Queue Service (Amazon SQS)-Warteschlange, ein Amazon SNS-Thema oder einen Amazon S3-Bucket konfigurieren. Wenn du diese Ziele verwendest, stelle sicher, dass die VPC-Endpunktrichtlinie die erforderlichen Aktionen von der Lambda-Ausführungsrolle zulässt.
Suche nach Problemen mit dem Zugriff auf Secrets
Wenn du Probleme mit dem Zugriff auf das Secrets Manager-Secret hast, erhältst du die folgende Fehlermeldung:
„PROBLEM: Lambda kann secretsmanager:GetSecretValue nicht aufrufen. Reason: Benutzer: Die Lambda-Ausführungsrolle ist nicht berechtigt, Folgendes auszuführen: secretsManager:getSecretValue für die Ressource: Geheimis in Secrets Manager mit einer expliziten Ablehnung in einer VPC-Endpunktrichtlinie.“
Um dieses Problem zu beheben, stelle sicher, dass die VPC-Endpunkt-Ressourcenrichtlinie es der Lambda-Ausführungsrolle erlaubt, secretsmanager:GetSecretValue für das Secret aufzurufen. Um Secrets von Secrets Manager abzurufen, verwendet Lambda deine Ausführungsrolle, nicht den Lambda-Serviceprinzipal.
Beheben von Problemen mit Secrets
Überprüfung der Konfiguration deines Secrets
Wenn das Secret kein Format hat, das die Zuordnung von Ereignisquellen verwenden kann, erhältst du die folgende Fehlermeldung:
„PROBLEM: Zertifikat und/oder privater Schlüssel müssen im PEM-Format vorliegen.“
Um dieses Problem zu beheben, stelle sicher, dass der Schlüssel in einer X.509-Zertifikatsdatei im PEM-Format vorliegt. Führe den folgenden Befehl aus, um zu überprüfen, ob dein Zertifikat das richtige Format hat:
openssl x509 -in PEM FILE -text
**Hinweis:**Ersetze PEM-DATEI durch deinen .pem-Dateinamen.
Stelle außerdem sicher, dass die Verschlüsselung mit privatem Schlüssel einen PBES1-Algorithmus und keinen PBES2-Algorithmus verwendet.
Weitere Informationen findest du unter Bereitgestelltes Zertifikat oder privater Schlüssel ist nicht gültig für Amazon MSK oder Konfiguration des Client-Zertifikatgeheimnis für selbstverwaltetes Kafka.
Überprüfe das Format deiner geheimen Werte
Wenn deine Serveranmeldeversuche fehlschlagen, erhältst du die folgende Fehlermeldung:
„PROBLEM: Die SASL-Authentifizierung ist fehlgeschlagen.“
Wenn ein Amazon MSK-Thema eine Lambda-Funktion aufruft, kann die Funktion auf Benutzernamen und Passwörter zugreifen, die Secrets Manager mit SASL/SCRAM sichert. Wenn Lambda deinen Benutzernamen und dein Passwort nicht als gültig erkennt, erhältst du die vorherige Fehlermeldung. Um dieses Problem zu beheben, melde dich beim Broker an und überprüfe dann die Zugriffsprotokolle. Weitere Informationen findest du unter SASL/SCRAM-Authentifizierung für Amazon MSK oder SASL/SCRAM-Authentifizierung für selbstverwaltetes Kafka.
Behebe die Probleme mit den Servereinstellungen deiner Zuordnung von Ereignisquellen
Stelle sicher, dass die Zuordnung von Ereignisquellen den DNS-Server erreichen kann
Wenn deine Zuordnung von Ereignisquellen den Hostnamen nicht in eine IP-Adresse umwandeln kann, erhältst du die folgende Fehlermeldung:
„PROBLEM: Die bereitgestellten Kafka-Broker-Endpunkte können nicht aufgelöst werden.“
Um dieses Problem zu beheben, stelle sicher, dass die Zuordnung von Ereignisquellen den DNS-Server erreichen kann, der den Hostnamen übersetzt. Wenn sich der Hostname des Endpunkts in einem privaten Netzwerk befindet, konfiguriere die Zuordnung von Ereignisquellen so, dass eine VPC mit DNS-Einstellungen verwendet wird, die Hostnamen auflösen kann.
Überprüfe die Konfiguration der Servereinstellungen für deine Zuordnung von Ereignisquellen
Wenn sich der Server von dem Server unterscheidet, den du in den Einstellungen für die Zuordnung von Ereignisquellen konfiguriert hast, wird die folgende Fehlermeldung angezeigt:
„PROBLEM: Der Server konnte Lambda nicht authentifizieren oder Lambda konnte den Server nicht authentifizieren.“
Um dieses Problem zu beheben, stelle sicher, dass der Serverhostname in deinen Einstellungen mit dem internen Servernamen des Servers übereinstimmt, zu dem du eine Verbindung herstellst.
Sicherstellen, dass die Zuordnung von Ereignisquellen über Berechtigungen zum Abrufen von Datensätzen aus dem Cluster-Thema verfügt
Wenn die Zuordnung von Ereignisquellen keinen Zugriff auf Abfragedatensätze hat, erhältst du die folgende Fehlermeldung:
„PROBLEM: Cluster konnte Lambda nicht autorisieren.“
Um dieses Problem zu beheben, konfiguriere die erforderlichen Berechtigungen, um Lambda für den MSK-Cluster oder selbstverwalteten Kafka-Cluster zu autorisieren.
Ähnliche Informationen
- Themen
- ServerlessCompute
- Tags
- AWS Lambda
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 9 Monaten