Testen und Debuggen von Lambda @Edge -Funktionen - Amazon CloudFront

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.

Testen und Debuggen von Lambda @Edge -Funktionen

Es ist wichtig, dass Sie Ihren Lambda @Edge -Funktionscode eigenständig testen, um sicherzustellen, dass er die beabsichtigte Aufgabe erfüllt, und Integrationstests durchzuführen, um sicherzustellen, dass die Funktion korrekt funktioniert. CloudFront

Während des Integrationstests oder nach der Bereitstellung Ihrer Funktion müssen Sie möglicherweise Fehler wie HTTP CloudFront 5xx-Fehler debuggen. Fehler können eine ungültige Antwort der Lambda-Funktion, Ausführungsfehler beim Auslösen der Funktion oder Fehler aufgrund einer Ablehnung der Ausführung durch den Lambda-Service sein. Die Abschnitte in diesem Thema enthalten Strategien, um festzustellen, welche Art von Fehler das Problem verursacht. Dazu finden Sie Schritte, die Sie unternehmen können, um das Problem zu beheben.

Anmerkung

Achten Sie bei der Überprüfung von CloudWatch Protokolldateien oder Metriken bei der Behebung von Fehlern darauf, dass diese an dem Ort angezeigt oder gespeichert werden, der dem Ort, an dem die Funktion ausgeführt wurde, AWS-Region am nächsten ist. Wenn Sie also eine Website oder Webanwendung mit Benutzern im Vereinigten Königreich haben und Ihrer Distribution beispielsweise eine Lambda-Funktion zugeordnet ist, müssen Sie die Region ändern, um die CloudWatch Metriken oder Protokolldateien für London AWS-Region anzuzeigen. Weitere Informationen finden Sie unter Ermitteln Sie die Lambda @Edge -Region.

Testen Sie Ihre Lambda @Edge -Funktionen

Der Test Ihrer Lambda-Funktion besteht aus zwei Schritten: eigenständiger Test und Integrationstest.

Eigenständiger Test der Funktionalität

Bevor Sie Ihre Lambda-Funktion hinzufügen CloudFront, stellen Sie sicher, dass Sie die Funktionalität zuerst testen, indem Sie die Testfunktionen in der Lambda-Konsole oder andere Methoden verwenden. Weitere Informationen zum Testen in der Lambda-Konsole finden Sie unter Aufrufen einer Lambda-Funktion mithilfe der Konsole im Entwicklerhandbuch.AWS Lambda

Testen Sie den Betrieb Ihrer Funktion in CloudFront

Es ist wichtig, Integrationstests abzuschließen, bei denen Ihre Funktion einer Distribution zugeordnet ist und auf der Grundlage eines CloudFront Ereignisses ausgeführt wird. Stellen Sie sicher, dass die Funktion für das richtige Ereignis ausgelöst wird und eine gültige und korrekte Antwort zurückgibt CloudFront. Stellen Sie beispielsweise sicher, dass die Ereignisstruktur korrekt ist, dass nur gültige Header enthalten sind usw.

Wenn Sie die Integrationstests mit Ihrer Funktion in der Lambda-Konsole wiederholen, folgen Sie den Schritten im Lambda @Edge -Tutorial, wenn Sie Ihren Code oder den CloudFront Trigger ändern, der Ihre Funktion aufruft. Stellen Sie beispielsweise sicher, dass Sie mit einer nummerierten Version Ihrer Funktion arbeiten, wie in diesem Schritt des Tutorials beschrieben: Schritt 4: Fügen Sie einen CloudFront Trigger hinzu, um die Funktion auszuführen.

Beachten Sie beim Vornehmen von Änderungen und deren Bereitstellung, dass es mehrere Minuten dauern kann, bis Ihre aktualisierte Funktion und CloudFront Trigger in allen Regionen repliziert sind. Dies dauert in der Regel wenige Minuten, kann jedoch auch bis zu 15 Minuten dauern.

Sie können überprüfen, ob die Replikation abgeschlossen ist, indem Sie zur CloudFront Konsole gehen und sich Ihre Distribution ansehen.

