

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.

# Ajout de déclencheurs pour une fonction Lambda@Edge
<a name="lambda-edge-add-triggers"></a>

Un déclencheur Lambda @Edge est une combinaison d'une CloudFront distribution, d'un comportement de cache et d'un événement qui entraîne l'exécution d'une fonction. Par exemple, vous pouvez créer un déclencheur qui entraîne l'exécution de la fonction lorsqu'un utilisateur CloudFront reçoit une demande concernant un comportement de cache spécifique que vous avez configuré pour votre distribution. Vous pouvez spécifier un ou plusieurs CloudFront déclencheurs. 

**Astuce**  
Lorsque vous créez une CloudFront distribution, vous spécifiez des paramètres qui indiquent CloudFront comment répondre lorsqu'elle reçoit différentes demandes. Les paramètres par défaut correspondent au *comportement de cache par défaut* pour la distribution. Vous pouvez configurer des comportements de cache supplémentaires qui définissent la manière dont il CloudFront répond dans des circonstances spécifiques, par exemple lorsqu'il reçoit une demande pour un type de fichier spécifique. Pour de plus amples informations, veuillez consulter [Paramètres de comportement du cache](DownloadDistValuesCacheBehavior.md).

Lorsque vous créez pour la première fois une fonction Lambda, vous ne pouvez spécifier qu’*un* seul déclencheur. Vous pouvez ajouter d'autres déclencheurs à la même fonction ultérieurement en utilisant la console Lambda ou en modifiant la distribution dans la CloudFront console.
+ La console Lambda fonctionne bien si vous souhaitez ajouter d'autres déclencheurs à une fonction pour la même CloudFront distribution.
+ La CloudFront console peut être meilleure si vous souhaitez ajouter des déclencheurs pour plusieurs distributions, car il est plus facile de trouver la distribution que vous souhaitez mettre à jour. Vous pouvez également mettre à jour d'autres CloudFront paramètres en même temps.

**Topics**
+ [CloudFront événements pouvant déclencher une fonction Lambda @Edge](lambda-cloudfront-trigger-events.md)
+ [Choix de l’événement qui déclenche la fonction](lambda-how-to-choose-event.md)
+ [Ajout de déclencheurs à une fonction Lambda@Edge](lambda-edge-add-triggers-console.md)

# CloudFront événements pouvant déclencher une fonction Lambda @Edge
<a name="lambda-cloudfront-trigger-events"></a>

Pour chaque comportement de cache dans une CloudFront distribution Amazon, vous pouvez ajouter jusqu'à quatre déclencheurs (associations) qui déclenchent l'exécution d'une fonction Lambda lorsque des CloudFront événements spécifiques se produisent. CloudFront les déclencheurs peuvent être basés sur l'un des quatre CloudFront événements suivants, comme le montre le schéma suivant.

![\[Graphique conceptuel qui montre comment les événements CloudFront déclencheurs pour les fonctions Lambda s'intègrent à. CloudFront\]](http://docs.aws.amazon.com/fr_fr/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-events-that-trigger-lambda-functions.png)


Les CloudFront événements qui peuvent être utilisés pour déclencher les fonctions Lambda @Edge sont les suivants :

**Demande utilisateur**  
La fonction s'exécute lorsqu'elle CloudFront reçoit une demande d'un visualiseur, avant de vérifier si l'objet demandé se trouve dans le CloudFront cache.  
La fonction ne s’exécute pas dans les cas suivants :  
+ Lors de la récupération d’une page d’erreur personnalisée.
+ Lorsque redirige CloudFront automatiquement une requête HTTP vers HTTPS (lorsque la valeur de [Viewer Protocol Policy](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy) est **Rediriger HTTP vers HTTPS**).

**demande à l’origine**  
La fonction s'exécute *uniquement* lorsque CloudFront vous transmettez une demande à votre origine. Lorsque l'objet demandé est dans le CloudFront cache, la fonction ne s'exécute pas.

**Réponse de l’origine**  
La fonction s'exécute après avoir CloudFront reçu une réponse de l'origine et avant de mettre en cache l'objet dans la réponse. Notez que la fonction s'exécute même si une erreur est renvoyée de l'origine.  
La fonction ne s’exécute pas dans les cas suivants :  
+ Lorsque le fichier demandé est dans le CloudFront cache et n'a pas expiré.
+ Lorsque la réponse est générée à partir d'une fonction qui a été déclenchée par un événement de demande à l'origine.

**Réponse utilisateur**  
La fonction s'exécute avant de renvoyer le fichier demandé à l'utilisateur. Notez que la fonction s'exécute indépendamment du fait que le fichier soit déjà dans le CloudFront cache ou non.  
La fonction ne s’exécute pas dans les cas suivants :  
+ Lorsque l'origine renvoie un code de statut HTTP égal ou supérieur à 400.
+ Lorsqu'une page d'erreur personnalisée est renvoyée.
+ Lorsque la réponse est générée à partir d'une fonction qui a été déclenchée par un événement de demande utilisateur.
+ Lorsque redirige CloudFront automatiquement une requête HTTP vers HTTPS (lorsque la valeur de [Viewer Protocol Policy](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy) est **Rediriger HTTP vers HTTPS**).

Lorsque vous ajoutez plusieurs déclencheurs au même comportement de cache, vous pouvez les utiliser pour exécuter la même fonction ou des fonctions différentes pour chaque déclencheur. Vous pouvez associer la même fonction à plusieurs distributions.

**Note**  
Lorsqu'un CloudFront événement déclenche l'exécution d'une fonction Lambda, celle-ci doit se terminer *avant* de CloudFront pouvoir continuer.   
Par exemple, si une fonction Lambda est déclenchée par un événement de demande d'affichage, elle CloudFront ne renverra pas de réponse au CloudFront visualiseur ni ne transmettra la demande à l'origine tant que la fonction Lambda n'aura pas fini de s'exécuter.   
Cela signifie que chaque demande qui déclenche une fonction Lambda augmente sa latence. Vous souhaitez ainsi que la fonction s’exécute le plus vite possible.

# Choix de l’événement qui déclenche la fonction
<a name="lambda-how-to-choose-event"></a>

Lorsque vous décidez quel CloudFront événement vous souhaitez utiliser pour déclencher une fonction Lambda, tenez compte des points suivants :

**Je souhaite CloudFront mettre en cache des objets modifiés par une fonction Lambda**  
Pour mettre en cache un objet qui a été modifié par une fonction Lambda afin de CloudFront pouvoir le servir depuis l'emplacement périphérique lors de sa prochaine demande, utilisez l'événement de *demande d'origine* ou de *réponse d'origine*.   
Cela réduit la charge sur l'origine, réduit la latence pour les demandes suivantes et réduit le coût de l'appel de Lambda@Edge sur les demandes suivantes.  
Par exemple, si vous souhaitez ajouter, supprimer ou modifier les en-têtes des objets renvoyés par l'origine et que vous souhaitez CloudFront mettre le résultat en cache, utilisez l'événement de réponse d'origine.

**Je souhaite que la fonction s’exécute pour chaque demande**  
Pour exécuter la fonction pour chaque demande CloudFront reçue pour la distribution, utilisez les événements de *demande du visualiseur* ou de *réponse du visualiseur*.   
Les événements de demande d'origine et de réponse d'origine se produisent uniquement lorsqu'un objet demandé n'est pas mis en cache dans un emplacement périphérique et CloudFront transmet une demande à l'origine.

**Je souhaite que la fonction modifie la clé de cache**  
Pour modifier une valeur que vous utilisez comme base pour la mise en cache, utilisez l’événement *demande utilisateur*.   
Par exemple, si une fonction modifie l'URL pour inclure une abréviation de langue dans le chemin d'accès (par exemple, parce que l'utilisateur a choisi sa langue dans une liste déroulante), utilisez l'événement de demande utilisateur :  
+ **URL dans la demande du visualiseur** — https://example.com/en/ index.html
+ **URL lorsque la demande provient d'une adresse IP en Allemagne** https://example.com/de/ — index.html
Vous utilisez également l'événement de demande utilisateur si vous mettez en cache en fonction des cookies ou des en-têtes de demande.  
Si la fonction modifie les cookies ou les en-têtes, configurez CloudFront pour transmettre la partie applicable de la demande à l'origine. Pour plus d’informations, consultez les rubriques suivantes :  
+ [Mise en cache de contenu basée sur des cookies](Cookies.md)
+ [Mise en cache de contenu basée sur des en-têtes de demandes](header-caching.md)

**La fonction affecte la réponse provenant de l’origine**  
Pour modifier la demande d’une manière qui affecte la réponse de l’origine, utilisez l’événement *demande à l’origine*.   
En général, la plupart des événements de demande du visiteur ne sont pas transmis à l'origine. CloudFront répond à une demande avec un objet qui se trouve déjà dans le cache périphérique. Si la fonction modifie la demande en fonction d'un événement de demande d'origine, met en CloudFront cache la réponse à la demande d'origine modifiée.

# Ajout de déclencheurs à une fonction Lambda@Edge
<a name="lambda-edge-add-triggers-console"></a>

Vous pouvez utiliser la AWS Lambda console ou la CloudFront console Amazon pour ajouter un déclencheur à votre fonction Lambda @Edge.

**Important**  
Vous ne pouvez créer des déclencheurs que pour les versions numérotées de votre fonction (et non pour le **\$1LATEST**).

------
#### [ Lambda console ]<a name="lambda-edge-add-triggers-procedure"></a>

**Pour ajouter des déclencheurs d' CloudFront événements à une fonction Lambda @Edge**

1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Dans la liste des régions située en haut de la page, choisissez **US East (N. Virginia) (USA Est (Virginie du Nord))**.

1. Sur la page **Fonctions**, choisissez le nom de la fonction pour laquelle vous souhaitez ajouter des déclencheurs.

1. Sur la page **Présentation de la fonction**, choisissez l’onglet **Versions**.

1. Choisissez la version à laquelle vous souhaitez ajouter des déclencheurs.

   Une fois que vous avez choisi une version, le texte du bouton est remplacé par **Version: \$1LATEST** ou **Version:** *numéro de version*.

1. Choisissez l’onglet **Triggers (Déclencheurs)**.

1. Choisissez **Add trigger (Ajouter déclencheur)**.

1. Pour **la configuration du déclencheur**, choisissez **Sélectionner une source****cloudfront**, entrez, puis choisissez **CloudFront**.
**Note**  
Si vous avez déjà créé un ou plusieurs déclencheurs, CloudFront c'est le service par défaut.

1. Spécifiez les valeurs suivantes pour indiquer le moment où vous voulez que la fonction Lambda s’exécute.

   1. **Distribution** : choisissez la distribution que vous souhaitez ajouter au déclencheur.

   1. **Comportement du cache** : choisissez le comportement de cache qui spécifie les objets sur lesquels vous souhaitez exécuter la fonction.
**Note**  
Si vous spécifiez `*` pour le comportement de cache, la fonction Lambda se déploie sur le comportement de cache par défaut.

   1. **CloudFront event** — Choisissez l'CloudFront événement à l'origine de l'exécution de la fonction.

   1. **Inclure le corps** : cochez cette case si vous souhaitez accéder au corps de la demande dans votre fonction. 

   1. **Confirmer le déploiement sur Lambda@Edge** : cochez cette case pour qu’ AWS Lambda réplique la fonction dans les Régions AWS du monde entier.

1. Choisissez **Ajouter**.

   La fonction commence à traiter les demandes relatives aux CloudFront événements spécifiés lorsque la CloudFront distribution mise à jour est déployée. Pour déterminer si une distribution a été déployée, choisissez **Distributions** dans le panneau de navigation. Lorsqu’une distribution a été déployée, la valeur de la colonne **Statut** correspondant à la distribution passe de **Déploiement** à la date et l’heure du déploiement.

------
#### [ CloudFront console ]<a name="lambda-create-functions-add-triggers-cloudfront-console-procedure"></a>

**Pour ajouter des déclencheurs d' CloudFront événements à une fonction Lambda @Edge**

1. Obtenez le nom ARN de la fonction Lambda pour laquelle vous voulez ajouter des déclencheurs :

   1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

   1. Dans la liste des régions située en haut de la page, choisissez **US East (N. Virginia) (USA Est (Virginie du Nord))**.

   1. Dans la liste des fonctions, choisissez le nom de la fonction à laquelle vous voulez ajouter des déclencheurs.

   1. Sur la page **Présentation de la fonction**, choisissez l’onglet **Versions** et sélectionnez la version numérotée à laquelle vous voulez ajouter des déclencheurs.

   1. Choisissez le bouton **Copier l’ARN** pour copier l’ARN dans votre presse-papiers. L’ARN de la fonction Lambda ressemble à ceci :

      `arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2`

      Le numéro à la fin (**2** dans cet exemple) est le numéro de version de la fonction.

1. Ouvrez la CloudFront console à l'adresse[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Dans la liste des distributions, choisissez l'ID de la distribution à laquelle vous voulez ajouter des déclencheurs.

1. Choisissez l'onglet **Comportements**.

1. Sélectionnez le comportement de cache auquel vous souhaitez ajouter des déclencheurs, puis choisissez **Modifier**.

1. Dans **Associations de fonctions**, dans la liste **Type de fonction**, choisissez **Lambda@Edge** pour exécuter la fonction lors des demandes utilisateur, des réponses utilisateur, des demandes d’origine ou des réponses d’origine. 

   Pour de plus amples informations, veuillez consulter [Choix de l’événement qui déclenche la fonction](lambda-how-to-choose-event.md).

1. Dans la zone de texte **ARN/Nom de la fonction**, collez l’ARN de la fonction Lambda que vous souhaitez exécuter lorsque l’événement choisi se produit. Il s’agit de la valeur que vous avez copiée à partir de la console Lambda.

1. Cochez la case **Inclure corps** si vous souhaitez accéder au corps de la demande dans votre fonction.

   Si vous souhaitez simplement remplacer le corps de la demande, vous n'avez pas besoin de sélectionner cette option.

1. Pour exécuter la même fonction pour plusieurs types d’événements, répétez les étapes 6 et 7.

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

1. Pour ajouter des déclencheurs à d'autres comportements de cache pour cette distribution, répétez les étapes 5 à 10.

   La fonction commence à traiter les demandes relatives aux CloudFront événements spécifiés lorsque la CloudFront distribution mise à jour est déployée. Pour déterminer si une distribution a été déployée, choisissez **Distributions** dans le panneau de navigation. Lorsqu’une distribution a été déployée, la valeur de la colonne **Statut** correspondant à la distribution passe de **Déploiement** à la date et l’heure du déploiement.

------