Cloud & IT Cert Prep · Leçon

Event Grid et architecture pilotée par les événements

Acheminez les événements provenant de services Azure et d’éditeurs personnalisés avec Event Grid, distribuez-les à plusieurs abonnés et comparez Event Grid à Event Hubs et Service Bus.

Leçon 4 sur 413 étapes

Event Grid et architecture pilotée 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 qu’une architecture pilotée par les événements ?

Dans une architecture pilotée par les événements, les composants communiquent en publiant des événements et en s’y abonnant, plutôt qu’en s’appelant directement. Un composant (le producteur) émet un événement lorsqu’un fait important se produit : un fichier est envoyé, une commande est passée ou un appareil transmet une mesure. Les autres composants (les abonnés) réagissent indépendamment et de manière asynchrone aux événements qui les concernent. Cela découple les producteurs des consommateurs et améliore la capacité de montée en charge, la résilience et la maintenabilité.

Qu’est-ce qu’Azure Event Grid ?

Azure Event Grid est un service entièrement géré de routage d’événements qui transmet les événements de sources (éditeurs) à des gestionnaires (abonnés) selon un modèle push. Event Grid est conçu pour les événements réactifs et discrets : quelque chose a changé et vous devez réagir immédiatement. Il garantit une distribution au moins une fois avec de nouvelles tentatives automatiques, prend en charge le filtrage afin que les abonnés ne reçoivent que les événements pertinents, et peut acheminer les événements vers Azure Functions, Logic Apps, des webhooks, Event Hubs et des files d’attente Service Bus.

Rubriques Event Grid et abonnements aux événements

Les éditeurs envoient les événements vers une rubrique Event Grid. Les abonnés créent des abonnements aux événements sur une rubrique en indiquant un point de terminaison et, éventuellement, des règles de filtrage. Une même rubrique peut comporter plusieurs abonnements : chaque abonnement reçoit une copie indépendante des événements correspondants. Des services Azure tels que Blob Storage, Resource Manager, Service Bus et Azure Container Registry sont des sources d’événements intégrées, avec des rubriques système qui ne nécessitent aucune configuration supplémentaire.

# Create a custom Event Grid topic
az eventgrid topic create \
  --name MyEventTopic \
  --resource-group MyRG \
  --location eastus

# Create a subscription routing to an Azure Function
az eventgrid event-subscription create \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../providers/Microsoft.EventGrid/topics/MyEventTopic' \
  --endpoint '/subscriptions/.../providers/Microsoft.Web/sites/myFunctionApp/functions/EventHandler'

Schéma d’événement

Les événements publiés sur Event Grid suivent un schéma JSON standard comportant les champs obligatoires suivants : id (identifiant unique), eventType (par exemple Microsoft.Storage.BlobCreated), subject (chemin vers la ressource de l’événement), eventTime (horodatage ISO 8601), dataVersion et data (données spécifiques à l’événement). Event Grid prend également en charge le schéma CloudEvents (norme CNCF) afin d’assurer l’interopérabilité avec d’autres plateformes d’événements.

// Event Grid event payload (Event Grid schema)
[
  {
    'id': 'b781910b-3000-4f19-a4c2-b6b9c4ca7a12',
    'eventType': 'Microsoft.Storage.BlobCreated',
    'subject': '/blobServices/default/containers/uploads/blobs/photo.jpg',
    'eventTime': '2025-01-15T12:30:00.000Z',
    'data': {
      'api': 'PutBlockList',
      'url': 'https://mystorageacct.blob.core.windows.net/uploads/photo.jpg',
      'contentType': 'image/jpeg',
      'contentLength': 524288
    },
    'dataVersion': '',
    'metadataVersion': '1'
  }
]

Filtrage des événements

Les abonnements aux événements prennent en charge le filtrage afin de réduire le bruit à l’arrivée chez l’abonné. Vous pouvez filtrer selon le type d’événement (recevoir uniquement BlobCreated, et non BlobDeleted), selon le préfixe ou le suffixe de l’objet (uniquement les objets blob d’un conteneur donné), ou selon des filtres avancés appliqués à n’importe quel champ des données de l’événement à l’aide d’opérateurs tels que StringContains, NumberGreaterThan et BoolEquals. Le filtrage s’effectue côté serveur : les abonnés ne reçoivent donc que les événements correspondant à leurs critères.

# Subscribe to BlobCreated events for .jpg files only
az eventgrid event-subscription create \
  --name jpgImageSub \
  --source-resource-id '/subscriptions/.../storageAccounts/mystorageaccount' \
  --endpoint 'https://myfunction.azurewebsites.net/api/ProcessImage' \
  --included-event-types 'Microsoft.Storage.BlobCreated' \
  --subject-ends-with '.jpg'

Event Grid, Event Hubs ou Service Bus ?

Trois services Azure gèrent les événements et les messages : choisissez en fonction de votre scénario. Event Grid sert au routage réactif d’événements (faible volume, événements discrets et réactifs, par exemple une notification de modification d’une ressource). Event Hubs sert à la diffusion d’événements à haut débit (millions d’événements par seconde, télémétrie, chaînes de traitement des mégadonnées). Service Bus sert à la messagerie d’entreprise avec conservation de l’ordre, déduplication, mise en file d’attente des messages non distribuables et transactions (traitement des commandes, transactions financières).

// Decision guide:
// Event Grid  — 'Something happened, react to it'
//               Azure resource events, webhooks, low-latency fan-out
//               Price: per event (cheap for low volume)

// Event Hubs  — 'Capture a firehose of streaming data'
//               IoT telemetry, log aggregation, real-time analytics
//               Price: per throughput unit + capture

// Service Bus — 'Reliable message delivery between services'
//               Order processing, workflow steps, dead-letter queues
//               Price: per operation + messaging units

Publication d’événements personnalisés

Publiez des événements personnalisés sur une rubrique Event Grid à l’aide d’une simple requête HTTP POST utilisant la clé d’accès de la rubrique. Tout service ou toute application capable d’effectuer des requêtes HTTP peut publier des événements. Il devient ainsi très simple d’émettre des événements depuis des applications locales, des services tiers ou des services Azure qui ne prennent pas nativement en charge Event Grid. Regroupez jusqu’à 1 Mo d’événements par requête POST pour gagner en efficacité.

# Get the topic endpoint and key
TOPIC_ENDPOINT=$(az eventgrid topic show --name MyEventTopic --resource-group MyRG --query endpoint -o tsv)
TOPIC_KEY=$(az eventgrid topic key list --name MyEventTopic --resource-group MyRG --query key1 -o tsv)

# Publish a custom event
curl -X POST $TOPIC_ENDPOINT \
  -H 'Content-Type: application/json' \
  -H "aeg-sas-key: $TOPIC_KEY" \
  -d '[{
    "id": "event-001",
    "eventType": "Contoso.OrderPlaced",
    "subject": "/orders/ORD-12345",
    "eventTime": "2025-01-15T12:00:00Z",
    "data": { "orderId": "ORD-12345", "total": 99.99 },
    "dataVersion": "1.0"
  }]'

Stratégies de mise en quarantaine et de nouvelles tentatives

Si une tentative de distribution d’un événement échoue (l’abonné renvoie un code HTTP qui n’est pas 2xx), Event Grid effectue de nouvelles tentatives selon un délai exponentiel avec une variation aléatoire, pendant une durée maximale de 24 heures (configurable jusqu’à 72 heures), avec un maximum de 30 tentatives. Une fois toutes les tentatives épuisées, Event Grid peut placer les événements non distribués dans une file de mise en quarantaine d’un conteneur Azure Blob Storage afin de permettre leur examen manuel. Configurez cette fonctionnalité lorsque la distribution fiable des événements est essentielle et que vous devez auditer ou retraiter les événements ayant échoué.

# Configure dead-letter storage and retry for a subscription
az eventgrid event-subscription update \
  --name myFunctionSub \
  --source-resource-id '/subscriptions/.../topics/MyEventTopic' \
  --deadletter-endpoint '/subscriptions/.../storageAccounts/mystg/blobServices/default/containers/deadletter' \
  --max-delivery-attempts 30 \
  --event-ttl 1440  # 24 hours in minutes

Présentation d’Azure Event Hubs