Um zu überprüfen, ob die Bereitstellung Ihrer Replikation abgeschlossen ist
  1. Öffnen Sie die CloudFront Konsole unterhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Wählen Sie den Distributionsnamen.

  3. Überprüfen Sie, ob sich der Status der Verteilung von InProgress (Läuft) zurück auf Deployed (Bereitgestellt) geändert hat, d.h. Ihre Funktion wurde repliziert. Anschließend befolgen Sie die Schritte im nächsten Abschnitt, um zu überprüfen, ob die Funktion funktioniert.

Beachten Sie, dass das Testen in der Konsole nur die Logik Ihrer Funktion validiert und keine Servicekontingente (früher als Limits bezeichnet) anwendet, die spezifisch für Lambda@Edge sind.

Identifizieren Sie Lambda @Edge -Funktionsfehler in CloudFront

Nachdem Sie überprüft haben, ob Ihre Funktionslogik korrekt funktioniert, werden möglicherweise immer noch HTTP 5xx-Fehler angezeigt, wenn Ihre Funktion ausgeführt wird. CloudFront HTTP 5xx-Fehler können aus einer Vielzahl von Gründen zurückgegeben werden, darunter Lambda-Funktionsfehler oder andere Probleme in. CloudFront

  • Wenn Sie Lambda @Edge -Funktionen verwenden, können Sie Diagramme in der CloudFront Konsole verwenden, um herauszufinden, was den Fehler verursacht, und dann daran arbeiten, ihn zu beheben. Sie können beispielsweise sehen, ob HTTP 5xx-Fehler durch CloudFront oder durch Lambda-Funktionen verursacht werden, und dann können Sie für bestimmte Funktionen zugehörige Protokolldateien einsehen, um das Problem zu untersuchen.

  • Informationen zur allgemeinen Behebung von HTTP-Fehlern finden Sie in CloudFront den Schritten zur Fehlerbehebung im folgenden Thema:. Fehlerbehebung bei Fehlermeldungen Ihres Ursprungsservers

Was verursacht Lambda @Edge -Funktionsfehler in CloudFront

Es gibt mehrere Gründe, aus denen eine Lambda-Funktion einen HTTP 5xx-Fehler verursachen kann. Die Schritte zur Fehlerbehebung hängen von der Art des Fehlers ab. Fehler können wie folgt kategorisiert werden:

Ein Lambda-Funktionsausführungsfehler.

Ein Ausführungsfehler tritt auf, wenn Sie CloudFront keine Antwort von Lambda erhalten, weil die Funktion unbehandelte Ausnahmen enthält oder ein Fehler im Code vorliegt. Zum Beispiel, wenn der Code "callback(Error)" beinhaltet.

Eine ungültige Lambda-Funktionsantwort wird zurückgegeben an CloudFront

CloudFront Erhält nach der Ausführung der Funktion eine Antwort von Lambda. Ein Fehler wird zurückgegeben, wenn die Objektstruktur der Antwort nicht der Lambda@Edge-Ereignisstruktur entspricht oder die Antwort ungültige Header oder andere ungültige Felder enthält.

Die Ausführung in CloudFront wird aufgrund von Lambda-Servicequotas (früher als Limits bezeichnet) gedrosselt

Der Lambda-Service drosselt die Ausführung in jeder Region und gibt einen Fehler zurück, wenn Sie das Kontingent überschreiten. Weitere Informationen finden Sie unter Kontingente für Lambda@Edge.

So bestimmten Sie den Typ des Fehlers

Um Ihnen bei der Entscheidung zu helfen, worauf Sie sich beim Debuggen und bei der Behebung von Fehlern konzentrieren sollten, ist es hilfreich CloudFront, herauszufinden, warum CloudFront ein HTTP-Fehler zurückgegeben wird. Zu Beginn können Sie die Grafiken verwenden, die im Abschnitt Überwachung der CloudFront Konsole auf dem AWS Management Console bereitgestellt werden. Weitere Informationen zum Anzeigen von Diagrammen im Bereich Überwachung der CloudFront Konsole finden Sie unterÜberwachen Sie CloudFront Metriken mit Amazon CloudWatch.

