Fonctions de test - Amazon CloudFront

Fonctions de test

Avant de déployer la fonction en phase réelle (production), vous pouvez la tester afin de vérifier qu’elle fonctionne comme prévu. Pour tester une fonction, indiquez un objet d’évènement qui représente une demande ou une réponse HTTP que votre distribution CloudFront pourrait recevoir en production.

CloudFront Functions effectue les opérations suivantes :

  1. Exécute la fonction, en utilisant l'objet d'événement fourni comme entrée.

  2. Renvoie le résultat de la fonction (l'objet d'évènement modifié) ainsi que les journaux de fonction ou les messages d'erreurs et l'utilisation du calcul de la fonction. Pour plus d'informations sur l'utilisation du calcul, consultez Présentation de l’utilisation du calcul.

Note

Lorsque vous testez une fonction, CloudFront vérifie uniquement les erreurs liées à l’exécution de la fonction. CloudFront ne vérifie pas si la demande sera traitée correctement une fois publiée. Par exemple, si votre fonction supprime un en-tête obligatoire, le test sera validé puisqu’aucune erreur n’est détectée dans le code. Cependant, si vous publiez la fonction et que vous l’associez à une distribution, la fonction échouera lorsqu’une demande sera effectuée via CloudFront.

Configuration de l’objet d’événement

Avant de tester une fonction, vous devez configurer l’objet d’événement avec lequel la tester. Il existe plusieurs options.

Option 1 : configurer un objet d’événement sans l’enregistrer

Vous pouvez configurer un objet d’événement dans l’éditeur visuel de la console CloudFront sans l’enregistrer.

Vous pouvez utiliser cet objet d’événement pour tester la fonction depuis la console CloudFront, même s’il n’est pas enregistré.

Option 2 : créer un objet d’événement dans l’éditeur visuel

Vous pouvez configurer un objet d’événement dans l’éditeur visuel de la console CloudFront sans l’enregistrer. Vous pouvez créer 10 objets d’événement pour chaque fonction afin de pouvoir, par exemple, tester différentes entrées possibles.

Lorsque vous créez l’objet d’événement de cette manière, vous pouvez l’utiliser pour tester la fonction dans la console CloudFront. Vous ne pouvez pas l’utiliser pour tester la fonction à l’aide d’un kit SDK ou d’une API AWS.

Option 3 : créer un objet d’événement à l’aide d’un éditeur de texte

Vous pouvez utiliser un éditeur de texte pour créer un objet d’événement au format JSON. Pour en savoir plus sur la structure d’un objet d’événement, consultez Structure d’évènements.

Vous pouvez utiliser cet objet d’événement pour tester la fonction à l’aide de la CLI. Mais vous ne pouvez pas l’utiliser pour tester la fonction dans la console CloudFront.

Pour créer un objet d’évènement (option 1 ou 2)
  1. Connectez-vous à la console CloudFront à l’adresse https://console.aws.amazon.com/cloudfront/v4/home#/functions et sélectionnez la page Fonctions.

    Choisissez la fonction que vous souhaitez tester.

  2. Sur la page de détails de la fonction, choisissez l’onglet Test.

  3. Pour Type d’événement, choisissez l’une des options suivantes :

    • Choisissez Demande de l’utilisateur si la fonction modifie une requête HTTP ou génère une réponse basée sur la demande. La section Demande apparaît.

    • Choisissez Réponse de l’utilisateur. Les sections Demande et Réponse apparaissent.

  4. Complétez les champs que vous souhaitez inclure dans l’événement. Vous pouvez choisir Modifier JSON pour afficher le code JSON brut.

  5. (Facultatif) Pour enregistrer l’événement, choisissez Enregistrer et dans le champ Enregistrer l’événement de test, entrez un nom, puis sélectionnez Enregistrer.

    Vous pouvez également choisir Modifier JSON et copier le code JSON brut et l’enregistrer dans votre propre fichier, en dehors de CloudFront.

