

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.

# Fonctions de test
<a name="test-function"></a>

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, vous devez spécifier un *objet d'événement* qui représente une requête ou une réponse HTTP que votre CloudFront distribution 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.

1. 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](#compute-utilization).

**Note**  
Lorsque vous testez une fonction, elle CloudFront ne valide que par rapport aux erreurs d'exécution de la fonction. CloudFrontne valide 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. Toutefois, si vous publiez la fonction et que vous l'associez à une distribution, elle échouera lorsqu'une demande sera envoyée CloudFront.

**Contents**
+ [

## Configuration de l’objet d’événement
](#test-function-create-event)
+ [

## Tester la fonction
](#test-function-step-test)
+ [

## Présentation de l’utilisation du calcul
](#compute-utilization)

## Configuration de l’objet d’événement
<a name="test-function-create-event"></a>

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 CloudFront console sans l'enregistrer.   
Vous pouvez utiliser cet objet d'événement pour tester la fonction depuis la CloudFront console, même si elle n'est pas enregistrée.

**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 CloudFront console 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 CloudFront console. Vous ne pouvez pas l'utiliser pour tester la fonction à l'aide d'une AWS API ou d'un SDK. 

**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](functions-event-structure.md).   
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 CloudFront console.

**Pour créer un objet d’évènement (option 1 ou 2)**

1. Connectez-vous à la CloudFront console à l'adresse [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) et sélectionnez la page **Fonctions**.

   Choisissez la fonction que vous souhaitez tester.

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

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

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

1. (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 le JSON**, copier le 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](functions-event-structure.md). 

## Tester la fonction
<a name="test-function-step-test"></a>

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

------
#### [ Console ]

**Pour tester la fonction**

1. Connectez-vous à la CloudFront console à l'adresse [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) et sélectionnez la page **Fonctions**.

1. Choisissez la fonction que vous souhaitez tester.

1. Choisissez l’onglet **Test**. 

1. 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**.

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

1. 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 ETag (dans le `if-match` paramètre). 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. Consultez [Présentation de l’utilisation du calcul](#compute-utilization).
`FunctionOutput` contient l'objet d'évènement renvoyé par la fonction. 

## Présentation de l’utilisation du calcul
<a name="compute-utilization"></a>

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 , elle ralentit. 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. Pensez à optimiser le code de fonction.
+ **71 — 100** — La durée maximale autorisée de la fonction est très proche ou supérieure. CloudFront est susceptible de limiter cette fonction si vous l'associez à une distribution.