Die folgenden Diagramme sind besonders hilfreich, wenn Sie nachverfolgen möchten, ob Fehler von Ursprungs-Servern oder einer Lambda-Funktion zurückgegeben werden, und wenn Sie die Art des Problems eingrenzen möchten, wenn der Fehler aus einer Lambda-Funktion resultiert.

Fehlerratendiagramm

Eines der Diagramme, das Sie auf der Registerkarte Overview (Überblick) für Ihre Verteilungen anzeigen können, ist das Diagramm Error rates (Fehlerraten). Dieses Diagramm zeigt die Rate der Fehler als Prozentsatz aller Anforderungen an, die bei Ihren Verteilungen eingehen. Das Diagramm zeigt die Gesamtfehlerrate, die gesamten 4xx-Fehler, die gesamten 5xx-Fehler und die gesamten 5xx-Fehler an, die aus Lambda-Funktionen resultieren. Basierend auf Fehlertyp und Anzahl können Sie Schritte unternehmen, um diese Probleme zu untersuchen und zu beheben.

Diagramm der Fehlerraten für eine CloudFront Verteilung
  • Wenn Lambda-Fehler auftreten, können Sie eine genauere Untersuchung durchführen, indem Sie sich die spezifischen Arten von Fehlern ansehen, die von der Funktion zurückgegeben werden. Die Registerkarte Lambda@Edge errors (Lambda@Edge-Fehler) enthält Diagramme, die Funktionsfehler nach Typ kategorisieren, damit Sie das Problem für eine bestimmte Funktion herausfinden können.

  • Wenn Sie CloudFront Fehler sehen, können Sie Fehler beheben und daran arbeiten, die ursprünglichen Fehler zu beheben oder Ihre CloudFront Konfiguration zu ändern. Weitere Informationen finden Sie unter Fehlerbehebung bei Fehlermeldungen Ihres Ursprungsservers.

Diagramme für Ausführungsfehler und ungültige Funktionsanworten

Die Registerkarte Lambda@Edge errors (Lambda@Edge-Fehler) enthält Diagramme, die Lambda@Edge-Fehler für eine bestimmte Verteilung nach Typ kategorisieren. In einem Diagramm werden beispielsweise alle Ausführungsfehler von angezeigt AWS-Region.

Um die Behebung von Problemen zu vereinfachen, können Sie nach bestimmten Problemen suchen, indem Sie die Protokolldateien für bestimmte Funktionen nach Regionen öffnen und untersuchen.

Um Protokolldateien für eine bestimmte Funktion nach Region aufgeschlüsselt anzuzeigen
  1. Wählen Sie auf der Registerkarte Lambda @Edge -Fehler unter Zugeordnete Lambda @Edge -Funktionen den Funktionsnamen und dann Metriken anzeigen aus.

  2. Wählen Sie anschließend auf der Seite mit Ihrem Funktionsnamen in der oberen rechten Ecke die Option Funktionsprotokolle anzeigen und dann eine Region aus.

    Wenn Sie beispielsweise Probleme im Fehlerdiagramm für die Region USA West (Oregon) sehen, wählen Sie diese Region aus der Dropdownliste aus. Dadurch wird die CloudWatch Amazon-Konsole geöffnet.

  3. Wählen Sie in der CloudWatch Konsole für diese Region unter Protokollstreams einen Protokollstream aus, um die Ereignisse für die Funktion anzuzeigen.

Lesen Sie darüber hinaus die folgenden Abschnitte in diesem Kapitel, um weitere Empfehlungen für die Behebung von Fehlern zu erhalten.

Drosselungsdiagramm

Die Registerkarte Lambda@Edge errors (Lambda@Edge-Fehler) enthält auch ein Diagramm zu Drosselungen. In einigen Situationen drosselt der Lambda-Service Ihre Funktionsaufrufe auf Regionsbasis, wenn Sie sich dem regionalen Kontingent (früher als Limit bezeichnet) für die Gleichzeitigkeit nähern. Wenn Sie einen limit exceeded (Grenzwert überschritten)-Fehler sehen, hat Ihre Funktion ein Kontingent erreicht, das der Lambda-Service für Ausführungen in einer Region nutzt. Weitere Informationen, u. a. auch zur Erhöhung des Kontingents, finden Sie unter Kontingente für Lambda@Edge.

