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 Viewer-Request-Funktionen verwenden. Für Viewer-Response-Funktionen ist diese Methode leer.
Verwenden Sie dieses JavaScript Objekt, um den Flughafencode für den Edge-Standort, die erwartete regionale Edge-Cache-Region oder die CloudFront Server-IP-Adresse abzurufen, die zur 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 der primäre REC und der 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.
raw QueryString () -Methode
Für diese Methode ist das cloudFront Modul nicht erforderlich.
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 vorangestellte Zeichenfolge zurück. ?
-
Wenn es keine Abfragezeichenfolge gibt, diese aber vorhanden
?ist, gibt die Funktion eine leere Zeichenfolge zurück. -
Wenn keine Abfragezeichenfolge vorhanden ist und die
?nicht vorhanden ist, kehrt die Funktion zurückundefined.
- Fall 1: Die gesamte Abfragezeichenfolge wird zurückgegeben (ohne vorangestelltes Zeichen
?) -
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 wird 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
log CustomData () -Methode
Um diese Methode zu verwenden, importieren Sie das cloudfront Modul.
Verwenden Sie die logCustomData() Methode, um benutzerdefinierte Daten aus Ihrer CloudFront Amazon-Funktion in CloudFront Zugriffsprotokolle zu senden. Die Daten werden in das viewer-response-log-data Protokollfeld viewer-request-log-data oder 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, JSON.stringify() konvertieren Sie es zuerst in eine Zeichenfolge. 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 größer als 800 Byte sind. URL-encoding Wenn Ihre Funktion innerhalb einer einzigen Ausführung logCustomData() mehrmals aufgerufen wird, CloudFront wird nur der letzte Wert verwendet.
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 Verwenden Sie Zugriffsprotokolle in Echtzeit Echtzeit-Protokollkonfiguration oder zur Standardprotokollierung (v2) hinzufügen.
Unterschied zu console.log ()
Die logCustomData() Methode ersetzt console.log() CloudFront Funktionen nicht. Wird verwendetconsole.log(), um Protokollzeilen an Amazon CloudWatch Logs zu senden. Wird verwendetcf.logCustomData(), um benutzerdefinierte Daten für den CloudFront Zugriff auf Protokolle 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; }