0Pricing
AWS Solutions Architect · Leçon

EventBridge : bus d’événements et règles

Publiez des événements sur un bus EventBridge personnalisé, écrivez des règles de modèle d’événement pour filtrer et acheminer les événements vers Lambda, SQS ou des cibles Step Functions.

EventBridge : bus d’événements et règles est une leçon AWS Solutions Architect gratuite sur CoddyKit. Ceci est la leçon 1 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 AWS Solutions Architect, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AWS Solutions Architect comprend 4 leçons au total.

Qu’est-ce qu’Amazon EventBridge ?

Amazon EventBridge (anciennement CloudWatch Events) est un bus d’événements sans serveur qui facilite la connexion d’applications à l’aide d’événements provenant des services AWS, de vos propres applications et de fournisseurs SaaS. Les événements sont des objets JSON ; EventBridge les achemine vers une ou plusieurs cibles en fonction de règles de modèle d’événement. Contrairement à SQS (communication de point à point), EventBridge est une couche de routage pub/sub : un même événement peut être distribué simultanément à de nombreuses cibles.

Bus d’événements : Default, personnalisés et partenaires

EventBridge propose trois types de bus d’événements. Le bus Default reçoit les événements des services AWS (changements d’état d’EC2, événements S3, appels d’API CloudTrail, etc.). Les bus personnalisés sont des bus que vous créez pour les événements de vos propres applications : ils isolent ces événements de ceux des services AWS. Les bus partenaires reçoivent directement les événements de fournisseurs SaaS (Zendesk, Datadog, GitHub, Shopify) grâce à des intégrations prédéfinies, sans nécessiter de Lambda effectuant des interrogations périodiques.

# Create a custom event bus for your application
aws events create-event-bus --name my-app-bus

# Put a custom event onto the bus
aws events put-events --entries '[{
  "Source": "com.myapp.orders",
  "DetailType": "OrderPlaced",
  "Detail": "{\"orderId\": \"ORD-123\", \"total\": 99.99}",
  "EventBusName": "my-app-bus"
}]'

Règles de modèle d’événement

Une règle de modèle d’événement définit les événements à rechercher à l’aide d’un modèle JSON qui filtre n’importe quelle combinaison de champs d’événement (source, type de détail, account, région ou champs de l’objet detail). EventBridge évalue chaque événement par rapport à toutes les règles du bus. Les événements correspondants sont transférés aux cibles configurées pour la règle. Les règles utilisent une logique OR au niveau des règles et une logique AND au sein d’un objet de modèle.

# Create a rule that matches EC2 instance state changes to 'stopped'
aws events put-rule \
  --name ec2-stopped-alert \
  --event-bus-name default \
  --event-pattern '{
    "source": ["aws.ec2"],
    "detail-type": ["EC2 Instance State-change Notification"],
    "detail": {
      "state": ["stopped"]
    }
  }' \
  --state ENABLED

Configuration des cibles

EventBridge peut acheminer les événements correspondants vers plus de 20 types de cibles, notamment des fonctions Lambda, des files d’attente SQS, des rubriques SNS, des machines d’état Step Functions, des flux de données Kinesis, des points de terminaison API Gateway, des tâches ECS et même un autre bus EventBridge (pour le routage entre comptes). Chaque règle peut avoir jusqu’à 5 cibles. EventBridge appelle les cibles de manière asynchrone et effectue de nouvelles tentatives avec un délai exponentiel en cas d’échec.

# Add an SNS topic and Lambda function as targets for the rule
aws events put-targets \
  --rule ec2-stopped-alert \
  --event-bus-name default \
  --targets '[{
    "Id": "notify-ops",
    "Arn": "arn:aws:sns:us-east-1:123456789012:ops-alerts"
  }, {
    "Id": "auto-remediate",
    "Arn": "arn:aws:lambda:us-east-1:123456789012:function:RestartEC2"
  }]'

Transformation des entrées

