Wie behebe ich Lambda-Funktionsfehler?

Lesedauer: 7 Minute
0

Wenn ich versuche, meine AWS-Lambda-Funktion aufzurufen, schlägt sie fehl und ich erhalte eine Fehlermeldung.

Lösung

Um Fehler bei Lambda-Funktionen zu beheben, ermitteln Sie mithilfe eines oder mehrerer der in diesem Artikel aufgeführten AWS Services und Features, was den Fehler verursacht. Folgen Sie dann den bereitgestellten Links, um die bewährten Methoden zur Fehlerbehebung für jedes Problem zu überprüfen.

Identifizieren und Beheben von Netzwerkfehlern

Wenn es Probleme mit Ihrer Lambda-Netzwerkkonfiguration gibt, werden viele Arten von Fehlern angezeigt. Im Folgenden sind einige der häufigsten Fehler im Zusammenhang mit Lambda-Netzwerken aufgeführt:

Wenn sich Ihre Funktion nicht in einer Virtual Private Cloud (VPC) befindet und Sie versucht haben, mit einem privaten DNS-Namen auf Ressourcen zuzugreifen, wird der folgende Fehler angezeigt:

UnknownHostException
Fehler: getaddrinfo ENOTFOUND

Wenn sich Ihre Funktion in einer VPC befindet und dann den Internetzugang verliert oder ein Timeout auftritt, wird der folgende Fehler angezeigt:

connect ETIMEDOUT 176.32.98.189:443
Aufgaben-Timeout nach 10,00 Sekunden

Wenn die VPC, in der sich Ihre Funktion befindet, ihr Limit für elastische Netzwerkschnittstellen erreicht, wird die folgende Fehlermeldung angezeigt:

ENILimitReachedException: Das Limit der elastischen Netzwerkschnittstelle wurde für die VPC der Funktion erreicht.

Wenn die Transmission Control Protocol (TCP)-Verbindung unterbrochen wird, wird die folgende Fehlermeldung angezeigt:

Verbindung wurde vom Peer zurückgesetzt
ECONNRESET
ECONNREFUSED

So beheben Sie Lambda-Netzwerkfehler

1.    Vergewissern Sie sich, dass es einen gültigen Netzwerkpfad zu dem Endpunkt gibt, den Ihre Funktion für Ihre Amazon Virtual Private Cloud (Amazon VPC) zu erreichen versucht. Weitere Informationen finden Sie unter Konfigurieren einer Lambda-Funktion für den Zugriff auf Ressourcen in einer VPC.

2.    Vergewissern Sie sich, dass Ihre Funktion Zugriff auf das Internet hat. Weitere Informationen finden Sie unter Wie gewähre ich einer Funktion, die mit einer Amazon VPC verbunden ist, Internetzugriff? Außerdem finden Sie weitere Informationen unter Wie behebe ich Timeout-Probleme mit einer Lambda-Funktion, die sich in einer Amazon VPC befindet?

3.    Um Probleme im Zusammenhang mit der DNS-Auflösung zu beheben, stellen Sie sicher, dass die VPC für den Zugriff auf private Ressourcen konfiguriert ist. Wenn Sie kein von AWS bereitgestelltes DNS verwenden, verwenden Sie eine EC2 Instance, um sicherzustellen, dass die benutzerdefinierte DHCP-Option den DNS-Namen korrekt auflöst. Weitere Informationen finden Sie unter Wie funktioniert DNS und wie behebe ich teilweise oder zeitweise auftretende DNS-Fehler?

Hinweis: Wenn Sie nach der Überprüfung Ihrer VPC-Konfiguration nicht feststellen können, warum Ihr Funktionscode keinen öffentlichen Endpunkt erreicht, aktivieren Sie VPC-Flow-Protokolle. Mit VPC-Flow-Protokolle können Sie den gesamten Netzwerkverkehr verfolgen, der zu und von einer VPC fließt. Mit VPC-Flow-Protokolle können Sie auch feststellen, warum eine bestimmte Anfrage abgelehnt oder nicht weitergeleitet wurde. Weitere Informationen finden Sie unter Beheben von Netzwerkproblemen in Lambda.

Identifizieren und Beheben von Berechtigungsfehlern

Wenn die Sicherheitsberechtigungen für Ihr Lambda-Bereitstellungspaket falsch sind, wird einer der folgenden Fehler angezeigt:

  • EACCES: Erlaubnis verweigert, öffnen Sie '/var/task/index.js'
  • kann eine solche Datei nicht laden -- Funktion
  • [Errno 13] Berechtigung verweigert: '/var/task/function.py'

Die Lambda-Laufzeit benötigt die Erlaubnis, die Dateien in Ihrem Bereitstellungspaket zu lesen. Sie können den Befehl chmod verwenden, um den Dateimodus zu ändern. Die folgenden Beispielbefehle machen alle Dateien und Ordner im aktuellen Verzeichnis für jeden Benutzer lesbar:

chmod -R o+rX .

Weitere Informationen finden Sie unter Beheben von Bereitstellungsproblemen in Lambda.

Wenn Ihre AWS Identity and Access Management (IAM)-Identitäten nicht berechtigt sind, eine Funktion aufzurufen, erhalten Sie die folgende Fehlermeldung:

Benutzer: arn:aws:iam::123456789012:Benutzer/Entwickler ist nicht berechtigt, Folgendes auszuführen: lambda:InvokeFunction auf Ressource: my-function

So beheben Sie Lambda-Berechtigungsfehler