Drosseldiagramm für die Ausführung der Lambda @Edge -Funktion.

Ein Beispiel zur Verwendung dieser Informationen beim Beheben von HTTP-Fehlern finden Sie unter Vier Schritte zum Debuggen der Bereitstelllung von Inhalten in AWS.

Fehlerbehebung bei ungültigen Lambda @Edge -Funktionsantworten (Validierungsfehler)

Wenn Sie feststellen, dass es sich bei Ihrem Problem um einen Lambda-Validierungsfehler handelt, bedeutet dies, dass Ihre Lambda-Funktion eine ungültige Antwort auf zurückgibt. CloudFront Folgen Sie den Anweisungen in diesem Abschnitt, um Maßnahmen zur Überprüfung Ihrer Funktion zu ergreifen und sicherzustellen, dass Ihre Antwort den Anforderungen entspricht. CloudFront

CloudFront validiert die Antwort einer Lambda-Funktion auf zwei Arten:

  • Die Lambda-Antwort muss der gewünschten Objektstruktur entsprechen. Beispiele für eine fehlerhafte Objektstruktur sind: nicht interpretierbarer JSON-Code, fehlende Pflichtfelder und ein ungültiges Objekt in der Antwort. Weitere Informationen hierzu finden Sie unter Lambda@Edge-Ereignisstruktur.

  • Die Antwort darf nur gültige Objektwerte beinhalten. Ein Fehler tritt auf, wenn die Antwort ein gültiges Objekt aber nicht unterstützte Werte enthält. Beispiele sind das Hinzufügen oder Aktualisieren von ungültigen Headern oder schreibgeschützten Headern (siehe Einschränkungen für Edge-Funktionen), das Überschreiten der maximalen Body-Größe (siehe Beschränkungen für die Größe der generierten Antwort im Thema Lambda@Edge Fehler) und ungültige Zeichen oder Werte (siehe Lambda@Edge-Ereignisstruktur).

Wenn Lambda eine ungültige Antwort auf zurückgibt CloudFront, werden Fehlermeldungen in Protokolldateien geschrieben, die in die Region CloudFront übertragen werden, CloudWatch in der die Lambda-Funktion ausgeführt wurde. Dies ist das Standardverhalten, an das die Protokolldateien gesendet werden, CloudWatch wenn eine ungültige Antwort eingeht. Wenn Sie jedoch eine Lambda-Funktion mit verknüpft haben, CloudFront bevor die Funktionalität veröffentlicht wurde, ist sie möglicherweise nicht für Ihre Funktion aktiviert. Weitere Informationen finden Sie weiter unten in diesem Thema unter Feststellen, ob Ihr Konto CloudWatch Logs weiterleitet.

CloudFront überträgt Protokolldateien in die Region, die der Region entspricht, in der Ihre Funktion ausgeführt wurde, in der Protokollgruppe, die Ihrer Distribution zugeordnet ist. Protokollgruppen haben das folgende Format:/aws/cloudfront/LambdaEdge/DistributionId, wo DistributionIdist die ID Ihrer Distribution. Informationen zur Bestimmung der Region, in der Sie die CloudWatch Protokolldateien finden, finden Sie unter Bestimmung der Lambda @Edge -Region weiter unten in diesem Thema.

Wenn der Fehler reproduzierbar ist, können Sie eine neue Anfrage erstellen, die zu dem Fehler führt, und dann die Anforderungs-ID in einer fehlgeschlagenen CloudFront Antwort (X-Amz-Cf-IdHeader) suchen, um einen einzelnen Fehler in den Protokolldateien zu lokalisieren. Der Eintrag in der Protokolldatei enthält Informationen, die Ihnen bei der Identifizierung Ursache für den Fehler helfen können. Er zeigt außerdem die entsprechende Lambda-Anforderungs-ID an, mit der Sie die Ursache im Kontext einer einzelnen Anforderung analysieren können.

