Cours
Amazon EventBridge est un service de bus d'événements sans serveur puissant qui permet aux développeurs de créer des architectures orientées événements avec une charge opérationnelle minimale.
Dans le cadre de mon travail avec les systèmes cloud natifs, j'ai pu constater à quel point la réactivité en temps réel et le découplage des services sont essentiels pour créer des applications évolutives et faciles à maintenir, et c'est exactement ce qu'offre EventBridge.
Qu'est-ce qu'Amazon EventBridge ?
Avant de vous lancer dans la configuration, il est important de comprendre ce qu'est EventBridge, pourquoi il est important et comment il s'intègre dans l'écosystème plus large d'outils événementiels d'AWS.
Présentation d'Amazon EventBridge
Amazon EventBridgeest un service de bus d'événements entièrement géré et sans serveur qui permet aux applications de communiquer via des événements en temps quasi réel.
Il simplifie le routage des événements entre les producteurs d'événements (sources de changement, comme S3, DynamoDB ou des applications personnalisées) et les consommateurs d'événements (services qui agissent sur ces changements, comme Lambda, Step Functions ou SNS).
Image contenant un diagramme visuel des événements de routage Amazon EventBridge depuis les producteurs vers plusieurs cibles. Source : Blogs AWS
EventBridge a été conçu dans un souci de flexibilité et d'évolutivité.
Il s'adapte automatiquement pour traiter des millions d'événements par seconde et permet une logique de routage complexe grâce à des règles basées sur JSON.
Voici quelques-unes de ses principales fonctionnalités :
- Intégration native avec plus de 90 services AWS (par exemple, EC2, CodePipeline, CloudTrail)
- Prise en charge des sources d'événements SaaS externes, telles que Zendesk, Shopify et Datadog.
- Découverte et registre de schémas intégrés, qui détectent et documentent automatiquement les structures d'événements.
- Archivage et relecture des événements, pour faciliter le débogage, l'audit ou le retraitement d'événements passés.
Cela fait d'EventBridge un outil fondamental pour la création d'architectures cloud découplées et résilientes.
EventBridge et l'architecture orientée événements
EventBridge est basé sur le modèle d'architecture orientée événements (EDA).
Dans l'EDA, les services communiquent en émettant et en réagissant à des événements, plutôt qu'en s'appelant de manière synchrone.
Par exemple, au lieu qu'un service appelle l'API d'un autre service pour démarrer une tâche, il émet simplement un événement tel que « ImageUploaded », et les autres services à l'écoute de cet événement réagissent en conséquence.
L'image ci-dessous illustre cette configuration, dans laquelle Amazon API Gateway sert de point d'entrée sécurisé vers le bus d'événements central EventBridge.
Image illustrant Amazon API Gateway en tant que point d'entrée sécurisé vers le bus EventBridge central. Source : Blogs AWS
Avantages de l'architecture orientée événements :
Image illustrant les avantages de l'architecture orientée événements.
- Couplage lâche : Les services sont indépendants et ignorent l'existence les uns des autres.
- Évolutivité : Les systèmes peuvent faire évoluer les composants individuels de manière indépendante.
- Tolérance aux pannes : Les défaillances d'une partie du système n'ont pas d'effet en cascade sur les autres parties.
- Traitement asynchrone : Améliore la réactivité et les performances du système.
EventBridge constitue l'épine dorsale de l'EDA sur AWS, vous permettant de connecter des microservices, des ressources cloud et même des systèmes tiers sans les coupler étroitement.
> Si vous souhaitez acquérir une solide compréhension de l'écosystème événementiel d'AWS, veuillez explorer le cours AWS Cloud Technology and Services.
En quoi EventBridge diffère-t-il des autres options basées sur les événements ?
AWS propose plusieurs outils pour la gestion des événements et des messages, mais EventBridge offre des fonctionnalités uniques qui le distinguent des alternatives telles que SNS et SQS.
SNS (Service de notification simple)
SNS est idéal pour la messagerie pub/sub simple.
Vous pouvez publier un message sur un sujet et le transmettre à plusieurs abonnés, par exemple par e-mail, SMS ou Lambda.
Cependant, il manque de fonctionnalités avancées de routage et de filtrage des événements.
SQS (Service de file d'attente simple)
SQS fournit une file d'attente fiable et évolutive pour le stockage et le traitement des messages.
Les consommateurs interrogent la file d'attente pour obtenir des messages, ce qui est utile pour les systèmes asynchrones et découplés, mais ne prend pas en charge le routage en temps réel basé sur la technologie push.
EventBridge
EventBridge combine le meilleur des deux mondes : routage en temps réel, filtrage avancé, validation de schémas et intégration SaaS.
Il est conçu pour les systèmes complexes, à grande échelle et événementiels qui nécessitent des règles flexibles, des cibles multiples et une intégration transparente entre les services.
Événements CloudWatch
CloudWatch Events était le précurseur d'EventBridge.
EventBridge est son remplaçant de nouvelle génération, qui ajoute :
- Intégration des partenaires SaaS
- Autocars événementiels personnalisés
- Découverte et registre de schémas
- Amélioration de la gestion des règles et des autorisations
Si vous utilisez toujours CloudWatch Events, envisagez de migrer vers EventBridge pour bénéficier de fonctionnalités plus avancées.
Voici une comparaison rapide des différents services évoqués :
Caractéristique |
SNS |
SQS |
EventBridge |
Modèle de livraison |
Push (pub/sub) |
Sondage (file d'attente) |
Push (avec routage basé sur des règles) |
Filtrage des événements |
Basique (attributs du message) |
Aucun |
Avancé (correspondance de modèles JSON) |
Prise en charge du fan-out |
Oui |
Non |
Oui |
Prise en charge des schémas |
Non |
Non |
Oui (registre de schémas) |
Intégration avec SaaS |
Limité |
Limité |
Oui (intégrations SaaS natives) |
Rediffusion de l'événement |
Non |
Avec conservation |
Oui |
File d'attente des messages non distribués (DLQ) |
Oui |
Oui |
Oui |
Composants principaux et fonctionnalités clés d'Amazon EventBridge
Pour utiliser Amazon EventBridge de manière efficace, il est essentiel de comprendre ses composants fondamentaux.
Ces composants fonctionnent ensemble pour permettre des flux de travail dynamiques et basés sur les événements, avec une infrastructure minimale.
Vous trouverez ci-dessous une description détaillée de chaque composant, de son fonctionnement et de son utilisation.
Autocars pour événements
Au cœur d'EventBridge se trouve le bus d'événements, qui sert de canal par lequel transitent tous les événements.
Un bus d'événements reçoit des événements provenant des services AWS, d'applications personnalisées ou de fournisseurs SaaS, puis les achemine vers les destinataires appropriés en fonction de règles de correspondance.
L'image ci-dessous présente la section Bus EventBridge dans la console AWS.
Image contenant une capture d'écran de la console AWS affichant la section Bus EventBridge.
Types d'autocars pour événements
Voici les types de bus événementiels disponibles dans AWS :
Bus d'événements par défaut :
- Fourni automatiquement dans chaque compte AWS.
- Principalement utilisé pour recevoir des événements provenant des services AWS (tels que les changements d'état EC2 ou les événements S3).
- Vous pouvez également envoyer vos propres événements personnalisés au bus par défaut si aucun autre bus n'est requis.
Autobus pour événements personnalisés :
- Créé par vous pour prendre en charge différents domaines, services ou charges de travail.
- Idéal pour isoler les événements liés aux applications ou séparer les environnements de développement et de production.
- Contrôlez plus précisément les politiques d'accès et le routage des événements.
Exemple de cas d'utilisation :
Créez des bus d'événements distincts pour différents domaines, par exemple un pour les opérations de commerce électronique et un autre pour l'analyse, afin de garder les flux d'événements isolés et gérables.
Création d'un bus d'événements personnalisé :
aws events create-event-bus --name my-app-bus
Comprendre les règles et les objectifs
Les règles définissent quels événements doivent être acheminés vers quelles cibles.
Ils utilisent la correspondance de modèles JSON pour filtrer les événements entrants sur le bus et les transmettre à une ou plusieurs cibles.
Principaux aspects des règles :
- Vous pouvez filtrer sur n'importe quel attribut d'événement, tel que la source, l'
detail-type
ou les champs d'detail
imbriqués. - Plusieurs règles peuvent correspondre au même événement, ce qui permet un comportement en éventail.
- Une seule règle peut avoir plusieurs cibles, ce qui permet à un événement de déclencher des pipelines de traitement parallèles.
Les cibles prises en charge comprennent :
- AWS Lambda
- Fonctions par étapes
- Flux de données Kinesis
- SNS, SQS
- Tâches ECS
- Passerelle API
Image contenant les icônes des services AWS pour les cibles prises en charge.
L'exemple suivant montre comment définir une règle d'événement et la lier à une fonction Lambda en tant que cible :
aws events put-rule \
--name "ImageUploadRule" \
--event-pattern file://event-pattern.json \
--event-bus-name my-app-bus
aws events put-targets \
--rule "ImageUploadRule" \
--targets "Id"="1","Arn"="arn:aws:lambda:region:account-id:function:ImageProcessor"
Exemple de modèle d'événement (event-pattern.json
) :
{
"source": ["myapplication.upload"],
"detail-type": ["Image Uploaded"]
}
Tuyaux
Les pipes EventBridge simplifient la connexion entre les sources (telles que DynamoDB Streams) et les destinations (telles que SQS ou Lambda) sans nécessiter de code personnalisé.
L'image ci-dessous présente la section EventBridge Pipes dans la console AWS.
Image contenant une capture d'écran de la console AWS affichant la section EventBridge Pipes.
Principales caractéristiques de Pipes :
- Filtrage : Utilisez des modèles d'événements pour limiter les événements qui transitent par le canal.
- Enrichissement : Ajoutez du contexte en appelant une fonction Lambda afin d'enrichir l'événement avant sa livraison.
- Transformation : Convertissez la forme de l'événement à l'aide de transformateurs d'entrée.
Quand utiliser les pipes :
- Connecter des flux de données (par exemple, Kinesis ou DynamoDB) aux consommateurs en aval.
- Intégration des services AWS à différents formats d'événements.
Planificateur
EventBridge Scheduler permet l'exécution de tâches planifiées, ce qui est idéal pour automatiser des opérations telles que les sauvegardes quotidiennes, les synchronisations de données toutes les heures ou le déclenchement de workflows selon un calendrier défini.
L'image ci-dessous présente la section EventBridge Scheduler dans la console AWS.
Image contenant une capture d'écran de la console AWS affichant la section EventBridge Scheduler.
Les principales caractéristiques sont les suivantes :
- Exécutions uniques ou récurrentes
- Prise en charge des expressions cron ou des expressions basées sur la fréquence
- Contrôle des fuseaux horaires, des fenêtres de début/fin et de la logique de réessai
Créer un événement planifié :
aws scheduler create-schedule \
--name "DailyETLJob" \
--schedule-expression "rate(1 day)" \
--flexible-time-window '{"Mode":"OFF"}' \
--target '{"Arn":"arn:aws:lambda:region:account-id:function:RunETL", "RoleArn":"arn:aws:iam::account-id:role/SchedulerExecutionRole"}'
Ce calendrier invoque la fonction Lambda RunETL
tous les jours.
Registre de schémas et relectures d'événements
Schema Registry aide les développeurs à comprendre et à documenter la structure des événements.
Il détecte automatiquement les schémas des services AWS et des applications personnalisées, puis les stocke dans un registre.
Les avantages du registre de schémas sont les suivants :
- Génération de liaisons de code fortement typées en Java, Python et TypeScript.
- Amélioration de la cohérence et réduction des erreurs d'analyse dans les applications événementielles.
La fonction Replay des événements vous permet d'archiver les événements sur le bus et de les rejouer ultérieurement.
Ceci est utile pour :
- Débogage des workflows ayant échoué
- Rejouer des événements après la correction d'un bug
- Récupération de données perdues ou dont le traitement a été retardé
Image contenant un diagramme conceptuel illustrant les événements de routage EventBridge.. Source : Blogs AWS
Activer l'archivage des événements :
aws events create-archive \
--archive-name "MyApplicationArchive" \
--event-source-arn "arn:aws:events:region:account-id:event-bus/my-application-bus" \
--retention-days 7
Revoir les événements archivés :
aws events start-replay \
--replay-name "MyReplay" \
--source-arn "arn:aws:events:region:account-id:archive/MyApplicationArchive" \
--destination "arn:aws:events:region:account-id:event-bus/my-application-bus"
Ces composants, à savoir les bus d'événements, les règles, les pipes, le planificateur et le registre de schémas, forment ensemble une plateforme complète et flexible permettant de créer et de gérer des architectures robustes basées sur les événements sur AWS.
Chacun joue un rôle unique dans la dissociation des services, l'amélioration de l'évolutivité et l'accélération du développement des applications.
Développement d'applications événementielles avec EventBridge
Une fois la configuration de base effectuée, il est temps d'appliquer Amazon EventBridge dans des workflows d'application réels.
Configurer EventBridge dans votre application
Voici comment émettre des événements personnalisés depuis votre application à l'aide de l'interface CLI AWS :
aws events put-events --entries '[
{
"Source": "myapplication.media",
"DetailType": "ImageUploaded",
"Detail": "{\"bucket\": \"my-bucket-name\", \"key\": \"image.jpg\"}",
"EventBusName": "default"
}
]'
Explication :
Source
: Nom ou domaine du service émetteur.DetailType
: Le type d'événement émis.Detail
: La charge utile, encodée sous forme de chaîne JSON.EventBusName
: Le bus qui accueillera et acheminera les participants à l'événement.
Vous pouvez intégrer cette logique directement dans vos fonctions Lambda, vos services backend ou vos charges de travail conteneurisées à l'aide de SDK (par exemple, Boto3, AWS SDK pour JavaScript).
Routage des événements entre les services AWS
Le routage des événements entre les services AWS permet des intégrations transparentes, telles que le déclenchement de fonctions Lambda à partir d'actions S3 via EventBridge.
Exemple de scénario : Connectez Amazon S3 à une fonction Lambda via EventBridge.
Étape 01 : Veuillez créer un compartiment S3 et télécharger un objet.
Étape 02 : Activez les notifications d'événements S3 via EventBridge :
- Accédez au compartiment S3.
- Activez l'option « EventBridge » sous Notifications d'événements.
Étape 03 : Créez une règle EventBridge correspondant au modèle d'événement :
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["my-bucket"]
}
}
}
Étape 04 : Veuillez associer une fonction Lambda comme cible de la règle afin de traiter l'objet téléchargé.
Ce modèle vous permet d'étendre le traitement ultérieurement en ajoutant d'autres cibles telles que Step Functions ou SNS pour les notifications.
Exemple pratique : Flux de travail pour le téléchargement et le redimensionnement des images
Nous pouvons examiner un pipeline événementiel type :
01 : L'utilisateur télécharge une image sur S3.
02 : S3 émet un événement vers le bus EventBridge par défaut.
03 : EventBridge associe une règle pour l' s3:ObjectCreated:*
et la redirige vers une fonction Lambda.
04 : Lambda redimensionne l'image, l'enregistre dans un autrecompartiment S3 d' , puis consigne la sortie.
Ce modèle est efficace pour les raisons suivantes :
- Il est évolutif (c'est-à-dire qu'il peut traiter des milliers d'événements par seconde).
- Il est modulaire (c'est-à-dire que vous pouvez remplacer la fonction de redimensionnement d'image sans toucher aux autres composants).
- Il permet le parallélisme (c'est-à-dire que vous pouvez envoyer simultanément le même événement vers des pipelines d'analyse ou de notification).
Ajout de règles pour l'évolutivité et la flexibilité
Vous pouvez facilement répartir les événements en associant plusieurs cibles à une seule règle :
aws events put-targets --rule image-uploaded \
--targets '[
{"Id": "resizeLambda", "Arn": "arn:aws:lambda:region:account-id:function:ResizeImage"},
{"Id": "notifySNS", "Arn": "arn:aws:sns:region:account-id:ImageUploadedTopic"}
]'
Cela permet à votre application de traiter l'événement, d'avertir les utilisateurs et de mettre à jour les journaux, le tout en parallèle, sans coupler ces tâches entre elles.
Optimisation des performances et garantie de la sécurité
Optimisez les performances et la sécurité en concevant des modèles d'événements précis qui minimisent le traitement inutile et réduisent les risques.
Concevoir des modèles d'événements efficaces
Évitez les modèles généraux ou fourre-tout qui déclenchent des exécutions inutiles. Au lieu de cela, filtrez les événements avec précision :
{
"source": ["myapplication.service"],
"detail-type": ["ImageUploaded"],
"detail": {
"bucket": ["media-uploads"]
}
}
Cela permet de réduire les coûts, d'améliorer la latence et de garantir que seuls les événements pertinents sont traités.
Mettre en œuvre des contrôles de sécurité robustes
La sécurité est essentielle dans toute architecture sans serveur. Veuillez suivre ces directives :
- Utilisez le principe du moindre privilège IAM : N'accordez que les autorisations nécessaires pour publier ou consommer des événements.
- Activer le chiffrement : EventBridge prend en charge le chiffrement au repos à l'aide d'AWS KMS.
- Mettre en place des DLQ (files d'attente des messages non remis) pour les livraisons ayant échoué :
"DeadLetterConfig": {
"Arn": "arn:aws:sqs:region:account-id:my-dlq"
}
Les DLQ enregistrent les événements non livrables, ce qui vous permet de les diagnostiquer et de les retraiter ultérieurement.
> Si vous souhaitez approfondir vos connaissances en matière de sécurisation des applications cloud et de gestion des autorisations AWS, veuillez consulter le cours AWS Security and Cost Management.consultez le cours AWS Security and Cost Management.
Gestion des coûts et des quotas de service
Afin de gérer efficacement les coûts et les performances, il est important de bien comprendre le modèle tarifaire d'EventBridge et de surveiller régulièrement les quotas de service.
Comprendre la structure tarifaire
Vous êtes facturé par :
- Événement publié (en dollars par million d'événements)
- Événement rejoué
- Utilisation des tuyaux
- Tâches planifiées
Le niveau gratuit comprend 100 000 événements par mois, ce qui est généreux pour la plupart des cas d'utilisation liés au développement et à la petite production.
Surveillance et ajustement des quotas de service
Suivez et demandez des augmentations en utilisant :
aws service-quotas list-service-quotas --service-code events
Principaux quotas à surveiller :
- Règles par bus d'événements
- Cibles par règle
- Invocations par seconde
Une mise à l'échelle responsable de votre utilisation garantit la fiabilité de votre système à mesure que la charge augmente.
Configurations avancées et alternatives d'EventBridge
Pour les architectures événementielles plus complexes, il est recommandé d'envisager les fonctionnalités avancées d'EventBridge et d'autres modèles afin d'améliorer le contrôle, la sécurité et la flexibilité de la planification.
Répartition des événements entre comptes
Activez le partage sécurisé des événements entre les comptes AWS :
{
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:root"},
"Action": "events:PutEvents",
"Resource": "arn:aws:events:region:account-id:event-bus/shared-bus"
}]
}
Veuillez utiliser AWS CloudTrail pour auditer l'utilisation et garantir la conformité.
Fonctionnalités avancées du planificateur EventBridge
Allez au-delà de la planification de base avec :
- Stratégies de réessai flexibles
- Respect des délais
- Prise en charge des expressions cron ou rate()
Exemple d'expression cron :
Déclencher un workflow tous les lundis à 9 h :
--schedule-expression "cron(0 9 ? * MON *)"
Quand envisager des alternatives ?
En fonction de vos besoins, vous pouvez envisager d'autres services AWS mieux adaptés à des cas d'utilisation spécifiques.
Voici quelques exemples :
Cas d'utilisation |
Alternative |
FIFO ou ordre strict |
Amazon SQS FIFO |
Débit élevé et faible latence |
Amazon MSK (Kafka) |
Orchestration complexe |
Fonctions par étapes |
Notifications simples |
Amazon SNS |
Conclusion
Amazon EventBridge est un élément fondamental pour les applications modernes natives du cloud. Il vous permet de créer des systèmes évolutifs et faiblement couplés, de réagir en temps réel aux événements sur les plateformes AWS et SaaS, et d'intégrer des workflows avec une infrastructure minimale.
Pour réussir avec EventBridge, concentrez-vous sur la conception de domaines modulaires basés sur les événements, appliquez les meilleures pratiques en matière de privilèges minimaux et de files d'attente de messages non distribués, et surveillez en permanence l'utilisation, les quotas et les coûts.
Si vous souhaitez approfondir votre expertise AWS, découvrez le cursus AWS Cloud Practitioner.
Foire aux questions
En quoi EventBridge diffère-t-il de SNS et SQS ?
EventBridge offre un filtrage basé sur des règles, la prise en charge des schémas et des intégrations avec des plateformes SaaS, des fonctionnalités qui ne sont pas disponibles dans SNS ou SQS.
EventBridge est-il sans serveur ?
Oui, EventBridge est un service entièrement géré et sans serveur qui s'adapte automatiquement au volume d'événements.
Puis-je utiliser EventBridge pour déclencher des fonctions Lambda ?
Oui. EventBridge peut acheminer des événements vers des fonctions Lambda en fonction de règles et de filtres personnalisés.
Que sont les pipes EventBridge et quand dois-je les utiliser ?
Les pipes permettent des intégrations directes, point à point, entre les sources et les cibles, avec prise en charge du filtrage, de la transformation et de l'enrichissement.
Comment sécuriser mes workflows EventBridge ?
Utilisez les stratégies IAM, le chiffrement et les files d'attente de messages non remis pour sécuriser et surveiller votre architecture orientée événements.
EventBridge prend-il en charge le routage d'événements entre comptes ?
Oui, EventBridge prend en charge le partage d'événements entre comptes à l'aide de stratégies et d'autorisations basées sur les ressources.
Qu'est-ce que le planificateur EventBridge ?
Le planificateur est une fonctionnalité intégrée permettant de déclencher des événements basés sur le temps, avec une logique de réessai et des options de planification flexibles.
Comment fonctionne la tarification pour EventBridge ?
EventBridge facture en fonction du nombre d'événements publiés, transmis et rejoués, avec une offre gratuite généreuse.
Est-il possible de rejouer des événements passés dans EventBridge ?
Oui, grâce à la fonctionnalité de relecture des événements, les événements archivés peuvent être relus à des fins de dépannage ou de retraitement.