

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.

# Création de fonctions
<a name="create-function"></a>

La création d’une fonction se déroule en deux temps : 

1. Création du code de fonction en JavaScript. Vous pouvez utiliser l’exemple par défaut de la console CloudFront ou écrire le vôtre. Pour plus d’informations, consultez les rubriques suivantes :
   + [Écriture du code de la fonction](writing-function-code.md)
   + [CloudFront Fonctions et structure des événements](functions-event-structure.md)
   + [CloudFront Exemples de fonctions pour CloudFront](service_code_examples_cloudfront_functions_examples.md)

1. Utilisation de CloudFront pour créer la fonction et inclure votre code. Le code existe à l’intérieur de la fonction (et non en tant que référence).

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

**Pour créer une fonction**

1. Connectez-vous à la console CloudFront à 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. Sélectionnez **Créer une fonction**.

1. Entrez un nom de fonction unique au sein du Compte AWS, puis choisissez la version de JavaScript et choisissez **Continuer**. La page de détails s’affiche pour la nouvelle fonction.
**Note**  
Si vous souhaitez utiliser des [paires clé-valeur](kvs-with-functions.md) dans la fonction, vous devez choisir l’environnement d’exécution JavaScript 2.0.

1. Dans la section **Code de fonction**, sélectionnez l’onglet **Création** et entrez votre code de fonction. L’exemple de code inclus dans l’onglet **Création** illustre la syntaxe de base du code de fonction.

1. Sélectionnez **Enregistrer les modifications**.

1. Si le code de fonction utilise des paires clé-valeur, vous devez associer un magasin de clés-valeurs. 

   Vous pouvez associer le magasin de clés-valeurs lors de la création initiale de la fonction. Ou, vous pouvez l’associer ultérieurement, en [mettant à jour la fonction](update-function.md). 

   Pour associer un magasin de clés-valeurs dès maintenant, procédez comme suit :
   + Accédez à la section **Magasin de clés-valeurs associé**, choisissez **Associer le magasin de clés-valeurs existant**.
   + Sélectionnez le magasin de clés-valeurs qui contient les paires clé-valeur de la fonction, puis choisissez **Associer KeyValueStore**.

   CloudFront associe immédiatement le magasin à la fonction. Vous n’avez pas besoin d’enregistrer la fonction.

------
#### [ CLI ]

Si vous utilisez la CLI, vous commencez généralement par créer le code de fonction dans un fichier, puis vous créez la fonction avec AWS CLI.

**Pour créer une fonction**

1. Créez le code de fonction dans un fichier et stockez-le dans un répertoire auquel votre ordinateur peut se connecter. 

1. Exécutez la commande, comme illustré dans l’exemple. Cet exemple utilise la notation `fileb://` pour transmettre le fichier. Il inclut également des sauts de ligne pour rendre la commande plus lisible. 

   ```
   aws cloudfront create-function \
       --name MaxAge \
       --function-config '{"Comment":"Max Age 2 years","Runtime":"cloudfront-js-2.0","KeyValueStoreAssociations":{"Quantity":1,"Items":[{"KeyValueStoreARN":"arn:aws:cloudfront::111122223333:key-value-store/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}]}}' \
       --function-code fileb://function-max-age-v1.js
   ```
**Remarques**  
`Runtime` : la version de JavaScript. Pour utiliser des [paires clé-valeur](kvs-with-functions.md) dans la fonction, vous devez spécifier la version 2.0.
`KeyValueStoreAssociations` : si votre fonction utilise des paires clé-valeur, vous pouvez associer le magasin de clés-valeurs lors de la création initiale de la fonction. Ou vous pouvez l’associer ultérieurement, en utilisant `update-function`. `Quantity` a toujours pour valeur `1`, car chaque fonction peut être associée uniquement à un seul magasin de clés-valeurs.

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

   ```
   ETag: ETVABCEXAMPLE
   FunctionSummary:
     FunctionConfig:
       Comment: Max Age 2 years
       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-11-19T20:38:56.915000+00:00'
       Stage: DEVELOPMENT
     Name: MaxAge
     Status: UNPUBLISHED
   Location: https://cloudfront.amazonaws.com/2020-05-31/function/arn:aws:cloudfront:::function/MaxAge
   ```

   La plupart des informations proviennent de la demande. Les autres informations sont ajoutées par CloudFront.
**Remarques**  
`ETag` : cette valeur change chaque fois que vous modifiez le magasin de clés-valeurs. Vous utilisez cette valeur et le nom de la fonction pour référencer la fonction à l’avenir. Assurez-vous de toujours utiliser l’`ETag` actuel.
`FunctionARN` : l’ARN de votre fonction CloudFront.
111122223333 : le Compte AWS.
`Stage` : le stade de la fonction (`LIVE` ou `DEVELOPMENT`). 
`Status` : l’état de la fonction (`PUBLISHED` ou `UNPUBLISHED`).

------

Une fois que vous avez créé la fonction, elle est ajoutée à la phase `DEVELOPMENT`. Nous vous recommandons de [tester votre fonction](test-function.md) avant de la [publier](publish-function.md). Une fois que vous avez publié votre fonction, celle-ci passe à la phase `LIVE`.