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.
Allgemeine Hilfsmethoden
Diese Seite bietet zusätzliche Hilfsmethoden innerhalb von CloudFront Functions. Um diese Methoden zu verwenden, erstellen Sie eine CloudFront Funktion mit JavaScript Runtime 2.0.
import cf from 'cloudfront';
Weitere Informationen finden Sie unter JavaScript Runtime 2.0-Funktionen für CloudFront Funktionen.
EdgeLocation-Metadaten
Diese Methode erfordert die Verwendung des cloudfront Moduls.
Anmerkung
Sie können diese Methode nur für Funktionen verwenden, die von Zuschauern angefordert werden. Für Zuschauer-Antwort-Funktionen ist diese Methode leer.
Verwenden Sie dieses JavaScript Objekt, um den Flughafencode des Edge-Standorts, die erwartete regionale Edge-Cache-Region oder die CloudFront Server-IP-Adresse abzurufen, die für die Bearbeitung der Anfrage verwendet wurde. Diese Metadaten sind nur für den Event-Trigger der Viewer-Anforderung verfügbar.
cf.edgeLocation = { name: SEA serverIp: 1.2.3.4 region: us-west-2 }
Das cf.edgeLocation Objekt kann Folgendes enthalten:
- Name
-
Der aus drei Buchstaben bestehende IATA-Code
des Edge-Standorts, der die Anfrage bearbeitet hat. - Server-IP
-
Die IPv4- oder IPv6-Adresse des Servers, der die Anfrage bearbeitet hat.
- Region
-
Der CloudFront Regional Edge Cache (REC), den die Anfrage voraussichtlich verwenden wird, wenn ein Cache-Fehler auftritt. Dieser Wert wird nicht aktualisiert, falls der erwartete REC nicht verfügbar ist und ein Backup-REC für die Anfrage verwendet wird. Dies beinhaltet nicht, dass der Origin Shield-Standort verwendet wird, außer in Fällen, in denen sich das primäre REC und das Origin Shield am selben Standort befinden.
Anmerkung
CloudFront Functions wird kein zweites Mal aufgerufen, wenn CloudFront es für die Verwendung von Origin-Failover konfiguriert ist. Weitere Informationen finden Sie unter Optimieren Sie die Hochverfügbarkeit mit CloudFront Origin Failover.
Methode raw QueryString ()
Diese Methode benötigt das cloudFront Modul nicht.
Verwenden Sie die rawQueryString() Methode, um die ungeparste und unveränderte Abfragezeichenfolge als Zeichenfolge abzurufen.
Anforderung
function handler(event) { var request = event.request; const qs = request.rawQueryString(); }
Antwort
Gibt die vollständige Abfragezeichenfolge der eingehenden Anfrage als Zeichenkettenwert ohne den Anfang zurück. ?
-
Wenn es keine Abfragezeichenfolge gibt, aber die vorhanden
?ist, geben die Funktionen eine leere Zeichenfolge zurück. -
Wenn es keine Abfragezeichenfolge gibt und die
?nicht vorhanden ist, gibt die Funktion zurückundefined.
- Fall 1: Die vollständige Abfragezeichenfolge wurde zurückgegeben (ohne Leerzeichen
?) -
URL der eingehenden Anfrage:
https://example.com/page?name=John&age=25&city=BostonrawQueryString()gibt zurück:"name=John&age=25&city=Boston" - Fall 2: Es wurde eine leere Zeichenfolge zurückgegeben (wenn sie vorhanden
?ist, aber ohne Parameter) -
URL der eingehenden Anfrage:
https://example.com/page?rawQueryString()gibt zurück:"" - Fall 3:
undefinedzurückgegeben (keine Abfragezeichenfolge und nein?) -
URL der eingehenden Anfrage:
https://example.com/pagerawQueryString()gibt zurück:undefined
Methode log CustomData ()
Um diese Methode zu verwenden, importieren Sie das cloudfront Modul.
Verwenden Sie logCustomData() diese Methode, um benutzerdefinierte Daten von Ihrer CloudFront Amazon-Funktion in CloudFront Zugriffsprotokolle zu senden. Die Daten werden in das viewer-request-log-data oder viewer-response-log-data Protokollfeld geschrieben, je nachdem, ob die Funktion mit einer Zuschaueranfrage oder einem Zuschauerantwortereignis verknüpft ist.
Die Methode akzeptiert ein einzelnes Zeichenkettenargument. Um ein Objekt zu protokollieren, verwenden Sie JSON.stringify() zunächst, um es in eine Zeichenfolge zu konvertieren. Beispiel:
const resp_obj = JSON.stringify(some_obj); cf.logCustomData(resp_obj);
Jedes Feld unterstützt bis zu 800 Byte an Daten. CloudFront automatisch URL-encodes die Daten, bevor sie in das Protokollfeld geschrieben werden. CloudFront schneidet danach alle Daten ab, die mehr als 800 Byte groß sind. URL-encoding Wenn Ihre Funktion innerhalb einer einzigen Ausführung logCustomData() mehrmals aufgerufen wird, CloudFront verwendet sie nur den letzten Wert.
Fügen Sie Ihrer Protokollkonfiguration Felder hinzu
Um diese Daten in Ihren CloudFront Zugriffsprotokollen zu erhalten, müssen Sie die viewer-response-log-data Felder viewer-request-log-data oder zu Ihrer Konfiguration für das Echtzeitprotokoll oder die Standardprotokollierung (v2) hinzufügen. CloudFront Functions unterstützt keine benutzerdefinierte Datenprotokollierung für eingebettete Points of Presence (POPs).
Unterschied zu console.log ()
Die logCustomData() Methode ersetzt nicht console.log() für CloudFront Functions. Wird verwendetconsole.log(), um Protokollzeilen an Amazon CloudWatch Logs zu senden. Wird verwendetcf.logCustomData(), um benutzerdefinierte Daten in CloudFront Zugriffsprotokolle zu schreiben (Echtzeitprotokolle und Standardprotokollierung (v2)). Sie können beide Methoden in derselben Funktion verwenden. Weitere Informationen finden Sie unter CloudFront Funktionsprotokolle.
Die Methode verwendet die folgende Syntax:
cf.logCustomData(String);
Beispiel Protokollieren Sie einen Header in einer Viewer-Anforderungsfunktion
import cf from 'cloudfront'; function handler(event) { var request = event.request; // Check if the debug header exists, if so log it if (request.headers['x-debug-header']) { // Log the debug header value cf.logCustomData("debug header found: " + request.headers['x-debug-header'].value); } return request; }