Introduction à Azure Event Grid

Azure Event Grid est un service de routage d'événements entièrement géré qui sert de base aux architectures d'événements dans le cloud. Il permet à différents composants d'une application, qu'il s'agisse de services Azure, d'applications personnalisées ou de systèmes tiers, de communiquer asynchronement en publiant et en souscrivant à des événements. Ce découplage permet aux systèmes d'être plus résistants, évolutifs et sensibles aux changements en temps réel. Event Grid supporte un débit élevé avec une faible latence, ce qui le rend adapté à une large gamme de cas d'utilisation, de l'automatisation de l'infrastructure à l'intégration d'applications.

Dans ce guide, nous allons passer par le processus complet de configuration et d'utilisation de Azure Event Grid. Vous apprendrez à créer des sujets, configurer des abonnements, publier des événements et mettre en œuvre les meilleures pratiques pour la fiabilité, la sécurité et le suivi.

Comprendre les architectures animées par des événements

Les architectures de demande-réponse traditionnelles créent souvent un couplage étroit entre les services. Lorsqu'un service doit aviser les autres d'un changement, il doit savoir où se trouve chaque récepteur et comment l'appeler. Cela conduit à des dépendances complexes et des intégrations fragiles. Les architectures axées sur les événements résolvent cela en introduisant un intermédiaire – le courtier en événements – qui gère le routage des événements des producteurs aux abonnés.

Azure Event Grid excelle dans ce rôle car il est conçu pour une échelle et une fiabilité massives. Il prend en charge les événements système (comme la création de stockage blob ou les changements de groupe de ressources) et les événements personnalisés de vos propres applications. Le service gère automatiquement les requêtes, la lettre morte et le filtrage, de sorte que vous pouvez vous concentrer sur la logique d'affaires plutôt que la plomberie d'infrastructure.

Concepts clés de Azure Event Grid

Événements

Un événement est un petit élément de données qui décrit ce qui s'est passé. Chaque événement contient un sujet, un type d'événement, un temps d'événement et une charge utile de données. Par exemple, un événement de création de compte de stockage peut avoir le sujet et le type d'événement . Les événements personnalisés suivent la même structure de schéma.

Thèmes

Un sujet est un point d'arrivée où les événements sont envoyés. Il fournit un espace de noms pour les événements d'une certaine catégorie. Vous pouvez créer des sujets système pour les ressources Azure (comme un compte de stockage ou un groupe de ressources) ou des sujets personnalisés pour vos propres applications.

Abonnements événementiels

Les abonnements définissent les événements qu'un abonné souhaite recevoir et la façon dont ils doivent être livrés. Vous pouvez filtrer les événements en fonction des champs sujets, types d'événements ou données. Les abonnements spécifient également le type de paramètre – les options communes incluent les webhooks (points de fin de session HTTP), les fonctions Azure, les Hubs d'événements, les files d'attente ou les sujets de bus de service, et les applications logiques Azure.

Éditeurs d'événements

Tout service ou application qui envoie des événements à un sujet Event Grid est un éditeur. Les éditeurs n'ont pas besoin de connaître les abonnés; ils postent simplement les événements au point de départ du sujet. Azure SDKs, REST API et CLI sont disponibles pour publier des événements.

Gestionnaires d'événements

Azure Event Grid prend en charge plusieurs types de gestionnaires : webhooks qui répondent à HTTP POST, Azure Functions, Automation runbooks, Logic Apps, etc. Pour les webhooks, Event Grid nécessite une poignée de main pour valider le paramètre avant la livraison des événements.

Configuration étape par étape de la grille d'événements Azure

Laissez passer les étapes pratiques pour mettre en place Azure Event Grid, de la création d'un sujet à l'abonnement et la publication d'événements.

1. Créer un thème de grille d'événements

