Wie behebe ich 500-, 502- und 503-Fehler, die durch Lambda@Edge-Funktionen in CloudFront verursacht werden?

Lesedauer: 3 Minute
0

Ich habe eine AWS-Lambda@Edge-Funktion mit einer Amazon-CloudFront-Verteilung verknüpft. Jetzt erhalte ich 500-, 502- oder 503-Fehler. Wie kann ich diese Fehler beheben?

Kurzbeschreibung

Lambda@Edge-500-, 502- und 503-Fehler weisen auf Folgendes hin:

  • Der HTTP 500-Statuscode zeigt an, dass die Lambda-Funktion einen Ausführungsfehler zurückgegeben hat.

  • Der HTTP 502-Statuscode zeigt an, dass die Antwort der Lambda-Funktion falsch formuliert wurde oder Inhalte enthielt, die nicht gültig sind.

  • Der HTTP 503-Statuscode zeigt an, dass CloudFront aufgrund von Lambda-Servicekontingenten (früher als Limits bezeichnet) gedrosselt ist.

In den folgenden Abschnitten werden die Ursachen des Fehlers und die Problembehandlung derer beschrieben.

Auflösung

Die Lambda@Edge-Funktion gibt einen Fehler von 500 zurück

Ein 500-Run-Fehler tritt auf, wenn CloudFront keine Antwort von Lambda erhält. Dies geschieht, weil es in der Funktion nicht behandelte Ausnahmen gibt, ein Fehler im Code vorliegt oder es sich um eine nicht unterstützte Ausführungsumgebung handelt.

Um den von Lambda@Edge generierten 500-Fehler zu beheben, müssen Sie Ihren Code debuggen, indem Sie Protokollierungsanweisungen für Lambda-Funktionen hinzufügen. Weitere Informationen finden Sie unter Vier Schritte zum Debuggen Ihrer Inhaltsbereitstellung in AWS und lesen Sie die Informationen unter I – Ausführungsfehler. Diese Protokollierungsanweisungen schreiben Meldungen in CloudWatch-Protokolldateien, die die Ausführung der CloudFront-Funktion überwachen. Sie können diese Anweisungen in den CloudWatch-Protokolldateien überprüfen, um sicherzustellen, dass die Funktion ordnungsgemäß funktioniert.

Weitere Informationen finden Sie unter Lambda-Funktionsfehler in Node.js und Lambda-Funktionsfehler in Python.

Die Lambda@Edge-Funktion gibt einen 502-Fehler zurück

Nachdem die Funktion ausgeführt wurde, erhält CloudFront eine Antwort von Lambda. Wenn die Objektstruktur der Antwort nicht der Lambda@Edge-Ereignisstruktur entspricht, wird ein 502-Fehler zurückgegeben. Ein 502-Fehler wird auch zurückgegeben, wenn die Antwort keine gültigen Header oder andere ungültige Felder enthält.

Um den von Lambda@Edge generierten 502-Fehler zu beheben, überprüfen Sie die Lambda@Edge-Funktion auf folgende häufig auftretende Probleme:

  • Zurückgegebenes JSON-Objekt
  • Fehlende Pflichtfelder
  • Die Antwort hat ein Objekt, das nicht gültig ist
  • Das Hinzufügen oder Aktualisieren ist nicht erlaubt oder es gibt schreibgeschützte Header
  • Überschreitung der maximalen Körpergröße
  • Zeichen oder Werte sind nicht gültig

Weitere Informationen finden Sie unter Testen und Debuggen von Lambda@Edge-Funktionen und Einschränkungen für Edge-Funktionen.

Die Lambda@Edge-Funktion gibt einen 503-Fehler zurück

Der Lambda-Service drosselt die Ausführung in jeder Region und gibt einen 503-Fehler zurück, wenn Sie das Kontingent überschreiten.

Um den 503-Fehler zu beheben, überprüfen Sie die Lambda@Edge-CloudWatch-Metriken und -Protokolldateien auf folgende häufig auftretende Probleme:

  • Gleichzeitige Ausführungen auf Basis der einzelnen Regionen
  • Funktionskontingente erreicht

Weitere Informationen finden Sie unter Kontingente auf Lambda@Edge.

Hinweis: Sie müssen die CloudWatch-Protokolldateien in der richtigen Region überprüfen, um die Protokolldateien anzuzeigen, die beim Ausführen der Lambda-Funktion durch CloudFront erstellt wurden.


Relevante Informationen

Bewährte Methoden für Lambda@Edge-Design

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren