

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éez le code de fonction sous la forme JavaScript. Vous pouvez utiliser l'exemple par défaut de la CloudFront console 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.  CloudFront À utiliser 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 CloudFront console sur [https://console.aws.amazon.com/cloudfront/v4/home#/functions](https://console.aws.amazon.com/cloudfront/v4/home#/functions) et choisissez la page **Fonctions**.

1. Choisissez **Créer une fonction**.

1. Entrez un nom de fonction unique dans le Compte AWS, choisissez la JavaScript version, puis choisissez **Continuer**. La page de détails s’affiche pour la nouvelle fonction.
**Note**  
Pour utiliser des [paires clé-valeur](kvs-with-functions.md) dans la fonction, vous devez choisir JavaScript runtime 2.0.  
Si vous rencontrez une erreur `TaggingConflict` (HTTP 409) lors de la création d'une fonction avec des balises, attendez quelques minutes et réessayez, ou créez initialement la fonction sans balises et ajoutez-les ensuite.

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 KeyValueStore section **Associer** et choisissez **Associer existant KeyValueStore**.
   + **Sélectionnez le magasin clé-valeur 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. D'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 CloudFront fonction.
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`.

**TaggingConflict erreur lors de la création de fonctions**  
CloudFront Les fonctions sont réutilisées ARNs pour les fonctions portant le même nom. Vous pouvez rencontrer une erreur `TaggingConflict` (HTTP 409) lors de la création d'une fonction avec des balises. Cela peut se produire dans les scénarios suivants :  
**Après avoir supprimé une fonction** : recréer une fonction portant le même nom et les mêmes balises immédiatement après la suppression.
**Après une tentative de création infructueuse** : si une demande de création précédente a échoué (par exemple, en raison de paramètres non valides, d'une association KVS non valide ou d'un échec de la restauration de la CloudFormation pile).
Si vous recevez un `TaggingConflict` message d'erreur, vous pouvez :  
Patientez quelques minutes et recommencez l'opération.
Utilisez un autre nom de fonction. Cela permet d'éviter complètement le conflit de réutilisation de l'ARN.
Si votre modèle crée à la fois une fonction KeyValueStore et une fonction qui le référence, ajoutez-en un explicite `DependsOn` pour vous assurer que le KVS est entièrement provisionné avant la création de la fonction.