Testfunktionen - 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.

Testfunktionen

Bevor Sie die Funktion in der Live-Phase (Produktion) bereitstellen, können Sie sie testen, um sicherzustellen, dass sie wie vorgesehen funktioniert. Um eine Funktion zu testen, geben Sie ein Ereignisobjekt an, das eine HTTP-Anforderung oder Antwort darstellt, die Ihre CloudFront-Distribution in der Produktion erhalten könnte.

CloudFront Functions führt Folgendes aus:

  1. Führt die Funktion aus, wobei das bereitgestellte Ereignisobjekt als Eingabe verwendet wird.

  2. Gibt das Ergebnis der Funktion (das geänderte Ereignisobjekt) zusammen mit allen Funktionsprotokollen oder Fehlermeldungen und der Rechenauslastung der Funktion zurück. Weitere Informationen zur Computing-Nutzung finden Sie unter Informationen zur Rechenauslastung.

Anmerkung

Wenn Sie eine Funktion testen, überprüft CloudFront nur, ob Fehler bei der Funktionsausführung vorliegen. CloudFront überprüft nicht, ob die Anforderung nach der Veröffentlichung erfolgreich weitergeleitet wird. Wenn Ihre Funktion beispielsweise einen erforderlichen Header löscht, ist der Test erfolgreich, da kein Problem mit dem Code vorliegt. Wenn Sie die Funktion jedoch veröffentlichen und sie einer Distribution zuordnen, schlägt die bei einer Anforderung über CloudFront fehl.

Einrichten des Ereignisobjekts

Bevor Sie eine Funktion testen, müssen Sie das Ereignisobjekt einrichten, mit dem Sie sie testen können. Es gibt mehrere Möglichkeiten, dies zu tun.

Option 1: Einrichten eines Ereignisobjekts, ohne es zu speichern

Sie können ein Ereignisobjekt im visuellen Editor in der CloudFront-Konsole einrichten, ohne es zu speichern.

Sie können dieses Ereignisobjekt verwenden, um die Funktion von der CloudFront-Konsole aus zu testen, auch wenn es nicht gespeichert ist.

Option 2: Erstellen eines Ereignisobjekts im visuellen Editor

Sie können ein Ereignisobjekt im visuellen Editor in der CloudFront-Konsole einrichten, ohne es zu speichern. Sie können für jede Funktion 10 Ereignisobjekte erstellen, so dass Sie beispielsweise verschiedene mögliche Eingaben testen können.

Wenn Sie das Ereignisobjekt auf diese Weise erstellen, können Sie es verwenden, um die Funktion in der CloudFront-Konsole zu testen. Sie können es nicht verwenden, um die Funktion mit einer AWS-API oder einem SDK zu testen.

Option 3: Erstellen eines Ereignisobjekts mit einem Texteditor

Sie können einen Texteditor verwenden, um ein Ereignisobjekt im JSON-Format zu erstellen. Informationen zur Struktur eines Ereignisobjekts finden Sie unter Ereignisstruktur.

Sie können dieses Ereignisobjekt verwenden, um die Funktion mit der CLI zu testen. Sie können es jedoch nicht verwenden, um die Funktion in der CloudFront-Konsole zu testen.

So erstellen Sie ein Ereignisobjekt (Option 1 oder 2)
  1. Melden Sie sich auf https://console.aws.amazon.com/cloudfront/v4/home#/functions bei der CloudFront-Konsole an und öffnen Sie die Seite Funktionen.

    Wählen Sie die Funktion, die Sie testen möchten.

  2. Wählen Sie auf der Seite der Funktionsdetails die Registerkarte Test aus.

  3. Wählen Sie für Ereignistyp eine der folgenden Optionen aus:

    • Wenn die Funktion eine HTTP-Anfrage ändert oder basierend auf der Anfrage eine Antwort generiert, wählen Sie Betrachteranfrage aus. Der Abschnitt Anforderung wird angezeigt.

    • Wählen Sie Viewer-Antwort. Die Abschnitte Anforderung und Antwort werden angezeigt.

  4. Füllen Sie die Felder aus, die Sie in das Ereignis aufnehmen möchten. Sie können JSON bearbeiten wählen, um den unformatierten JSON-Code anzuzeigen.

  5. (Optional) Um das Ereignis zu speichern, wählen Sie Speichern aus, geben im Feld Testereignis speichern einen Namen ein und wählen Sie dann Speichern aus.

    Sie können auch JSON bearbeiten wählen, den unformatierten JSON-Code kopieren und in Ihrer eigenen Datei außerhalb von CloudFront speichern.

So erstellen Sie ein Ereignisobjekt (Option 3)

Erstellen Sie das Ereignisobjekt mit einem Texteditor. Speichern Sie die Datei in einem Verzeichnis, mit dem Ihr Computer eine Verbindung herstellen kann.

Vergewissern Sie sich, diese Richtlinien zu befolgen:

  • Ignorieren Sie die Felder distributionDomainName, distributionId und requestId.

  • Die Namen von Headern, Cookies und Abfragezeichenfolgen müssen in Kleinbuchstaben geschrieben sein.