Par défaut, EventBridge transmet l’intégralité du JSON de l’événement à la cible. Utilisez Input Transformation pour remodeler l’événement avant sa transmission : extraire des champs précis, construire un nouvel objet JSON ou créer une chaîne personnalisée. Cette fonctionnalité est utile lorsqu’une fonction Lambda ou un point de terminaison d’API attend une structure de charge utile précise plutôt que l’enveloppe complète de l’événement EventBridge, ce qui évite d’avoir besoin d’une Lambda intermédiaire uniquement pour remodeler les données.

# Input transformer: extract orderId and total from detail
# InputPathsMap extracts values by JSON path
{
  'InputPathsMap': {
    'orderId': '$.detail.orderId',
    'total': '$.detail.total'
  },
  'InputTemplate': '{
    "message": "New order <orderId> for $<total>",
    "channel": "ops"
  }'
}

Règles planifiées (Cron/Rate)

Les règles EventBridge peuvent également se déclencher selon une planification plutôt qu’en fonction d’un événement correspondant. Utilisez une expression de fréquence (par exemple rate(5 minutes)) pour les déclenchements à intervalle fixe, ou une expression cron pour une planification basée sur le calendrier. Les règles planifiées sont idéales pour déclencher des fonctions Lambda qui exécutent des tâches de nettoyage par lots, envoient des rapports périodiques ou exécutent des tâches DMS nocturnes, en remplacement des tâches cron fondées sur EC2.

# Create a scheduled rule that fires every day at midnight UTC
aws events put-rule \
  --name nightly-cleanup \
  --schedule-expression 'cron(0 0 * * ? *)' \
  --state ENABLED

aws events put-targets \
  --rule nightly-cleanup \
  --targets '[{
    "Id": "cleanup-lambda",
    "Arn": "arn:aws:lambda:us-east-1:123456789012:function:NightlyCleanup"
  }]'

Archivage et relecture des événements

EventBridge peut archiver tous les événements d’un bus (ou un sous-ensemble filtré) dans une archive d’événements et les conserver pendant une durée configurable. Vous pouvez ensuite rejouer à tout moment les événements archivés vers le bus : c’est utile pour rejouer des événements afin de tester une nouvelle version de Lambda, récupérer des événements qu’une cible n’a pas reçus à cause d’un bogue ou alimenter un nouveau service avec des événements historiques. Il s’agit d’un puissant filet de sécurité opérationnel, propre à EventBridge par rapport aux autres systèmes pub/sub.

# Create an event archive for the custom bus
aws events create-archive \
  --archive-name my-app-archive \
  --event-source-arn arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus \
  --retention-days 30

# Replay archived events from a specific time window
aws events start-replay \
  --replay-name replay-missed-orders \
  --event-source-arn arn:aws:events:us-east-1:123456789012:archive/my-app-archive \
  --event-start-time 2024-01-10T00:00:00Z \
  --event-end-time 2024-01-10T06:00:00Z \
  --destination '{"Arn": "arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus"}'

Routage entre comptes et entre régions

EventBridge prend en charge le routage d’événements entre comptes en créant une stratégie fondée sur les ressources sur le bus cible d’un autre compte, afin d’autoriser le compte source à publier des événements. Cela permet à un compte de supervision centralisé de recevoir les événements de tous les comptes de charges de travail, ou de mettre en place une architecture de bus de service partagé dans laquelle une équipe chargée de la plateforme achemine les événements vers les bus des équipes consommatrices. Le routage entre régions fonctionne de manière similaire, avec des cibles de bus d’événements interrégionales explicites.

# Allow a source account (111111111111) to send events to this bus
aws events put-permission \
  --event-bus-name my-central-bus \
  --action events:PutEvents \
  --principal 111111111111 \
  --statement-id allow-source-account

EventBridge Pipes

EventBridge Pipes crée des intégrations de point à point entre une source (SQS, Kinesis, flux DynamoDB, Kafka) et une cible, avec un filtrage et un enrichissement facultatifs entre les deux (via Lambda, Step Functions ou API Gateway). Les Pipes sont plus simples que l’écriture d’un consommateur Lambda effectuant des interrogations périodiques : ils gèrent automatiquement l’interrogation, le traitement par lots, le filtrage et le routage. Utilisez Pipes lorsque vous avez besoin d’une connexion directe entre une source et une cible, sans bus pub/sub complet.

