Tutoriel : Création d'une fonction Lambda @Edge de base - Amazon CloudFront

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.

Tutoriel : Création d'une fonction Lambda @Edge de base

Ce didacticiel explique comment démarrer avec Lambda @Edge en créant et en configurant un exemple de fonction Node.js qui s'exécute dans. CloudFront Cet exemple ajoute des en-têtes HTTP de sécurité à une réponse lors de la CloudFront récupération d'un fichier. (Cela peut améliorer la sécurité et la confidentialité d'un site Web.)

Vous n'avez pas besoin de votre propre site Web pour ce didacticiel. Toutefois, lorsque vous choisissez de créer votre propre solution Lambda @Edge, vous devez suivre des étapes similaires et sélectionner les mêmes options.

Étape 1 : s'inscrire à un Compte AWS

Si vous ne l'avez pas déjà fait, inscrivez-vous à un Compte AWS. Pour de plus amples informations, veuillez consulter Inscrivez-vous pour un Compte AWS.

Étape 2 : Création d'une CloudFront distribution

Avant de créer l'exemple de fonction Lambda @Edge, vous devez disposer d'un CloudFront environnement de travail incluant une origine à partir de laquelle diffuser le contenu.

Dans cet exemple, vous créez une CloudFront distribution qui utilise un compartiment Amazon S3 comme origine de la distribution. Si vous avez déjà un environnement à utiliser, vous pouvez ignorer cette étape.

Pour créer une CloudFront distribution avec une origine Amazon S3
  1. Créez un compartiment Amazon S3 avec un fichier ou deux, par exemple des fichiers image, comme exemples de contenu. Pour obtenir de l'aide, suivez les étapes dans Chargement de votre contenu sur Amazon S3. Assurez-vous de définir des autorisations pour accorder l'accès public en lecture sur les objets de votre compartiment.

  2. Créez une CloudFront distribution et ajoutez votre compartiment S3 comme origine, en suivant les étapes décrites dans Créer une distribution CloudFront Web. Si vous avez déjà une distribution, vous pouvez, au lieu de cela, ajouter le compartiment en tant qu'origine pour cette distribution.

    Astuce

    Notez votre ID de distribution. Plus loin dans ce didacticiel, lorsque vous ajoutez un CloudFront déclencheur pour votre fonction, vous devez choisir l'ID de votre distribution dans une liste déroulante, par exemple,. E653W22221KDDL

Étape 3 : créer votre fonction

Au cours de cette étape, vous allez créer une fonction Lambda à partir d'un modèle de plan dans la console Lambda. La fonction ajoute du code pour mettre à jour les en-têtes de sécurité de votre CloudFront distribution.

Pour créer une fonction Lambda
  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adressehttps://console.aws.amazon.com/lambda/.

    Important

    Assurez-vous que vous êtes dans le US-east-1 (Virginie du Nord) ( Région AWS us-east-1). Vous devez être dans cette région pour créer des fonctions Lambda@Edge.

  2. Sélectionnez Create function (Créer une fonction).

  3. Sur la page Créer une fonction, choisissez Utiliser un plan, puis filtrez les CloudFront plans en les saisissant cloudfront dans le champ de recherche.

    Note

    CloudFront les plans ne sont disponibles que dans la région US-east-1 (Virginie du Nord) (us-east-1).

  4. Choisissez le plan d'en-tête de HTTP réponse Modify comme modèle pour votre fonction.

  5. Entrez les informations suivantes sur votre fonction :

    • Nom de la fonction — Entrez le nom de votre fonction.

    • Rôle d'exécution : choisissez comment définir les autorisations pour votre fonction. Pour utiliser le modèle de politique d'autorisation de base recommandé par Lambda @Edge, choisissez Create a new role from AWS policy templates.

    • Nom du rôle : entrez le nom du rôle créé par le modèle de politique.

    • Modèles de politique — Lambda ajoute automatiquement le modèle de stratégie Basic Lambda @Edge permissions parce que vous avez choisi un CloudFront plan comme base pour votre fonction. Ce modèle de politique ajoute des autorisations de rôle d'exécution qui CloudFront permettent d'exécuter votre fonction Lambda pour vous dans le CloudFront monde entier. Pour de plus amples informations, veuillez consulter Configuration IAM des autorisations et des rôles pour Lambda @Edge.

  6. Choisissez Créer une fonction au bas de la page.

  7. Dans le volet Deploy to Lambda @Edge qui apparaît, choisissez Annuler. (Pour ce didacticiel, vous devez modifier le code de la fonction avant de déployer la fonction sur Lambda @Edge.)

  8. Faites défiler la page jusqu'à la section Source du code.

  9. Remplacez le code de modèle par une fonction qui modifie les en-têtes de sécurité renvoyés par votre origine. Par exemple, vous pouvez utiliser du code tel que :

    'use strict'; export const handler = (event, context, callback) => { //Get contents of response const response = event.Records[0].cf.response; const headers = response.headers; //Set new headers headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age= 63072000; includeSubdomains; preload'}]; headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; //Return modified response callback(null, response); };
  10. Choisissez Fichier, puis Enregistrer pour enregistrer votre code mis à jour.

  11. Choisissez Deploy (Déployer).

Passez à la section suivante pour ajouter un CloudFront déclencheur permettant d'exécuter la fonction.

Étape 4 : ajouter un CloudFront déclencheur pour exécuter la fonction

Maintenant que vous disposez d'une fonction Lambda pour mettre à jour les en-têtes de sécurité, configurez le CloudFront déclencheur pour exécuter votre fonction afin d'ajouter les en-têtes dans toute réponse CloudFront reçue de l'origine de votre distribution.

Pour configurer le CloudFront déclencheur de votre fonction
  1. Dans la console Lambda, sur la page d'aperçu des fonctions de votre fonction, choisissez Ajouter un déclencheur.

  2. Pour la configuration du déclencheur, choisissez CloudFront.

  3. Choisissez Deploy to Lambda @Edge.

  4. Dans le volet Deploy to Lambda @Edge, sous Configurer le CloudFront déclencheur, entrez les informations suivantes :

    • Distribution : ID de CloudFront distribution à associer à votre fonction. Dans la liste déroulante, choisissez l'ID de distribution.

    • Comportement du cache : comportement du cache à utiliser avec le déclencheur. Pour cet exemple, laissez la valeur définie sur *, qui correspond au comportement de cache par défaut de votre distribution. Pour plus d’informations, consultez Paramètres de comportement du cache dans la rubrique Référence des paramètres de distribution.

    • CloudFront event — Le déclencheur qui indique le moment où votre fonction s'exécute. Nous voulons que la fonction d'en-têtes de sécurité s'exécute chaque fois que CloudFront renvoie une réponse depuis l'origine. Dans la liste déroulante, choisissez Origin response. Pour de plus amples informations, veuillez consulter Ajouter des déclencheurs pour une fonction Lambda @Edge.

  5. Cochez la case Confirmer le déploiement vers Lambda @Edge.

  6. Choisissez Déployer pour ajouter le déclencheur et répliquer la fonction dans le monde AWS entier.

  7. Attendez que la réplication de la fonction soit terminée. Cela prend généralement plusieurs minutes.

    Vous pouvez vérifier si la réplication est terminée en accédant à la CloudFront console et en consultant votre distribution. Attendez que l'état de distribution passe de Déploiement à une date et une heure, ce qui signifie que votre fonction a été répliquée. Pour vérifier que la fonction s'exécute correctement, suivez les étapes de la section suivante.

Étape 5 : vérifier l’exécution de la fonction

Maintenant que vous avez créé votre fonction Lambda et configuré un déclencheur pour l'exécuter pour une CloudFront distribution, assurez-vous que la fonction répond à vos attentes. Dans cet exemple, nous vérifions HTTP les en-têtes CloudFront renvoyés pour nous assurer que les en-têtes de sécurité ont été ajoutés.

Pour vérifier que votre fonction Lambda@Edge ajoute des en-têtes de sécurité
  1. Dans un navigateur, entrez le nom URL d'un fichier dans votre compartiment S3. Par exemple, vous pouvez utiliser un nom URL similaire àhttps://d111111abcdef8.cloudfront.net/image.jpg.

    Pour plus d'informations sur le nom de CloudFront domaine à utiliser dans le fichierURL, consultezPersonnalisez le URL format des fichiers dans CloudFront.

  2. Ouvrez la barre d'outils Web Developer de votre navigateur. Par exemple, dans votre fenêtre de navigateur Chrome, ouvrez le menu contextuel (clic droit), puis choisissez Inspecter.

  3. Choisissez l'onglet Network (Réseau).

  4. Rechargez la page pour afficher votre image, puis choisissez une HTTP demande dans le volet de gauche. Les HTTP en-têtes sont affichés dans un volet distinct.

  5. Parcourez la liste des HTTP en-têtes pour vérifier que les en-têtes de sécurité attendus sont inclus dans la liste. Par exemple, vous pourrez peut-être voir des en-têtes similaires à ceux affichés dans la capture d'écran suivante.

    HTTPliste d'en-têtes avec les en-têtes de sécurité attendus surlignés.

Si les en-têtes de sécurité sont inclus dans votre liste d'en-têtes, cela signifie que vous avez créé avec succès votre première fonction Lambda@Edge. En cas d'erreur de CloudFront retour ou d'autres problèmes, passez à l'étape suivante pour résoudre les problèmes.

Étape 6 : résoudre les problèmes

Si elle CloudFront renvoie des erreurs ou n'ajoute pas les en-têtes de sécurité comme prévu, vous pouvez étudier l'exécution de votre fonction en consultant CloudWatch Logs. Veillez à utiliser les journaux stockés à l' AWS emplacement le plus proche de l'endroit où la fonction est exécutée.

Par exemple, si vous consultez le fichier depuis Londres, essayez de remplacer la région dans la CloudWatch console par Europe (Londres).

Pour examiner les CloudWatch journaux de votre fonction Lambda @Edge
  1. Connectez-vous à la CloudWatch console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Modifiez Région en spécifiant l'emplacement qui est montré lorsque vous affichez le fichier dans votre navigateur. C'est là que la fonction s'exécute.

  3. Dans le volet de gauche, choisissez Logs (Journaux) pour afficher les journaux de votre distribution.

Pour de plus amples informations, veuillez consulter Surveillez CloudFront les métriques avec Amazon CloudWatch.

Étape 7 : nettoyer votre exemple de ressources

Si vous avez créé un compartiment et une CloudFront distribution Amazon S3 uniquement pour ce didacticiel, supprimez les AWS ressources que vous avez allouées afin de ne plus payer de frais. Une fois que vous avez supprimé vos AWS ressources, le contenu que vous avez ajouté n'est plus disponible.

Tâches

Supprimer le compartiment S3

Avant de supprimer votre compartiment Amazon S3, assurez-vous que la journalisation est désactivée pour le compartiment. Sinon, AWS continue d'écrire des journaux dans votre compartiment lorsque vous le supprimez.

Pour désactiver la journalisation pour un compartiment
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Sélectionnez le compartiment, puis choisissez Properties (Propriétés).

  3. Dans Properties (Propriétés), choisissez Logging (Journalisation).

  4. Désactivez la case à cocher Activé.

  5. Choisissez Enregistrer.

Vous pouvez maintenant supprimer votre compartiment. Pour plus d’informations, consultez la section Suppression d’un compartiment du Guide de l'utilisateur de la console Amazon Simple Storage Service.

Supprimer la fonction Lambda

Pour obtenir des instructions sur la suppression de l'association de fonctions Lambda et éventuellement de la fonction elle-même, reportez-vous à. Supprimer les fonctions et les répliques Lambda @Edge

Supprimer la CloudFront distribution

Avant de supprimer une CloudFront distribution, vous devez la désactiver. Une distribution désactivée n'est plus fonctionnelle et n'accumule pas de frais. Vous pouvez activer une distribution désactivée à tout moment. Une fois que vous avez supprimé une distribution désactivée, celle-ci n'est plus disponible.

Pour désactiver et supprimer une CloudFront distribution
  1. Ouvrez la CloudFront console à l'adressehttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Sélectionnez la distribution que vous souhaitez désactiver, puis choisissez Désactiver).

  3. Lorsque vous serez invité à confirmer l'opération, choisissez Oui, désactiver.

  4. Sélectionnez la distribution désactivée, puis choisissez Supprimer.

  5. Lorsque vous êtes invité à confirmer l'opération, choisissez Oui, supprimer.

Informations connexes

Maintenant que vous avez une idée générale de la manière dont les fonctions Lambda@Edge s'exécutent, lisez les documents suivants pour en savoir plus :