Wenn ein Fehler nur sporadisch auftritt, können Sie mithilfe von CloudFront Zugriffsprotokollen die Anforderungs-ID für eine fehlgeschlagene Anfrage ermitteln und anschließend die CloudWatch Protokolle nach den entsprechenden Fehlermeldungen durchsuchen. Weitere Informationen finden Sie im vorherigen Abschnitt Bestimmung der Fehlerart.

Behebung von Fehlern bei der Ausführung der Lambda @Edge -Funktion

Wenn es sich bei dem Problem um einen Lambda-Ausführungsfehler handelt, kann es hilfreich sein, Protokollierungsanweisungen für Lambda-Funktionen zu erstellen, Meldungen in CloudWatch Protokolldateien zu schreiben, die die Ausführung Ihrer Funktion überwachen CloudFront und feststellen, ob sie wie erwartet funktioniert. Anschließend können Sie in den CloudWatch Protokolldateien nach diesen Anweisungen suchen, um zu überprüfen, ob Ihre Funktion funktioniert.

Anmerkung

Auch wenn Sie Ihre Lambda@Edge-Funktion nicht geändert haben, kann diese durch Aktualisierungen der Lambda-Funktionsausführungsumgebung beeinträchtigt werden und einen Ausführungsfehler ausgeben. Informationen zum Testen und Migrieren auf eine neuere Version finden Sie unter Kommende Updates für die AWS Lambda- und AWS Lambda @Edge -Ausführungsumgebung.

Ermitteln Sie die Lambda @Edge -Region

Um die Regionen zu sehen, in denen Ihre Lambda @Edge -Funktion Traffic empfängt, sehen Sie sich die Metriken für die Funktion auf der CloudFront Konsole auf der AWS Management Console an. Metriken werden für jede AWS Region angezeigt. Auf derselben Seite können Sie eine Region auswählen und Protokolldateien für diese anzeigen, um Probleme näher zu untersuchen. Sie müssen die CloudWatch Protokolldateien in der richtigen AWS Region überprüfen, um die Protokolldateien zu sehen, die bei der CloudFront Ausführung Ihrer Lambda-Funktion erstellt wurden.

Weitere Informationen zum Anzeigen von Diagrammen im Bereich Überwachung der CloudFront Konsole finden Sie unterÜberwachen Sie CloudFront Metriken mit Amazon CloudWatch.

Ermitteln Sie, ob Ihr Konto Logs an weiterleitet CloudWatch

CloudFront Aktiviert standardmäßig die Protokollierung ungültiger Lambda-Funktionsantworten und überträgt die Protokolldateien CloudWatch mithilfe einer der. Serviceverknüpfte Rollen für Lambda@Edge Wenn Sie Lambda @Edge -Funktionen haben, die Sie hinzugefügt haben, CloudFront bevor die Funktion für das Protokoll der ungültigen Lambda-Funktionsantwort veröffentlicht wurde, wird die Protokollierung aktiviert, wenn Sie Ihre Lambda @Edge -Konfiguration das nächste Mal aktualisieren, z. B. indem Sie einen Trigger hinzufügen. CloudFront

Gehen Sie wie folgt vor, um zu überprüfen, ob die Übertragung der Protokolldateien an für Ihr Konto aktiviert CloudWatch ist:

  • Prüfen Sie, ob die Protokolle in erscheinen CloudWatch — Achten Sie darauf, dass Sie in der Region suchen, in der die Lambda @Edge -Funktion ausgeführt wurde. Weitere Informationen finden Sie unter Ermitteln Sie die Lambda @Edge -Region.

  • Stellen Sie fest, ob die zugehörige serviceverknüpfte Rolle in Ihrem Konto in IAM vorhanden ist — Sie müssen die IAM-Rolle AWSServiceRoleForCloudFrontLogger in Ihrem Konto haben. Weitere Informationen über diese Rolle finden Sie unter Serviceverknüpfte Rollen für Lambda@Edge.