View a markdown version of this page

Méthodes d'assistance générales - Amazon CloudFront

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Méthodes d'assistance générales

Cette page fournit des méthodes d'assistance supplémentaires dans CloudFront Functions. Pour utiliser ces méthodes, créez une CloudFront fonction à l'aide de JavaScript Runtime 2.0.

import cf from 'cloudfront';

Pour de plus amples informations, veuillez consulter JavaScript fonctionnalités d'exécution 2.0 pour CloudFront Functions.

Métadonnées EdgeLocation

Cette méthode nécessite l'utilisation du cloudfront module.

Note

Vous ne pouvez utiliser cette méthode que pour les fonctions de demande de consultation. Pour les fonctions de réponse du spectateur, cette méthode est vide.

Utilisez cet JavaScript objet pour obtenir le code de l'aéroport de localisation périphérique, la région de cache périphérique régionale attendue ou l'adresse IP CloudFront du serveur utilisée pour traiter la demande. Ces métadonnées ne sont disponibles que lors du déclencheur de l'événement de demande du spectateur.

cf.edgeLocation = { name: SEA serverIp: 1.2.3.4 region: us-west-2 }

L'cf.edgeLocationobjet peut contenir les éléments suivants :

name

Le code IATA à trois lettres de l'emplacement périphérique qui a traité la demande.

IP du serveur

Adresse IPv4 ou IPv6 du serveur qui a traité la demande.

region

Le cache périphérique CloudFront régional (REC) que la demande est censée utiliser en cas d'échec du cache. Cette valeur n'est pas mise à jour si le REC attendu n'est pas disponible et qu'un REC de sauvegarde est utilisé pour la demande. Cela n'inclut pas l'emplacement d'Origin Shield utilisé, sauf dans les cas où le REC principal et l'Origin Shield se trouvent au même endroit.

Note

CloudFront Les fonctions ne sont pas invoquées une seconde fois lorsqu'elles CloudFront sont configurées pour utiliser le basculement d'origine. Pour de plus amples informations, veuillez consulter Optimisez la haute disponibilité grâce au basculement CloudFront d'origine.

méthode raw QueryString ()

Cette méthode ne nécessite pas le cloudFront module.

Utilisez rawQueryString() cette méthode pour récupérer la chaîne de requête non analysée et non modifiée sous forme de chaîne.

Demande

function handler(event) { var request = event.request; const qs = request.rawQueryString(); }

Réponse

Renvoie la chaîne de requête complète de la demande entrante sous forme de valeur de chaîne sans le début?.

  • S'il n'y a pas de chaîne de requête, mais ? que celle-ci est présente, les fonctions renvoient une chaîne vide.

  • S'il n'y a pas de chaîne de requête et si elle ? n'est pas présente, la fonction revientundefined.

Cas 1 : chaîne de requête complète renvoyée (sans début?)

URL de la demande entrante : https://example.com/page?name=John&age=25&city=Boston

rawQueryString()renvoie : "name=John&age=25&city=Boston"

Cas 2 : chaîne vide renvoyée (lorsqu'elle ? est présente mais sans paramètres)

URL de la demande entrante : https://example.com/page?

rawQueryString()renvoie : ""

Cas 3 : undefined renvoyé (aucune chaîne de requête et non?)

URL de la demande entrante : https://example.com/page

rawQueryString()renvoie : undefined

méthode log CustomData ()

Pour utiliser cette méthode, importez le cloudfront module.

Utilisez logCustomData() cette méthode pour envoyer des données personnalisées depuis votre CloudFront fonction Amazon dans les journaux CloudFront d'accès. Les données sont enregistrées dans le champ viewer-request-log-data ou dans le viewer-response-log-data journal, selon que la fonction est associée à une demande du spectateur ou à un événement de réponse du spectateur.

La méthode accepte un seul argument de chaîne. Pour enregistrer un objet, JSON.stringify() utilisez-le d'abord pour le convertir en chaîne. Par exemple :

const resp_obj = JSON.stringify(some_obj); cf.logCustomData(resp_obj);

Chaque champ prend en charge jusqu'à 800 octets de données. CloudFront automatiquement URL-encodes les données avant de les écrire dans le champ du journal. CloudFront tronque toutes les données supérieures à 800 octets par la suite. URL-encoding Si votre fonction appelle logCustomData() plusieurs fois au cours d'une même exécution, elle n' CloudFront utilise que la dernière valeur.

Ajoutez des champs à la configuration de votre journal

Pour recevoir ces données dans vos journaux CloudFront d'accès, vous devez ajouter les viewer-response-log-data champs viewer-request-log-data ou à votre configuration de journal en temps réel ou à votre configuration de journalisation standard (v2). CloudFront Functions ne prend pas en charge l'enregistrement personnalisé des données pour les points de présence intégrés (POP).

Différence avec console.log ()

La logCustomData() méthode ne remplace pas console.log() les CloudFront fonctions. console.log()À utiliser pour envoyer des lignes de journal à Amazon CloudWatch Logs. cf.logCustomData()À utiliser pour écrire des données personnalisées pour CloudFront accéder aux journaux (journaux en temps réel et journalisation standard (v2)). Vous pouvez utiliser les deux méthodes dans la même fonction. Pour plus d'informations, consultez la section Journaux des CloudFront fonctions.

La méthode utilise la syntaxe suivante :

cf.logCustomData(String);
Exemple Enregistrer un en-tête dans une fonction de demande d'affichage
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; }