Naviguez sur le portail Azure (portal.azure.com) et recherchez -Event Grid.-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Abonnement[ : L'abonnement Azure sous lequel le sujet sera créé.
  • Groupe de ressources[ : Utilisez un groupe existant ou créez un nouveau groupe pour organiser les ressources.
  • Nom : Un nom unique au monde pour le sujet. Cela devient une partie de l'URL du paramètre.
  • Région: Sélectionnez une région d'azur proche de vos services.

En option, vous pouvez activer l'identité gérée assignée par le système ou ajouter des balises pour la gouvernance. Après validation, cliquez sur Créer. Le déploiement prend une minute ou deux. Une fois prêt, vous verrez l'URL du point d'entrée du sujet et une clé d'accès ou un jeton SAS dans la section Sujet -Keys.

2. Créer un abonnement à l'événement

Avec le sujet créé, vous avez besoin d'au moins un abonnement pour recevoir des événements. Dans la page de vue d'ensemble du sujet, cliquez sur + Abonnement à l'événement.

  • Nom: Nom descriptif de l'abonnement.
  • Event Schema : Choisissez entre le schéma Event Grid ou le schéma CloudEvents v1.0. CloudEvents devient la norme industrielle pour l'interopérabilité.
  • Type de point: Sélectionnez le type de gestionnaire. Pour les tests, choisissez Webhook et fournissez l'URL de votre point d'arrêt. Pour la production, vous pouvez utiliser une fonction Azure ou une application logique.
  • Filtres: Vous pouvez activer le filtrage sur les types d'événements, les sujets commencent/finent avec, ou les filtres avancés (p. ex., les champs de données).
  • Politique de réessayer: Définissez le nombre maximal de tentatives de livraison et le délai de vie pour les événements. Par défaut, 30 jours et 4 rétries.
  • Lettre de retard[: Spécifiez un conteneur blob de stockage où des événements non livrables sont envoyés après des relevés d'échappement. Ceci est essentiel pour le débogage et la fiabilité.

Cliquez sur Créer. Si vous avez choisi un paramètre webhook, Event Grid enverra une demande de validation. Votre paramètre doit répondre avec un code de validation (souvent partie du processus de poignée de main) pour confirmer la propriété. Une fois validé, les événements se dérouleront.

3. Événement d ' édition

Pour publier des événements, vous avez besoin de l'URL du point d'entrée du sujet et d'une clé d'accès ou d'un jeton SAS. La charge utile de l'événement doit suivre le schéma Event Grid[.

az eventgrid event submit \
 --endpoint https://your-topic.westus-1.eventgrid.azure.net/api/events \
 --subject "custom/test" \
 --event-type "MyApp.NewRecord" \
 --data '{"id":123,"name":"test"}' \
 --key aabbccdd...

Vous pouvez également utiliser l'API REST, PowerShell ou SDKs (C#, Python, Java, Node.js). Pour les environnements sans serveur, Azure Functions peut publier des événements via une liaison de sortie.

4. Manipulation des événements avec fonctions Azure

L'un des modèles les plus courants est d'utiliser une fonction Azure comme gestionnaire d'événements. Créez une nouvelle application Azure Function et ajoutez un déclencheur Event Grid. La fonction recevra des événements sous JSON. Voici un exemple simple de C#:

[FunctionName("ProcessEvent")]
public static void Run([EventGridTrigger] EventGridEvent eventGridEvent, ILogger log)
{
 log.LogInformation($"Received event: {eventGridEvent.EventType} with subject {eventGridEvent.Subject}");
 // Process the event data
}

L'exécution de la fonction valide automatiquement la poignée de main webhook si vous utilisez la liaison de déclenchement Event Grid. Cette approche vous donne un processeur d'événement évolutif et sans serveur.

Scénarios et modèles avancés

Au-delà de la configuration de base, Azure Event Grid prend en charge des architectures sophistiquées. Voici plusieurs cas d'utilisation avancés:

Filtrage et routage

Utilisez le filtrage avancé pour orienter les événements en fonction des valeurs de données. Par exemple, vous pouvez avoir un sujet qui reçoit des événements de plusieurs départements. Vous pouvez créer des abonnements séparés pour les événements --HR-- (filtre sur ) et les événements --IT---.

Domaines de la grille d'événements

Lorsque vous devez gérer de nombreux sujets pour différents locataires ou applications, Event Grid Domains fournit un espace de noms hiérarchique. Chaque domaine peut contenir plusieurs sujets, et vous pouvez appliquer des politiques, authentification et surveillance au niveau du domaine. Ceci est idéal pour les fournisseurs SaaS qui offrent des services d'événements à plusieurs clients.

Intégration hybride et multi-cloud

Event Grid peut se connecter à des systèmes externes en utilisant des webhooks. Vous pouvez envoyer des événements à des systèmes sur site via des connexions hybrides, ou à d'autres fournisseurs de cloud en utilisant des paramètres HTTP publics. Pour la sécurité, utilisez des identités gérées et des jetons SAS pour authentifier les appels sortants.

Intégration avec les applications logiques Azure

Les applications logiques peuvent consommer des événements Event Grid comme déclencheur, permettant des flux de travail à faible code. Par exemple, lorsqu'un nouveau blob est créé dans le stockage, une application logique peut automatiquement le copier à un autre endroit, envoyer un courriel ou mettre à jour une base de données.

Meilleures pratiques pour les déploiements de production

Pour vous assurer que votre solution Event Grid est fiable, sécurisée et rentable, suivez ces meilleures pratiques :

  • Activez toujours la lettre morte[.Sans cela, les événements non livrés sont silencieusement abandonnés après les relevés. Une destination de lettre morte (stockage de blob) vous aide à diagnostiquer les échecs de livraison et à reproduire les événements si nécessaire.
  • Utilisez des identités gérées pour l'authentification. Au lieu de stocker des clés, activez l'identité gérée sur votre éditeur (p. ex., une fonction Azure) et donnez-lui la permission de publier au sujet.
  • Le filtrage de levier au niveau de l'abonnement.Cela réduit le nombre d'invocations sur vos gestionnaires, économise les coûts et améliore les performances.
  • Design idempotent handlers. Parce que Event Grid garantit au moins une fois la livraison, votre gestionnaire peut recevoir le même événement plusieurs fois. Assurez-vous que votre logique de traitement peut gérer les duplicatas gracieusement (par exemple, en vérifiant un identifiant d'événement unique ou en utilisant un magasin de duplication).
  • Monitor with Azure Monitor. Suivez les mesures comme le taux de réussite de livraison, les événements tombés, la latence et le nombre de lettres mortes. Configurez des alertes pour les anomalies. Utilisez les paramètres de diagnostic pour envoyer des journaux à Log Analytics pour une analyse plus approfondie.
  • Plan pour la récupération des géo-catastrophes.Les sujets sont régionaux. Si vous avez besoin de résilience mondiale, déployez des sujets dans plusieurs régions et utilisez un mécanisme de routage personnalisé.
  • Garder les charges utiles d'événements petites. Les événements sont livrés sous forme de corps HTTP POST. Les charges utiles importantes augmentent la latence et le coût. Inclure seulement une URL ou un ID de référence dans l'événement, et laisser le gestionnaire récupérer des données supplémentaires dans un dépôt.

Considérations en matière de sécurité

La sécurité dans les systèmes à réaction comporte plusieurs couches:

  • Authentification pour les éditeurs: Utilisez les clés SAS, les identités gérées ou l'authentification AD Azure pour sécuriser le paramètre thématique. Évitez d'intégrer les clés dans le code; utilisez les clés voûtées ou les identifiants principaux de service.
  • Validation d'extrémité pour les abonnés: Lors de l'utilisation de webhooks, Event Grid envoie une poignée de main de validation pour confirmer que l'abonné contrôle le paramètre. Votre webhook doit répondre de manière appropriée pour éviter le transfert d'événements non autorisés.
  • Sécurité du réseau: Utilisez des paramètres privés pour accéder à Event Grid sur un VNet. Cela garantit que le trafic ne traverse jamais l'internet public. Pour les scénarios hybrides, utilisez Azure VPN ou ExpressRoute.
  • Cryptage des données[: Les événements sont chiffrés au repos et en transit (TLS 1.2+). Vous pouvez également apporter votre propre clé (BYOK) pour un contrôle supplémentaire des clés de chiffrement.

Gestion des coûts

Le prix Azure Event Grid est basé sur le nombre d'opérations (événements publiés et tentatives de livraison) et le nombre de ressources de sujet/abonnement.

  • Combiner plusieurs types d'événements en un seul sujet et filtrer au niveau de l'abonnement, ce qui réduit le nombre de sujets nécessaires.
  • Utilisez le filtrage agressif d'événements pour éviter les livraisons inutiles. Chaque livraison compte comme une opération.
  • Tirer parti des domaines de la grille d'événements pour les scénarios multi-locataires – ils partagent l'infrastructure et peuvent être moins chers que des sujets séparés.
  • Définir les politiques de ré-essai appropriées. Les rétries par défaut (30 jours) peuvent être trop longues ; ajuster les rétries time-to-live et max en fonction de votre SLA.

Surveillez votre utilisation via Azure Cost Management et fixez des budgets ou des alertes pour éviter les factures inattendues.

Surveillance et dépannage

Azure Monitor fournit des mesures complètes pour la grille d'événements. Les principales mesures comprennent:

  • Publier Succeeded: Nombre d'événements publiés avec succès.
  • Échec de publication[: Événements qui ne pouvaient pas être publiés (p. ex., erreurs d'authentification).
  • Livraison Succèded[: Événements avec succès livrés aux abonnés.
  • Défaillance de la livraison[: Événements qui n'ont pas pu être livrés (p. ex., le point final n'est pas réalisable).
  • Décès en lettres : Événements qui ont épuisé les tentatives de réessayer.

Vous pouvez également activer les journaux de diagnostic pour le sujet et l'abonnement. Les journaux capturent les détails de chaque opération de publication et de livraison, y compris les codes d'erreur et la latence.

Étapes communes de dépannage:

  • Si les événements n'atteignent pas votre gestionnaire, vérifiez la santé du paramètre d'abonnement. Utilisez la capacité -test-- dans le portail pour envoyer un exemple d'événement.
  • Si la validation échoue pour un webhook, assurez-vous que votre point de départ renvoie HTTP 200 avec le code de validation. Pour les fonctions Azure, la liaison s'en charge automatiquement.
  • Si les événements sont lettre morte, inspecter le conteneur blob lettre morte pour connaître la charge utile et les détails d'erreur de l'événement original.

Intégration avec d'autres services Azure

Azure Event Grid fonctionne nativement avec de nombreux services Azure. Voici quelques intégrations communes:

  • Stockage de blob d'Azur: Envoi automatique des événements lorsque des blobs sont créés, supprimés ou mis à jour. Utile pour déclencher des pipelines de traitement.
  • Azure DevOps: Réagissez pour construire des finitions, tirer des événements de demande, et plus pour automatiser CI/CD.
  • : Recyclage des postes ou des pipelines de déploiement à l'arrivée de nouvelles données.
  • Azure IoT Hub: Télémétrie des appareils de route et événements du cycle de vie jusqu'au traitement en aval.
  • Service Azure Kubernetes (AKS)[: Utilisez Event Grid pour regarder les événements AKS pour l'escalade automatique ou le déploiement d'applications.

La puissance de Event Grid réside dans sa capacité à connecter ces services disparates avec un code minimal.

Exemple du monde réel : Traitement des commandes sans serveur

Imaginez une plateforme de commerce électronique qui traite les commandes. Lorsqu'un client passe une commande, l'application web publie un événement sur un thème de Grille d'Evénement : avec des données comme l'ID de commande, l'information client et des éléments.

  1. Service d'inventaire (fonction Azure): Réserves stock et mise à jour de la base de données d'inventaire.
  2. Service de paiement (Application logique) : traite le paiement par une passerelle tierce.
  3. (Webhook à SendGrid): envoie un courriel de confirmation au client.

Chaque abonnement filtre par type d'événement et par sujet, de sorte qu'ils ne reçoivent que les événements pertinents. Si le service de paiement échoue, les demandes de paiement sont tentées; après épuisement, l'événement est lettre morte pour intervention manuelle. Le système entier est découplé: l'application web n'a pas besoin de connaître les services en aval. De nouveaux services peuvent être ajoutés plus tard en créant simplement un nouvel abonnement.

Limitations et solutions de rechange

Bien que Azure Event Grid soit puissant, il a quelques contraintes :

  • Limite de taille des événements: La taille maximale des événements est de 1 Mo (y compris les en-têtes).
  • Tirage[: Bien qu'il y ait des limites de taux par sujet, il y a des limites de débit par sujet. Pour un débit extrêmement élevé (des millions d'événements par seconde), considérez Azure Event Hubs pour l'ingestion d'événements et Event Grid pour le routage d'événements spécifiques.
  • Ordre: Event Grid ne garantit pas la commande par sujet; les événements peuvent arriver hors de la commande. Si la commande est critique, utilisez Event Hubs ou Service Bus.
  • Une fois la livraison au moins: La livraison en double est possible. Les gestionnaires doivent être idémpotents.

Choisissez Azure Event Grid lorsque vous avez besoin d'un routeur d'événements simple et sans serveur avec sémantique pub/sous-. Pour la diffusion d'événements ou la livraison commandée, combinez-le avec d'autres services de messagerie Azure.

Conclusion

Azure Event Grid est un service fondamental pour la construction d'applications modernes axées sur les événements dans le cloud. En découplant les producteurs des consommateurs, il permet des architectures évolutives, résilientes et faciles à étendre. La configuration implique la création d'un sujet, un ou plusieurs abonnements, et un gestionnaire pour traiter les événements.

Que vous automatisez l'infrastructure, que vous connectiez les microservices ou que vous construisiez un système de notification en temps réel, Event Grid fournit une couche robuste et rentable de routage des événements. Commencez petit, embrassez l'esprit d'événement, et progressivement élargissez vos workflows basés sur les messages. La flexibilité et l'intégration avec l'écosystème Azure plus grand font Event Grid un choix aller-à-pour les développeurs et les architectes.

Pour plus de détails, explorez la documentation officielle Azure Event Grid et la référence de schéma event .