# Create an EventBridge Pipe from SQS to Lambda
aws pipes create-pipe \
  --name sqs-to-processor \
  --source arn:aws:sqs:us-east-1:123456789012:incoming-orders \
  --target arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder \
  --role-arn arn:aws:iam::123456789012:role/PipeRole \
  --source-parameters '{
    "SqsQueueParameters": {"BatchSize": 10}
  }' \
  --filter-criteria '{
    "Filters": [{"Pattern": "{\"body\": {\"orderType\": [\"PRIORITY\"]}}"}]
  }'

EventBridge, SNS ou SQS ?

Ces trois services se recouvrent partiellement, mais répondent à des cas d’utilisation différents. SNS : distribution en étoile fondée sur l’envoi vers des abonnés (e-mail, HTTP, SQS, Lambda), avec une fonctionnalité pub/sub simple et sans filtrage. SQS : file d’attente de messages durable pour un découplage de point à point, selon un modèle où le consommateur récupère les messages. EventBridge : bus de routage fondé sur le contenu, avec registre de schémas, archivage et relecture, partenaires SaaS et remise entre comptes ; il convient particulièrement au routage complexe d’événements entre de nombreux services. Utilisez EventBridge lorsque vous avez besoin de règles de routage sophistiquées, et pas seulement d’une simple distribution en étoile.

Registre de schémas EventBridge

Le registre de schémas EventBridge détecte et répertorie automatiquement la structure des événements qui circulent sur vos bus d’événements. Il stocke les schémas au format OpenAPI 3.0 afin que les développeurs puissent découvrir les événements disponibles et générer des liaisons de code (Java, Python, TypeScript) qui désérialisent les événements en objets typés. Cela élimine le code manuel d’analyse JSON et garantit la sécurité des types entre les services pilotés par les événements. Vous pouvez également enregistrer manuellement des schémas d’événements personnalisés pour les événements produits par vos propres applications.

# Enable schema discovery on a custom event bus
aws schemas create-discoverer \
  --source-arn arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus \
  --description 'Auto-discover schemas from app bus'

# List discovered schemas
aws schemas list-schemas \
  --registry-name discovered-schemas

Vérification rapide

Vérifiez votre compréhension des concepts AWS Solutions Architect (SAA-C03) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris qu’EventBridge achemine simultanément les événements vers plusieurs cibles à l’aide de règles de modèle fondées sur le contenu, que l’archivage et la relecture permettent de conserver et de retraiter les événements historiques sans modifier le code, et qu’EventBridge Pipes fournit des pipelines gérés entre des sources et des cibles à partir de sources de diffusion en continu. Nous allons maintenant découvrir Step Functions pour orchestrer des flux de travail sans serveur en plusieurs étapes.

Questions Fréquemment Posées

La leçon « EventBridge : bus d’événements et règles » est-elle gratuite ?

Oui — le texte complet de « EventBridge : bus d’événements et règles » 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 AWS Solutions Architect, passe à CoddyKit PRO. Le cours AWS Solutions Architect comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « EventBridge : bus d’événements et règles » ?

Publiez des événements sur un bus EventBridge personnalisé, écrivez des règles de modèle d’événement pour filtrer et acheminer les événements vers Lambda, SQS ou des cibles Step Functions. Tu pratiques AWS Solutions Architect 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 AWS Solutions Architect ?

Aucune expérience préalable n'est requise. AWS Solutions Architect 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 1 sur 4.

Combien de temps prend la leçon « EventBridge : bus d’événements et règles » ?

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 AWS Solutions Architect ?

Oui. Chaque leçon AWS Solutions Architect 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

  1. EventBridge : bus d’événements et règles
  2. Step Functions : orchestrer des flux de travail sans serveur
  3. Kinesis Data Streams pour le traitement d’événements en temps réel
  4. Modèles de chorégraphie ou d’orchestration
← Retour à AWS Solutions Architect