Eine Möglichkeit, ein Ereignisobjekt auf diese Weise zu erstellen, besteht darin, mit dem visuellen Editor ein Beispiel zu erstellen. Sie können sicher sein, dass das Beispiel korrekt formatiert ist. Sie können dann den unformatierten JSON-Code kopieren, in einen Text-Editor einfügen und die Datei speichern.

Weitere Informationen zur Struktur eines Ereignisses finden Sie unter Ereignisstruktur.

Testen der Funktion

Sie können eine Funktion in der CloudFront-Konsole oder mit der AWS Command Line Interface (AWS CLI) testen.

Console
So testen Sie die -Funktion
  1. Melden Sie sich auf https://console.aws.amazon.com/cloudfront/v4/home#/functions bei der CloudFront-Konsole an und öffnen Sie die Seite Funktionen.

  2. Wählen Sie die Funktion, die Sie testen möchten.

  3. Wählen Sie die Registerkarte Test.

  4. Stellen Sie sicher, dass das korrekte Ereignis angezeigt wird. Um vom aktuell angezeigten Ereignis zu einem anderen zu wechseln, wählen Sie im Feld Testereignis auswählen ein anderes Ereignis aus.

  5. Wählen Sie Testfunktion aus. Die Konsole zeigt die Ausgabe der Funktion, einschließlich der Funktionsprotokolle und Rechenauslastung.

CLI

Sie können eine Funktion mit dem Befehl aws cloudfront test-function testen.

So testen Sie die -Funktion
  1. Öffnen Sie ein Befehlszeilenfenster.

  2. Führen Sie den folgenden Befehl über dasselbe Verzeichnis aus, das die angegebene Datei enthält.

    In diesem Beispiel wird die Notation fileb:// verwendet, um die Ereignisobjektdatei zu übergeben. Es sind Zeilenumbrüche enthalten, um den Befehl lesbarer zu machen.

    aws cloudfront test-function \ --name MaxAge \ --if-match ETVABCEXAMPLE \ --event-object fileb://event-maxage-test01.json \ --stage DEVELOPMENT
    Hinweise
    • Sie verweisen auf die Funktion mit ihrem Namen und ETag (im if-match-Parameter). Sie verweisen auf das Ereignisobjekt anhand seines Speicherorts in Ihrem Dateisystem.

    • Die Phase kann DEVELOPMENT oder LIVE sein.

    Wenn der Befehl erfolgreich ausgeführt wurde, wird die Ausgabe folgendermaßen angezeigt.

    TestResult: ComputeUtilization: '21' FunctionErrorMessage: '' FunctionExecutionLogs: [] FunctionOutput: '{"response":{"headers":{"cloudfront-functions":{"value":"generated-by-CloudFront-Functions"},"location":{"value":"https://aws.amazon.com/cloudfront/"}},"statusDescription":"Found","cookies":{},"statusCode":302}}' FunctionSummary: FunctionConfig: Comment: MaxAge function Runtime: cloudfront-js-2.0 KeyValueStoreAssociations= \ {Quantity=1, \ Items=[{KeyValueStoreARN='arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111'}]} \ FunctionMetadata: CreatedTime: '2021-04-18T20:38:56.915000+00:00' FunctionARN: arn:aws:cloudfront::111122223333:function/MaxAge LastModifiedTime: '2023-17-20T10:38:57.057000+00:00' Stage: DEVELOPMENT Name: MaxAge Status: UNPUBLISHED
Hinweise
  • FunctionExecutionLogs enthält eine Liste von Protokollzeilen, die die Funktion in console.log()-Anweisungen geschrieben hat (falls vorhanden).

  • ComputeUtilization enthält Informationen zur Ausführung Ihrer Funktion. Siehe Informationen zur Rechenauslastung.

  • FunctionOutput enthält das von der Funktion zurückgegebene Ereignisobjekt.

Informationen zur Rechenauslastung

Rechenauslastung ist die Zeit, die die Ausführung der Funktion in Anspruch genommen hat, als Prozentsatz der maximal zulässigen Zeit. Zum Beispiel bedeutet ein Wert von 35, dass die Funktion in 35 % der maximal zulässigen Zeit abgeschlossen wurde.

Wenn eine Funktion die maximal zulässige Zeit kontinuierlich überschreitet, drosselt CloudFront die Funktion. Die folgende Liste zeigt, mit welcher Wahrscheinlichkeit eine Funktion basierend auf dem Wert der Rechenauslastung gedrosselt wird.

Rechenauslastungswert:

  • 1 – 50 – Die Funktion liegt deutlich unter der maximal zulässigen Zeit und sollte ohne Drosselung ausgeführt werden.

  • 51 – 70 – Die Funktion nähert sich der maximal zulässigen Zeit. Erwägen Sie die Optimierung des Funktionscodes.

  • 71 – 100 – Die Funktion kommt der maximal zulässigen Zeit sehr nahe oder überschreitet diese. CloudFront wird diese Funktion wahrscheinlich drosseln, wenn Sie sie einer Distribution zuordnen.