Pour créer un objet d’évènement (option 3)

Créez l’objet d’événement à l’aide d’un éditeur de texte. Stockez le fichier dans un répertoire auquel votre ordinateur peut se connecter.

Assurez-vous de suivre les consignes suivantes :

  • Omettez les champs distributionDomainName, distributionId et requestId.

  • Les noms des en-têtes, des cookies et des chaînes de requête doivent être en minuscule.

Une option permettant de créer un objet d’événement de cette manière consiste à créer un échantillon à l’aide de l’éditeur visuel. Vous pouvez être sûr que l’échantillon est correctement formaté. Vous pouvez ensuite copier le code JSON brut, le coller dans un éditeur de texte et enregistrer le fichier.

Pour plus d’informations sur la structure d’un évènement, consultez Structure d’évènements.

Tester la fonction

Vous pouvez tester une fonction dans la console CloudFront ou avec l’AWS Command Line Interface (AWS CLI).

Console
Pour tester la fonction
  1. Connectez-vous à la console CloudFront à l’adresse https://console.aws.amazon.com/cloudfront/v4/home#/functions et sélectionnez la page Fonctions.

  2. Choisissez la fonction que vous souhaitez tester.

  3. Choisissez l’onglet Test.

  4. Assurez-vous que l’événement correct est affiché. Pour remplacer l’événement actuellement affiché, choisissez un autre événement dans le champ Sélectionnez un événement de test.

  5. Choisissez Fonction de test. La console affiche la sortie de la fonction, y compris les journaux de la fonction et l’utilisation du calcul.

CLI

Vous pouvez tester une fonction à l’aide de la commande aws cloudfront test-function.

Pour tester la fonction
  1. Ouvrez une fenêtre de ligne de commande.

  2. Exécutez la commande suivante depuis le même répertoire que celui qui contient le fichier indiqué.

    Cet exemple utilise la notation fileb:// pour transmettre le fichier d’objet d’événement. Il inclut également des sauts de ligne pour rendre la commande plus lisible.

    aws cloudfront test-function \ --name MaxAge \ --if-match ETVABCEXAMPLE \ --event-object fileb://event-maxage-test01.json \ --stage DEVELOPMENT
    Remarques
    • Vous référencez la fonction par son nom et son ETag (dans le paramètre if-match). Vous référencez l’objet d’événement par son emplacement dans votre système de fichiers.

    • Il peut s’agir de la phase DEVELOPMENT ou LIVE.

    Lorsque la commande s’exécute correctement, vous obtenez une sortie similaire à ce qui suit.

    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
Remarques
  • FunctionExecutionLogs contient une liste de lignes de journaux que la fonction a écrites dans les instructions console.log() (le cas échéant).

  • ComputeUtilization contient des informations sur l’exécution de votre fonction. Voir Présentation de l’utilisation du calcul.

  • FunctionOutput contient l'objet d'évènement renvoyé par la fonction.

Présentation de l’utilisation du calcul

L'utilisation du calcul est la durée d'exécution de la fonction en pourcentage de la durée maximale autorisée. Par exemple, une valeur de 35 signifie que la durée d’exécution de la fonction représente 35 % du temps maximum autorisé.

Si une fonction dépasse continuellement la durée maximale autorisée, CloudFront limite la fonction. La liste suivante explique la probabilité qu'une fonction soit limitée en fonction de la valeur d'utilisation du calcul.

Valeur d'utilisation du calcul:

  • 1 – 50 – la fonction est largement inférieure à la durée maximale autorisée et devrait s'exécuter sans aucune limitation.

  • 51 – 70 – la fonction approche de la durée maximale autorisée. Envisagez d'optimiser le code de fonction.

  • 71 – 100 – la fonction est très proche de la durée maximale autorisée ou la dépasse. CloudFront est susceptible de limiter cette fonction si vous l'associez à une distribution.