Überprüfen Sie Ihre Lambda-Protokolldateieinträge in AWS CloudTrail. Der Anforderer, der Lambda aufruft, muss über die IAM-Berechtigungen verfügen, die zum Aufrufen Ihrer Funktion erforderlich sind. Um die erforderlichen Berechtigungen zu gewähren, aktualisieren Sie Ihre Lambda-Funktionsberechtigungen.

Weitere Informationen finden Sie unter den folgenden Themen:

Identifizieren und Beheben von Codefehlern

Wenn es Probleme mit Ihrem Lambda-Code gibt, werden Ihnen viele Arten von Fehlern angezeigt. Im Folgenden sind einige der häufigsten Fehler im Zusammenhang mit Lambda-Code aufgeführt:

  • Marshalling der Antwort nicht möglich: Objekt vom Typ AttributeError ist nicht JSON-serialisierbar
  • Problem: Das in der Laufzeit enthaltene AWS SDK ist nicht die neueste Version
  • (Node.js) Die Funktion wird beendet, bevor die Codeausführung abgeschlossen ist
  • KeyError

So beheben Sie Lambda-Codefehler

1.    Überprüfen Sie Ihre Amazon CloudWatch Logs für Lambda.

Sie können CloudWatch verwenden, um alle durch den Code Ihrer Funktion generierten Protokolle einzusehen und potenzielle Probleme zu identifizieren. Weitere Informationen finden Sie unter Zugreifen auf Amazon CloudWatch Logs für AWS Lambda. Einzelheiten zur Funktionsprotokollierung finden Sie in den folgenden Anweisungen zur Lambda-Funktionsprotokollierung für die von Ihnen verwendete Programmiersprache:

Hinweis: Wenn Ihre Funktion einen Stack-Trace zurückgibt, gibt die Fehlermeldung im Stack-Trace an, was den Fehler verursacht.

2.    Verwenden Sie AWS X-Ray, um Engpässe bei der Codeleistung zu identifizieren. Wenn Ihre Lambda-Funktion nachgelagerte AWS-Ressourcen, Microservices, Datenbanken oder HTTP Web APIs verwendet, können Sie AWS X-Ray verwenden, um Probleme mit der Codeleistung zu beheben. Weitere Informationen finden Sie unter Verwenden von AWS Lambda mit AWS X-Ray.

3.    Vergewissern Sie sich, dass das Bereitstellungspaket Ihrer Funktion alle erforderlichen Abhängigkeiten importieren kann. Folgen Sie den Anweisungen der Lambda-Bereitstellungspakete für die von Ihnen verwendete Programmiersprache:

**Hinweis:**Sie können auch Lambda Layers verwenden, um Abhängigkeiten hinzuzufügen, die nicht in Ihrem Bereitstellungspaket enthalten sind.

4.    (Für Code, der als Container Image bereitgestellt wird) Vergewissern Sie sich, dass Sie den Laufzeit-Schnittstellen-Client installieren und das Image korrekt bereitstellen. Folgen Sie den Anweisungen für das Container Image der Programmiersprache, die Sie verwenden:

Identifizieren und Beheben von Drosselungsfehlern

Wenn Ihre Funktion gedrosselt wird, wird der folgende Fehler angezeigt:

Rate überschritten
429 TooManyRequestsException

So beheben Sie Lambda-Drosselungsfehler

Überprüfen Sie Ihre CloudWatch-Metriken für Lambda. Weitere Informationen finden Sie unter Arbeiten mit Lambda-Funktionsmetriken.

Wichtige zu überwachende Kennzahlen:

  • ConcurrentExecutions
  • UnreservedConcurrentExecutions
  • Throttles

Hinweis: Wenn Anfragen zum Aufrufen Ihrer Funktion schneller eintreffen, als die Funktion skalieren kann, oder Ihren Gleichzeitigkeitsgrenzwert überschreiten, schlagen Anfragen mit einem 429-Drosselungsfehler fehl. Weitere Informationen finden Sie unter Lambda-Funktionsskalierung. Wie behebe ich die Lambda-Funktionsdrosselung mit den Fehlern „Rate überschritten“ und 429 „TooManyRequestsException“?

Identifizieren und Beheben von Fehlern mit Statuscode Invoke API 500 und 502

Wenn Ihre Aufrufanforderung fehlschlägt, wird einer der folgenden serverseitigen Fehler mit Statuscode 502 oder 500 angezeigt:

  • InvalidRuntimeException
  • InvalidSecurityGroupIDException
  • InvalidZipFileException
  • KMSAccessDeniedException
  • KMSNotFoundException
  • Sie haben das Höchstlimit für Hyperplane ENIs für Ihr Konto überschritten
  • SubnetIPAddressLimitReachedException

So beheben Sie Fehler mit Statuscode Lambda Invoke API 500 und 502

Folgen Sie den Anweisungen unter Wie behebe ich (serverseitige) Fehler mit Statuscode HTTP 502 und HTTP 500 von AWS Lambda? Eine Liste möglicher Fehler mit Beschreibungen finden Sie unter Fehler in der Lambda-Invoke-API-Referenz.

Identifizieren und Beheben von Container-Image-Fehlern

Wenn Sie Container Images verwenden und ein Problem mit einem Container Image auftritt, wird einer der folgenden Fehler angezeigt:

  • „errorType“: „Runtime.InvalidEntrypoint“
  • Fehler: Sie verwenden eine AWS-CloudFormation-Vorlage und Ihr Container ENTRYPOINT wird mit einem Nullwert oder einem leeren Wert überschrieben.

So beheben Sie Lambda-Container-Image-Fehler

Folgen Sie den Anweisungen unter Beheben von Container-Image-Problemen in Lambda.


Verwandte Informationen

Überwachung und Fehlerbehebung von Lambda-Anwendungen

Fehlerbehandlung und automatische Wiederholungen in Lambda

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr