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.
Associer des fonctions à des distributions
Pour utiliser une fonction avec une distribution, vous devez associer la fonction à un ou plusieurs comportements de cache dans la distribution. Vous pouvez associer une fonction à plusieurs comportements de cache dans plusieurs distributions..
Vous pouvez associer une fonction avec l’un des éléments suivants :
-
Un comportement de cache existant
-
Nouveau comportement du cache dans une distribution existante
-
Nouveau comportement du cache dans une nouvelle distribution
Lorsque vous associez une fonction à un comportement de cache, vous devez choisir un type d'évènement. Le type d'événement détermine le moment où la fonction est CloudFront exécutée.
Vous pouvez choisir les types d'événements suivants :
-
Demande du visualiseur — La fonction s'exécute lorsqu'elle CloudFront reçoit une demande d'un visualiseur.
-
Réponse du visualiseur : la fonction s'exécute avant de CloudFront renvoyer une réponse au visualiseur.
Vous ne pouvez pas utiliser de types d'événements liés à l'origine (demande d'origine et réponse d'origine) avec CloudFront Functions. Vous pouvez plutôt utiliser Lambda @Edge. Pour plus d’informations, consultez CloudFront événements pouvant déclencher une fonction Lambda @Edge.
Avant d'associer une fonction, vous devez la publier à l'étape LIVE
.
Vous pouvez associer une fonction à une distribution dans la CloudFront console ou à AWS Command Line Interface
(AWS CLI). La procédure suivante montre comment associer une fonction à un comportement de cache existant.
- Console
-
Pour associer une fonction à un comportement de cache existant
-
Connectez-vous à la CloudFront console sur https://console.aws.amazon.com/cloudfront/v4/home#/functions et choisissez la page Fonctions.
-
Choisissez la fonction que vous souhaitez associer.
-
Sur la page Fonction, choisissez l'onglet Publier.
-
Choisissez la fonction Publier.
-
Choisissez Ajouter une association. Dans la boîte de dialogue qui apparaît, choisissez une distribution, un type d'événement et/ou un comportement de cache.
Pour le type d’événement, choisissez le moment où vous souhaitez que cette fonction s’exécute :
-
Pour enregistrer la configuration, choisissez Ajouter une association.
CloudFront associe la distribution à la fonction. Attendez quelques minutes pour que la distribution associée termine son déploiement. Vous pouvez choisir Afficher la distribution sur la page des détails de la fonction pour vérifier la progression.
- CLI
-
Pour associer une fonction à un comportement de cache existant
-
Ouvrez une fenêtre de ligne de commande.
-
Entrez la commande suivante pour enregistrer la configuration de distribution pour la distribution dont vous souhaitez associer le comportement de cache à une fonction. Cette commande enregistre la configuration de distribution dans un fichier nommé dist-config.yaml
. Pour utiliser cette commande, procédez comme suit :
-
Remplacez DistributionID
par l'ID de la distribution.
-
Exécutez la commande sur une ligne. Dans l’exemple, des sauts de ligne sont fournis pour rendre l’exemple plus lisible.
aws cloudfront get-distribution-config \
--id DistributionID
\
--output yaml > dist-config.yaml
Lorsque la commande est réussie, aucune sortie n'est renvoyée. AWS CLI
-
Ouvrez le fichier nommé dist-config.yaml
que vous avez créé. Apportez les modifications suivantes au fichier.
-
Renommez le champ ETag
en IfMatch
, mais ne modifiez pas la valeur du champ.
-
Dans le comportement du cache, recherchez l'objet nommé FunctionAssociations
. Mettez à jour cet objet pour ajouter une association de fonctions. La syntaxe YAML pour une association de fonctions ressemble à l'exemple ci-dessous.
-
L'exemple suivant montre un objet d'évènement de requête utilisateur (déclenchement). Pour utiliser le type d'évènement Réponse utilisateur, remplacez viewer-request
par viewer-response
.
-
Remplacez arn:aws:cloudfront::111122223333:function/ExampleFunction
par l'Amazon Resource Name (ARN) de la fonction que vous associez à ce comportement de cache. Pour obtenir l'ARN de la fonction, vous pouvez utiliser la commande aws cloudfront
list-functions.
FunctionAssociations:
Items:
- EventType: viewer-request
FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction
Quantity: 1
-
Après avoir effectué ces modifications, enregistrez le fichier.
-
Utilisez la commande suivante pour mettre à jour la distribution, en ajoutant l'association de fonctions. Pour utiliser cette commande, procédez comme suit :
-
Remplacez DistributionID
par l'ID de la distribution.
-
Exécutez la commande sur une ligne. Dans l’exemple, des sauts de ligne sont fournis pour rendre l’exemple plus lisible.
aws cloudfront update-distribution \
--id DistributionID
\
--cli-input-yaml file://dist-config.yaml
Lorsque la commande réussit, vous voyez une sortie similaire à la suivante, qui décrit la distribution qui vient d'être mise à jour avec l'association de fonctions. L'exemple de sortie suivant est tronqué pour plus de lisibilité.
Distribution:
ARN: arn:aws:cloudfront::111122223333:distribution/EBEDLT3BGRBBW
... truncated ...
DistributionConfig:
... truncated ...
DefaultCacheBehavior:
... truncated ...
FunctionAssociations:
Items:
- EventType: viewer-request
FunctionARN: arn:aws:cloudfront::111122223333:function/ExampleFunction
Quantity: 1
... truncated ...
DomainName: d111111abcdef8.cloudfront.net
Id: EDFDVBD6EXAMPLE
LastModifiedTime: '2021-04-19T22:39:09.158000+00:00'
Status: InProgress
ETag: E2VJGGQEG1JT8S
Le Status
de la distribution passe à InProgress
pendant le redéploiement de la distribution. Lorsque la nouvelle configuration de distribution atteint un emplacement CloudFront périphérique, celui-ci commence à utiliser la fonction associée. Lorsque la distribution est entièrement déployée, elle Status
redevientDeployed
. Cela indique que la CloudFront fonction associée est active dans tous les emplacements CloudFront périphériques du monde entier. Cela prend généralement quelques minutes.