View a markdown version of this page

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, Ihren Lambda @Edge -Funktionscode eigenständig zu testen, um sicherzustellen, dass er die beabsichtigte Aufgabe erfüllt, und Integrationstests durchzuführen, um sicherzustellen, dass die Funktion korrekt mit funktioniert. CloudFront

Während des Integrationstests oder nach der Bereitstellung Ihrer Funktion müssen Sie möglicherweise CloudFront Fehler debuggen, z. B. HTTP 5xx-Fehler. 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

Wenn Sie bei der Fehlerbehebung CloudWatch Protokolldateien oder Metriken überprüfen, beachten Sie, dass diese an dem Ort angezeigt oder gespeichert werden, der dem Ort, an dem die Funktion ausgeführt wurde, AWS-Region am nächsten liegt. 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 Bestimmen der Lambda@Edge-Region.

Testen der 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 mithilfe anderer Methoden verwenden. Weitere Informationen zu den Tests in der Lambda-Konsole finden Sie unter Aufrufen einer Lambda-Funktion mit der Konsole im Entwicklerhandbuch für AWS Lambda .

Testen Sie den Betrieb Ihrer Funktion in CloudFront

Es ist wichtig, den Integrationstest abzuschließen, bei dem 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 für CloudFront gültige und korrekte Antwort zurückgibt. Achten Sie beispielsweise darauf, dass die Ereignisstruktur korrekt ist, dass nur gültige Header enthalten sind usw.

Beachten Sie beim Iterieren der Integrationstests mit Ihrer Funktion in der Lambda-Konsole die Schritte im Lambda @Edge -Tutorial, während 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, dass es einige Minuten dauern kann, bis Ihre aktualisierten Funktionen und CloudFront Trigger in allen Regionen repliziert werden, wenn Sie Änderungen vornehmen und sie bereitstellen. 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.

So überprüfen Sie, 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 aus.

  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, dass Ihre Funktionslogik ordnungsgemäß 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, zu denen auch Lambda-Funktionsfehler oder andere Probleme gehören können. CloudFront

  • Wenn Sie Lambda @Edge -Funktionen verwenden, können Sie mithilfe von Diagrammen in der CloudFront Konsole herausfinden, 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 anzeigen, um das Problem zu untersuchen.

  • Informationen zur allgemeinen Behebung von HTTP-Fehlern finden Sie in CloudFront den Schritten zur Fehlerbehebung im folgenden Thema:. Problembehandlung bei Statuscodes für die Fehlerantwort in CloudFront

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 Lambda CloudFront keine Antwort erhält, weil die Funktion unbehandelte Ausnahmen enthält oder der Code einen Fehler enthält. Zum Beispiel, wenn der Code "callback(Error)" beinhaltet.

Eine ungültige Antwort auf die Lambda-Funktion 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-Servicekontingenten (früher bekannt als Limits) 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 der von zurückgegebenen Fehler konzentrieren sollten CloudFront, sollten Sie herausfinden, warum ein HTTP-Fehler zurückgegeben CloudFront wird. Für den Anfang können Sie die Grafiken verwenden, die im Bereich Überwachung der CloudFront Konsole auf der zur Verfügung stehen AWS-Managementkonsole. 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 mit den 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, diese zu beheben oder Ihre CloudFront Konfiguration zu ändern. Weitere Informationen finden Sie unter Problembehandlung bei Statuscodes für die Fehlerantwort in CloudFront.

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. So zeigt beispielsweise ein Diagramm alle Ausführungsfehler unterteilt nach AWS-Region an.

Damit Fehler einfacher erkannt und behoben werden können, können Sie nach bestimmten Problemen suchen, indem Sie die Protokolldateien für spezifische Funktionen regionsweise öffnen und prüfen.

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

  2. Klicken Sie anschließend auf der Seite mit dem Namen der Funktion rechts oben auf Funktionsprotokolle anzeigen und wählen Sie dann eine Region aus.

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

  3. Wählen Sie in der CloudWatch Konsole für diese Region unter Log-Streams einen Log-Stream 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.

Drosselungsdiagramm für die Lambda@Edge-Funktionsausführung

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 an zurückgibt. CloudFront Folgen Sie den Anweisungen in diesem Abschnitt, um Ihre Funktion zu überprüfen 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 übertragen CloudFront werden, CloudWatch in der die Lambda-Funktion ausgeführt wurde. Es ist das Standardverhalten, an das die Protokolldateien gesendet werden, CloudWatch wenn eine ungültige Antwort vorliegt. Wenn Sie jedoch CloudFront vor der Veröffentlichung der Funktion eine Lambda-Funktion zugeordnet haben, ist sie möglicherweise nicht für Ihre Funktion aktiviert. Weitere Informationen finden Sie unter Feststellen, ob Ihr Konto Protokolle an CloudWatch überträgt weiter unten im Thema.

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

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) ermitteln, 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 anhand von CloudFront Zugriffsprotokollen die Anforderungs-ID für eine fehlgeschlagene Anfrage ermitteln und dann in den CloudWatch Protokollen nach den entsprechenden Fehlermeldungen suchen. Weitere Informationen finden Sie im vorherigen Abschnitt Bestimmung der Fehlerart.

Fehlerbehebung bei Lambda@Edge-Funktionsausführungsfehlern

Handelt es sich bei dem Problem um einen Lambda-Ausführungsfehler, 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 erwartungsgemäß 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 Aktualisierungen der AWS Lambda- und AWS Lambda @Edge -Ausführungsumgebung.

Bestimmen der 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-Managementkonsole 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 Abschnitt „Überwachung“ der CloudFront Konsole finden Sie unterÜberwachen Sie CloudFront Metriken mit Amazon CloudWatch.

Stellen Sie fest, ob Ihr Konto Protokolle per Push an CloudWatch

CloudFront Aktiviert standardmäßig die Protokollierung ungültiger Lambda-Funktionsantworten und überträgt die Protokolldateien CloudWatch mithilfe einer der Service-linked Rollen für Lambda @Edge Wenn Sie über Lambda @Edge -Funktionen verfügen, die Sie CloudFront vor der Veröffentlichung der Protokollfunktion für ungültige Lambda-Funktionen hinzugefügt haben, ist die Protokollierung aktiviert, wenn Sie Ihre Lambda @Edge -Konfiguration das nächste Mal aktualisieren, z. B. durch Hinzufügen eines Triggers. CloudFront

Sie können überprüfen, ob das Übertragen der Protokolldateien in für Ihr Konto aktiviert CloudWatch ist, indem Sie wie folgt vorgehen:

  • Prüfen Sie, ob die Logs in angezeigt werden CloudWatch — Vergewissern Sie sich, dass Sie in der Region nachschauen, in der die Lambda @Edge -Funktion ausgeführt wurde. Weitere Informationen finden Sie unter Bestimmen der Lambda@Edge-Region.

  • Stellen Sie fest, ob die zugehörige serviceverknüpfte Rolle in Ihrem Konto in IAM vorhanden ist. Die IAM-Rolle AWSServiceRoleForCloudFrontLogger muss in Ihrem Konto vorhanden sein. Weitere Informationen über diese Rolle finden Sie unter Service-linked Rollen für Lambda @Edge.