Lambda@Edge et modèles pilotés par les événements
Exécutez des fonctions dans les emplacements périphériques CloudFront et connectez Lambda à SQS, SNS, DynamoDB Streams et Kinesis pour créer des architectures pilotées par les événements.
Lambda@Edge et modèles pilotés par les événements est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu’est-ce que Lambda@Edge ?
Lambda@Edge vous permet d’exécuter des fonctions Lambda dans les emplacements périphériques CloudFront du monde entier, plus près des utilisateurs finaux, plutôt que dans une Région centralisée. Vous pouvez ainsi personnaliser les requêtes et les réponses HTTP avec une latence supplémentaire inférieure à la milliseconde au niveau du CDN. Les fonctions Lambda@Edge sont déployées mondialement et invoquées à chaque événement d’accès ou de non-accès au cache CloudFront, ce qui les rend idéales pour les tâches légères de manipulation des requêtes.
Les quatre points de déclenchement de CloudFront
Lambda@Edge peut intercepter le trafic à quatre points du cycle de vie d’une requête CloudFront :
- requête du visualiseur : se déclenche lorsque CloudFront reçoit une requête du visualiseur (utilisateur), avant de vérifier le cache
- requête d’origine : se déclenche lorsque CloudFront transmet une absence du cache à l’origine
- réponse d’origine : se déclenche lorsque l’origine renvoie une réponse, avant sa mise en cache
- réponse du visualiseur : se déclenche avant que CloudFront renvoie la réponse au visualiseur
Limites de Lambda@Edge par rapport à Lambda classique
Lambda@Edge est soumis à des limites plus strictes que Lambda classique : 128 MB de mémoire au maximum (événements du visualiseur), 1 GB (événements de l’origine), 5 secondes de délai d’expiration maximal (visualiseur) et 30 secondes (origine). Les fonctions doivent être créées dans us-east-1 et déployées vers les emplacements périphériques via CloudFront. VPC, variables d’environnement et couches Lambda ne sont pas pris en charge. Ces contraintes signifient que Lambda@Edge est conçu pour des transformations légères, et non pour des traitements lourds.
Cas d’utilisation courants de Lambda@Edge
Lambda@Edge est particulièrement adapté aux situations suivantes : tests A/B (réécrire les URL vers différents chemins d’origine selon les témoins), authentification (valider les JWT à la périphérie avant de les transmettre à l’origine), manipulation des en-têtes HTTP (ajouter des en-têtes de sécurité tels que HSTS, CSP et X-Frame-Options), normalisation des URL (rediriger www vers la version sans www ou imposer les barres obliques finales) et personnalisation (diffuser un contenu différent selon le pays du visualiseur à partir de l’en-tête CloudFront-Viewer-Country).
// Viewer Request: Add security headers
exports.handler = async (event) => {
const response = event.Records[0].cf.response;
response.headers['strict-transport-security'] = [{
key: 'Strict-Transport-Security',
value: 'max-age=63072000; includeSubdomains; preload'
}];
response.headers['x-frame-options'] = [{
key: 'X-Frame-Options',
value: 'DENY'
}];
return response;
};CloudFront Functions ou Lambda@Edge
Les fonctions CloudFront sont des fonctions JavaScript extrêmement légères qui s’exécutent uniquement aux étapes de requête et de réponse du visualiseur, avec une limite de durée d’exécution de 2 ms et un coût bien inférieur. Pour les cas d’utilisation simples (réécriture d’URL, manipulation des en-têtes, normalisation de la clé de cache), les fonctions CloudFront sont préférables à Lambda@Edge, car elles sont plus rapides et moins coûteuses. Utilisez Lambda@Edge lorsque vous avez besoin d’accéder à des appels réseau, de traiter des charges utiles plus volumineuses ou d’utiliser les points de déclenchement des requêtes et réponses d’origine.
Architecture pilotée par les événements avec Lambda
Une architecture pilotée par les événements connecte les services au moyen d’événements : des messages qui représentent quelque chose qui s’est produit. Dans AWS, Lambda est le principal consommateur d’événements : il reçoit des événements de SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge et d’autres services. Chaque événement déclenche une exécution Lambda, ce qui permet aux systèmes de réagir de manière asynchrone et indépendante, sans couplage étroit. Ce modèle permet un couplage lâche, une mise à l’échelle indépendante et une isolation des pannes.
Lambda comme consommateur SQS
Lambda peut être configuré comme mappage de source d’événements pour SQS. Lambda interroge la file d’attente, récupère jusqu’à une taille de lot de messages (jusqu’à 10 000 pour les files standard et 10 pour FIFO), puis invoque la fonction une fois par lot. Si la fonction échoue, l’ensemble du lot est renvoyé dans la file d’attente. Configurez une fenêtre de lot pour attendre d’autres messages avant l’invocation afin d’améliorer le débit. Utilisez une DLQ sur la file d’attente SQS source pour les messages qui échouent à plusieurs reprises.
aws lambda create-event-source-mapping \
--function-name 'OrderProcessor' \
--event-source-arn 'arn:aws:sqs:us-east-1:123456789012:OrderQueue' \
--batch-size 10 \
--maximum-batching-window-in-seconds 5Lambda avec DynamoDB Streams
DynamoDB Streams capture chaque modification au niveau d’un élément (INSERT, MODIFY, REMOVE) sous la forme d’une séquence ordonnée d’événements. Lambda lit le flux à l’aide d’un mappage de source d’événements avec TRIM_HORIZON (commencer par le plus ancien) ou LATEST (commencer par le plus récent). Lambda traite les enregistrements dans l’ordre au sein d’une partition. Les lots ayant échoué bloquent la poursuite du traitement de la même partition jusqu’à résolution du problème ; utilisez la division en cas d’erreur pour fractionner les lots défaillants et isoler les enregistrements problématiques.
aws lambda create-event-source-mapping \
--function-name 'StreamProcessor' \
--event-source-arn 'arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...' \
--starting-position TRIM_HORIZON \
--batch-size 100 \
--bisect-batch-on-function-errorLambda avec Kinesis Data Streams
Lambda traite les enregistrements Kinesis de manière similaire à ceux de DynamoDB Streams : une exécution simultanée par fragment. Les principales options de configuration comprennent le facteur de parallélisation (jusqu’à 10 invocations Lambda simultanées par fragment, avec traitement parallèle de sous-lots) et la distribution améliorée (débit dédié de 2 MB/s par fragment pour le consommateur Lambda). Ces options augmentent considérablement le débit des flux à gros volume sans augmenter le nombre de fragments.
EventBridge comme routeur d’événements
Amazon EventBridge est le bus d’événements recommandé pour connecter les services AWS et les applications personnalisées. Les événements arrivent sur un bus, puis les règles les filtrent selon un modèle et les acheminent vers des cibles telles que Lambda, SQS, Step Functions et d’autres services. EventBridge découple complètement les producteurs et les consommateurs d’événements : aucun des deux ne connaît l’autre. Le bus d’événements par défaut reçoit les événements des services AWS ; créez un bus d’événements personnalisé pour les événements de votre application.
aws events put-rule \
--name 'OrderPlacedRule' \
--event-pattern '{"source": ["com.myapp.orders"], "detail-type": ["OrderPlaced"]}' \
--state ENABLED
aws events put-targets \
--rule 'OrderPlacedRule' \
--targets 'Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:123456789012:function:InventoryUpdater'Modèle de diffusion : SNS vers plusieurs fonctions Lambda
Un modèle courant piloté par les événements est la diffusion : un événement déclenche plusieurs flux de traitement en parallèle. Publiez sur un rubrique SNS afin que plusieurs abonnements à des fonctions Lambda réagissent chacun indépendamment. Par exemple, un événement indiquant qu’une commande a été passée est diffusé vers : une fonction Lambda qui envoie un courriel de confirmation, une fonction Lambda qui met à jour l’inventaire et une fonction Lambda qui informe l’entrepôt. Chaque consommateur est indépendant et évolue séparément ; aucun consommateur unique ne peut bloquer les autres.
Vérification rapide
Vérifiez votre compréhension des concepts AWS Solutions Architect (SAA-C03) abordés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que Lambda@Edge exécute des fonctions dans les emplacements périphériques CloudFront, avec quatre points de déclenchement (requête/réponse du visualiseur et requête/réponse de l’origine), pour des tâches telles que l’authentification, la réécriture d’URL et la manipulation des en-têtes ; que les fonctions CloudFront constituent une solution moins coûteuse et plus rapide pour les transformations simples au niveau du visualiseur ; et que les modèles pilotés par les événements utilisant SQS, DynamoDB Streams, Kinesis, EventBridge et la diffusion SNS permettent des architectures faiblement couplées dans lesquelles Lambda réagit aux événements en temps réel. Nous allons maintenant étudier les files d’attente SQS Standard et FIFO.
Questions Fréquemment Posées
La leçon « Lambda@Edge et modèles pilotés par les événements » est-elle gratuite ?
Oui — le texte complet de « Lambda@Edge et modèles pilotés par les événements » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Lambda@Edge et modèles pilotés par les événements » ?
Exécutez des fonctions dans les emplacements périphériques CloudFront et connectez Lambda à SQS, SNS, DynamoDB Streams et Kinesis pour créer des architectures pilotées par les événements. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Lambda@Edge et modèles pilotés par les événements » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctions Lambda : environnements d’exécution, déclencheurs et gestionnaires
- Concurrence, limitation et concurrence réservée
- Couches Lambda et paquets de déploiement
- Lambda@Edge et modèles pilotés par les événements