Wie kann ich den Fehler „interner Server“ mit dem Statuscode 500 für API-Gateway-Endpunkte beheben, die in Lambda integriert sind?

Letzte Aktualisierung: 19.10.2022

Ich habe eine HTTP-Anfrage an den API-Endpunkt von Amazon API Gateway gesendet, der in AWS Lambda integriert ist (z. B. /lambda-resource GET). Ich habe eine Statuscode-500-Antwort mit folgendem Fehler erhalten: {"message": "Internal server error"}

Wie kann ich dieses Problem beheben?

Kurzbeschreibung

Dieser Fehler könnte folgende Ursachen haben:

  • Lambda-Funktionsberechtigungen
  • Drosselungsprobleme
  • Falsche oder fehlende HTTP-Statuscode-Zuordnung
  • Nicht behandelte Fehler

Auflösung

Bevor Sie beginnen, führen Sie die Schritte zum Aktivieren von Amazon CloudWatch Logs zur Behebung von API-Gateway-Fehlern aus.

Hinweis: Wählen Sie für Protokollebene INFO aus, um Ausführungsprotokolle für alle Anforderungen zu generieren.

Lambda-Funktionsberechtigungen

Der Fehler „Ungültige Berechtigungen für Lambda-Funktion“ tritt auf, wenn API Gateway nicht über Berechtigungen zum Aufrufen der Lambda-Funktion verfügt. Informationen zum Beheben dieses Problems finden Sie unter Wie behebe ich „Ungültige Berechtigungen für Lambda-Funktion“-Fehler von API-Gateway-REST-APIs?

Hinweis: Wenn Sie einen anderen Service als AWS CloudFormation verwendet haben, um Ihre API-Gateway-Ressourcen bereitzustellen, stellen Sie sicher, dass Sie über Berechtigungen für die Ressource AWS::Lambda::Permission verfügen.

Drosselungsprobleme

Wenn der Backend-Service aufgrund einer hohen Anzahl von Anforderungen gedrosselt wird, gibt die API-Gateway-API möglicherweise einen „Internen Serverfehler“ an. Sie können ein exponentielles Backoff und einen Wiederholungsmechanismus aktivieren und die Anfrage erneut versuchen. Wenn das Problem weiterhin besteht, überprüfen Sie Ihr API-Gateway-Kontingentlimit. Wenn Sie das Limit ihres Service-Kontingents überschritten haben, können Sie eine Kontingenterhöhung beantragen.

Möglicherweise erhalten Sie aufgrund von Drosselungsproblemen der Lambda-Funktion auch die Fehler „Rate exceeded“ (Rate überschritten) und 429 „TooManyRequestsException“ (Ausnahme – zu viele Anfragen). Weitere Informationen finden Sie unter Wie behebe ich Fehler bei der Drosselung von Lambda-Funktionen mit den Fehlern "Rate exceeded" (Rate überschritten) und 429 "TooManyRequestsException" (Ausnahme – zu viele Anfragen)?

Sie können auch eine Erhöhung des Gleichzeitigkeitslimits der Lambda-Funktion beantragen, damit die Funktion nicht gedrosselt wird. Eine Anleitung finden Sie unter Wie beantrage ich eine Erhöhung der Gleichzeitigkeitsgrenze für meine Lambda-Funktion?

Falsche oder fehlende HTTP-Statuscode-Zuordnung

Eine falsche oder fehlende HTTP-Statuscode-Zuordnung kann ebenfalls zu 500-Fehlern führen, wie etwa den Folgenden:

„Ausführung wegen eines Konfigurationsfehlers fehlgeschlagen: Die Ausgabezuordnung bezieht sich auf eine ungültige Methodenantwort: 2xx/4xx/5xx“.

Um diesen Fehler zu beheben, stellen Sie sicher, dass eine API-Methodenantwort für den vom Backend zurückgegebenen Statuscode vorhanden und korrekt zugeordnet ist.

Nicht behandelte Fehler

Nicht behandelte Fehler in Lambda weisen darauf hin, dass die Funktion aufgrund von Fehlern im Funktionscode eine Zeitüberschreitung aufweist. Um diesen Fehler zu verhindern, stellen Sie sicher, dass der Lambda-Funktionscode idempotent ist.

Sie können auch das Debugging-Tool AWS X-Ray verwenden, um weitere Informationen darüber zu erhalten, wie lange verschiedene Abschnitte des Codes Ihrer Funktion für die Fertigstellung benötigen.

Weitere Informationen finden Sie unter Fehlerbehandlungsmuster in Amazon API Gateway und AWS Lambda.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?