Azure Event Hubs est une plateforme distribuée de diffusion de données capable de recevoir et de traiter des millions d’événements par seconde. Elle utilise un modèle de consommateurs partitionné : les événements sont répartis entre les partitions et chaque groupe de consommateurs lit les événements indépendamment, à son propre rythme. Plusieurs consommateurs peuvent ainsi traiter le même flux sans coordination. Parmi les cas d’utilisation courants figurent l’ingestion de données de télémétrie IoT, l’agrégation des journaux d’application, l’analyse des flux de clics et les chaînes de traitement des données pour les tableaux de bord en temps réel.

# Create an Event Hubs namespace and hub
az eventhubs namespace create \
  --name myEventHubNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az eventhubs eventhub create \
  --name telemetry \
  --namespace-name myEventHubNS \
  --resource-group MyRG \
  --partition-count 8 \
  --message-retention 3  # Days to retain events

Azure Service Bus pour une messagerie fiable

Azure Service Bus est un courtier de messagerie d’entreprise qui fournit des files d’attente (de point à point) et des rubriques avec abonnements (publication-abonnement). Contrairement à Event Grid (envoi sans accusé de suivi) et à Event Hubs (diffusion en continu), Service Bus garantit la distribution dans l’ordre (files FIFO), la détection des doublons, des files de mise en quarantaine pour les échecs de traitement, des sessions de messages pour le traitement groupé et des transactions — autant de fonctionnalités essentielles aux flux de traitement des opérations financières et des commandes.

# Create a Service Bus namespace and queue
az servicebus namespace create \
  --name myServiceBusNS \
  --resource-group MyRG \
  --location eastus \
  --sku Standard

az servicebus queue create \
  --name order-processing \
  --namespace-name myServiceBusNS \
  --resource-group MyRG \
  --enable-dead-lettering-on-message-expiration true \
  --max-delivery-count 10  # Move to dead-letter after 10 failed attempts

Modèle pratique piloté par les événements : traitement de fichiers

Voici un modèle Azure courant piloté par les événements : un utilisateur envoie un fichier vers Blob Storage, qui déclenche un événement BlobCreated vers Event Grid. Event Grid achemine l’événement vers une Azure Function qui traite le fichier (redimensionne une image, extrait du texte ou valide des données), puis écrit le résultat dans Azure SQL Database. Si le traitement échoue, l’événement est placé dans une file de mise en quarantaine d’un conteneur de stockage. Cette chaîne complète ne nécessite ni interrogation périodique ni ressources de calcul persistantes lorsqu’elle est inactive.

// Azure Function: process image on BlobCreated event
module.exports = async function (context, eventGridEvent) {
  const blobUrl = eventGridEvent.data.url;
  const blobName = eventGridEvent.subject.split('/blobs/').pop();

  context.log('Processing image:', blobName);

  // Process via Cognitive Services Vision API
  const tags = await analyzeImage(blobUrl);

  // Write metadata to Cosmos DB via output binding
  context.bindings.cosmosOutput = {
    id: blobName,
    tags,
    processedAt: new Date().toISOString()
  };

  context.log('Processing complete for:', blobName);
};

Vérification rapide

Vérifiez votre compréhension des concepts de Microsoft Azure Fundamentals (AZ-900) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris qu’Azure Event Grid achemine des événements discrets des éditeurs vers les abonnés au moyen d’une distribution push, avec filtrage et mise en quarantaine, vous avez distingué Event Grid (événements réactifs), Event Hubs (diffusion en continu) et Service Bus (messagerie d’entreprise fiable), et vous avez découvert comment créer des chaînes pilotées par les événements en reliant les événements de Blob Storage à Azure Functions via Event Grid. Nous allons maintenant découvrir les services Azure DevOps.

Gratuit pour commencer

Apprends Cloud & IT Cert Prep avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
150
Leçons
600

Questions Fréquemment Posées

La leçon « Event Grid et architecture pilotée par les événements » est-elle gratuite ?

Oui — le texte complet de « Event Grid et architecture pilotée 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 « Event Grid et architecture pilotée par les événements » ?

Acheminez les événements provenant de services Azure et d’éditeurs personnalisés avec Event Grid, distribuez-les à plusieurs abonnés et comparez Event Grid à Event Hubs et Service Bus. 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 « Event Grid et architecture pilotée 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

  1. Déclencheurs et liaisons Azure Functions
  2. Durable Functions pour les flux de travail avec état
  3. Azure Logic Apps
  4. Event Grid et architecture pilotée par les événements
← Retour à Cloud & IT Cert Prep