Einführung in Azure Event Grid

Azure Event Grid ist ein vollständig verwalteter Event-Routing-Service, der als Rückgrat für ereignisgesteuerte Architekturen in der Cloud fungiert. Er ermöglicht es verschiedenen Komponenten einer Anwendung - seien es Azure-Dienste, benutzerdefinierte Anwendungen oder Systeme von Drittanbietern -, asynchron durch Veröffentlichung und Abonnement von Ereignissen zu kommunizieren. Diese Entkopplung ermöglicht es Systemen, belastbarer, skalierbarer und reaktionsfähiger auf Änderungen in Echtzeit zu sein. Event Grid unterstützt hohen Durchsatz mit geringer Latenz und eignet sich somit für eine Vielzahl von Anwendungsfällen, von der Infrastrukturautomatisierung bis zur Anwendungsintegration.

In diesem Handbuch werden wir den gesamten Prozess der Einrichtung und Verwendung von Azure Event Grid durchgehen. Sie erfahren, wie Sie Themen erstellen, Abonnements konfigurieren, Ereignisse veröffentlichen und Best Practices für Zuverlässigkeit, Sicherheit und Überwachung implementieren. Am Ende haben Sie eine solide Grundlage für die Erstellung von ereignisgesteuerten Lösungen in Azure.

Verstehen von Event-Driven Architectures

Herkömmliche Request-Response-Architekturen schaffen oft eine enge Kopplung zwischen Diensten. Wenn ein Dienst andere über eine Änderung informieren muss, muss er wissen, wo sich jeder Empfänger befindet und wie er sie aufrufen soll. Dies führt zu komplexen Abhängigkeiten und spröden Integrationen. Ereignisgesteuerte Architekturen lösen dies durch die Einführung eines Vermittlers - des Ereignisbrokers -, der das Routing von Ereignissen von Produzenten zu Abonnenten verwaltet. Produzenten veröffentlichen Ereignisse zu einem Thema, ohne zu wissen, wer sie konsumieren wird, und Abonnenten registrieren Interesse an bestimmten Ereignissen, ohne zu wissen, wer sie produziert hat.

Azure Event Grid zeichnet sich in dieser Rolle aus, weil es für massive Skalierung und Zuverlässigkeit ausgelegt ist. Es unterstützt sowohl Systemereignisse (wie die Erstellung von Blob-Speichern oder Änderungen von Ressourcengruppen) als auch benutzerdefinierte Ereignisse aus Ihren eigenen Anwendungen. Der Dienst verarbeitet automatisch Wiederholungen, totes Beschreiben und Filtern, sodass Sie sich auf Geschäftslogik statt auf Infrastrukturinstallation konzentrieren können.

Schlüsselkonzepte von Azure Event Grid

Veranstaltungen

Ein Ereignis ist ein kleines Datenelement, das beschreibt, was passiert ist. Jedes Ereignis enthält ein Thema, einen Ereignistyp, eine Ereigniszeit und eine Datennutzlast. Beispielsweise könnte ein Speicherkontoerstellungsereignis das Thema und den Ereignistyp haben. Benutzerdefinierte Ereignisse folgen der gleichen Schemastruktur.

Themen

Ein Thema ist ein Endpunkt, an den Ereignisse gesendet werden. Es stellt einen Namensraum für Ereignisse einer bestimmten Kategorie bereit. Sie können Systemthemen für Azure-Ressourcen (wie ein Speicherkonto oder eine Ressourcengruppe) oder benutzerdefinierte Themen für Ihre eigenen Anwendungen erstellen. Themen sind regionale Ressourcen, daher müssen Sie während der Erstellung eine Region auswählen.

Ereignisunterzeichnungen

Abonnements definieren, welche Ereignisse ein Abonnent empfangen möchte und wie sie zugestellt werden sollen. Sie können Ereignisse nach Betreff, Ereignistyp oder Datenfeldern filtern. Abonnements geben auch den Endpunkttyp an - allgemeine Optionen sind Webhooks (HTTP-Endpunkte), Azure-Funktionen, Ereignis-Hubs, Servicebus-Warteschlangen oder -Themen und Azure Logic Apps. Jedes Abonnement kann seine eigene Retry-Richtlinie und ein Zielort mit toten Buchstaben haben.

Event Publishers

Jeder Dienst oder jede Anwendung, die Ereignisse an ein Event Grid-Thema sendet, ist ein Publisher. Publisher müssen nichts über Abonnenten wissen; sie posten einfach Ereignisse an den Themen-Endpunkt. Azure SDKs, REST API und CLI sind für die Veröffentlichung von Ereignissen verfügbar.

Veranstaltungsbetreuer

Der Event-Handler ist die Komponente, die das eingehende Ereignis verarbeitet. Azure Event Grid unterstützt mehrere Handlertypen: Webhooks, die auf HTTP POST reagieren, Azure-Funktionen, Automatisierungs-Runbooks, Logic Apps und mehr. Für Webhooks erfordert Event Grid einen Handshake, um den Endpunkt zu validieren, bevor Ereignisse geliefert werden.

Schritt-für-Schritt-Einrichtung von Azure Event Grid

Gehen wir die praktischen Schritte zum Einrichten von Azure Event Grid durch, von der Erstellung eines Themas bis hin zum Abonnieren und Veröffentlichen von Ereignissen.

1. Erstellen Sie ein Event Grid Thema

Navigieren Sie zum Azure-Portal (portal.azure.com) und suchen Sie nach „Event Grid. Klicken Sie auf Create und wählen Sie Topic aus den Optionen.

  • Subscription: Das Azure-Abonnement, unter dem das Thema erstellt wird.
  • Ressourcengruppe: Verwenden Sie entweder eine bestehende Gruppe oder erstellen Sie eine neue, um Ressourcen zu organisieren.
  • Name: Ein weltweit eindeutiger Name für das Thema. Dieser wird Teil der Endpunkt-URL.
  • Region: Wählen Sie eine Azure-Region in der Nähe Ihrer Dienste aus.

Optional können Sie systemzugeordnete verwaltete Identität aktivieren oder Tags für die Governance hinzufügen. Klicken Sie nach der Validierung auf Create. Die Bereitstellung dauert ein oder zwei Minuten. Sobald Sie fertig sind, sehen Sie die URL des Themasendpunkts und einen Zugriffsschlüssel oder ein SAS-Token im Abschnitt “Schlüssel” des Themas.

2. Erstellen eines Event-Abonnements

Wenn Sie das Thema erstellen, benötigen Sie mindestens ein Abonnement, um Veranstaltungen zu empfangen. Klicken Sie auf der Übersichtsseite des Themas auf + Ereignis-Abonnement

  • Name: Ein beschreibender Name für das Abonnement.
  • Event Schema: Wählen Sie zwischen Event Grid Schema oder CloudEvents v1.0 Schema. CloudEvents wird zum Industriestandard für Interoperabilität.
  • Endpunkttyp: Wählen Sie den Handlertyp. Wählen Sie zum Testen Webhook und geben Sie die URL Ihres Endpunkts an. Für die Produktion können Sie eine Azure-Funktion oder eine Logic-App verwenden.
  • Filter: Sie können die Filterung von Ereignistypen, Betreff beginnt/endet mit oder erweiterten Filtern (z. B. Datenfeldern) aktivieren, wodurch unerwünschte Ereignisse, die Ihren Handler erreichen, reduziert werden.
  • Retry Policy: Legen Sie die maximale Anzahl von Zustellversuchen und die Zeit bis zum Eintreffen für Ereignisse fest.
  • Dead-Lettering: Geben Sie einen Speicherblob-Container an, an den nach anstrengenden Wiederholungen nicht lieferbare Ereignisse gesendet werden.

Klicken Sie auf Create. Wenn Sie einen Webhook-Endpunkt ausgewählt haben, sendet das Ereignis-Gitter eine Validierungsanforderung. Ihr Endpunkt muss mit einem Validierungscode antworten (häufig Teil des Handshake-Prozesses), um die Eigentümerschaft zu bestätigen.

3. Veröffentlichungsveranstaltungen

Um Events zu veröffentlichen, benötigen Sie die Themen-Endpunkt-URL und einen Zugriffsschlüssel oder SAS-Token. Die Ereignis-Nutzlast muss dem Ereignis-Grid-Schema folgen.

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...

Sie können auch REST API, PowerShell oder SDKs (C#, Python, Java, Node.js) verwenden.Für serverlose Umgebungen können Azure Functions Ereignisse über eine Output-Bindung veröffentlichen.

4. Umgang mit Ereignissen mit Azure-Funktionen

Eines der häufigsten Muster ist die Verwendung einer Azure-Funktion als Ereignis-Handler. Erstellen Sie eine neue Azure-Funktions-App und fügen Sie einen Ereignis-Grid-Trigger hinzu. Die Funktion erhält Ereignisse als JSON. Hier ist ein einfaches C#-Beispiel:

[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
}

Die Funktion Runtime validiert den Webhook-Handshake automatisch, wenn Sie die Triggerbindung des Event Grid verwenden. Dieser Ansatz bietet Ihnen einen skalierbaren, serverlosen Ereignisprozessor.

Fortgeschrittene Szenarien und Muster

Neben der Grundeinstellung unterstützt Azure Event Grid anspruchsvolle Architekturen.

Filterung und Routing

Wenn Sie Ereignisse basierend auf Datenwerten weiterleiten, können Sie beispielsweise ein Thema haben, das Ereignisse aus mehreren Abteilungen empfängt. Sie können separate Abonnements für „HR“-Ereignisse (Filter auf ) und „IT“-Ereignisse erstellen. Dadurch wird sichergestellt, dass jeder Handler nur relevante Ereignisse verarbeitet, wodurch die Belastung reduziert und die Logik vereinfacht wird.

Event Grid Domains

Wenn Sie viele Themen für verschiedene Mandanten oder Anwendungen verwalten müssen, bieten Event Grid Domains einen hierarchischen Namespace. Jede Domain kann mehrere Themen enthalten, und Sie können Richtlinien, Authentifizierung und Überwachung auf Domainebene anwenden. Dies ist ideal für SaaS-Anbieter, die Event-Services für mehrere Kunden anbieten.

Hybrid- und Multi-Cloud-Integration

Event Grid kann mit externen Systemen über Webhooks verbunden werden. Sie können Ereignisse über Hybridverbindungen an lokale Systeme senden oder an andere Cloud-Anbieter mit öffentlichen HTTP-Endpunkten. Aus Sicherheitsgründen verwenden Sie verwaltete Identitäten und SAS-Token, um ausgehende Anrufe zu authentifizieren. Ziehen Sie auch die Verwendung von Azure Arc in Betracht, um lokale Ressourcen mit Event Grid zu verwalten.

Integration mit Azure Logic Apps

Logic Apps können Event Grid Events als Auslöser nutzen und Low-Code Workflows ermöglichen. Wenn beispielsweise ein neuer Blob im Storage erstellt wird, kann eine Logic App ihn automatisch an einen anderen Ort kopieren, eine E-Mail senden oder eine Datenbank aktualisieren. Der Visual Designer macht es einfach, komplexe Orchestrierungen zu erstellen, ohne Code zu schreiben.

Best Practices für Produktions-Deployments

Um sicherzustellen, dass Ihre Event Grid-Lösung zuverlässig, sicher und kostengünstig ist, befolgen Sie diese bewährten Verfahren:

  • Immer Dead-lettering aktivieren. Ohne diese Option werden nicht zugestellte Ereignisse nach Wiederholungen stillschweigend fallen gelassen. Ein Zielort für tote Briefe (Blob-Speicherung) hilft Ihnen, Lieferausfälle zu diagnostizieren und bei Bedarf Ereignisse aufzubereiten.
  • Verwenden Sie verwaltete Identitäten für die Authentifizierung. Aktivieren Sie anstelle des Speicherns von Schlüsseln die verwaltete Identität auf Ihrem Publisher (z. B. eine Azure-Funktion) und erteilen Sie ihm die Berechtigung zum Veröffentlichen für das Thema.
  • Leverage-Filterung auf Subscription-Ebene Dies reduziert die Anzahl der Aufrufe auf Ihren Handlern, spart Kosten und verbessert die Leistung. Verwenden Sie fortschrittliche Filter für eine feinkörnige Steuerung.
  • Design idempotente Handler. Da Event Grid mindestens einmal Lieferung garantiert, kann Ihr Handler das gleiche Ereignis mehrmals erhalten. Stellen Sie sicher, dass Ihre Verarbeitungslogik Duplikate anmutig verarbeiten kann (z. B. durch Überprüfen einer eindeutigen Ereignis-ID oder durch Verwenden eines Deduplizierungsspeichers).
  • Monitor mit Azure Monitor. Verfolgen von Metriken wie Liefererfolgsrate, fallengelassene Ereignisse, Latenz und totgeschriebene Anzahl. Warnmeldungen für Anomalien einrichten. Verwenden Sie Diagnoseeinstellungen, um Protokolle an Log Analytics für eine tiefere Analyse zu senden.
  • Plan für die Wiederherstellung von Geokatastrophen Themen sind regional. Wenn Sie globale Widerstandsfähigkeit benötigen, stellen Sie Themen in mehreren Regionen bereit und verwenden Sie einen benutzerdefinierten Routing-Mechanismus. Verwenden Sie die Partnerveranstaltungen von Azure Event Grid oder die regionenübergreifende Replikation für kritische Szenarien.
  • Ereignisse werden klein gehalten.Ereignisse werden als HTTP-POST-Bodys geliefert. Große Nutzlasten erhöhen Latenz und Kosten. Fügen Sie nur eine Referenz-URL oder ID in das Ereignis ein und lassen Sie den Handler zusätzliche Daten aus einem Repository abrufen.

Sicherheitsüberlegungen

Sicherheit in ereignisgesteuerten Systemen hat mehrere Schichten:

  • Authentisierung für Publisher: Verwenden Sie SAS-Schlüssel, verwaltete Identitäten oder Azure AD-Authentifizierung, um den Themenendpunkt zu sichern. Vermeiden Sie das Einbetten von Schlüsseln in Code; verwenden Sie Schlüssel-Tresor- oder Dienst-Hauptanmeldeinformationen.
  • Endpunktvalidierung für Abonnenten: Bei der Verwendung von Webhooks sendet Event Grid einen Validierungs-Handshake, um zu bestätigen, dass der Abonnent den Endpunkt kontrolliert. Ihr Webhook muss angemessen reagieren, um eine nicht autorisierte Ereignisweiterleitung zu vermeiden.
  • Netzwerksicherheit: Verwenden Sie private Endpunkte, um über ein VNet auf das Event Grid zuzugreifen. Dadurch wird sichergestellt, dass der Datenverkehr niemals das öffentliche Internet durchquert.
  • Datenverschlüsselung: Ereignisse werden in Ruhe und auf der Durchreise verschlüsselt (TLS 1.2+).

Kostenmanagement

Die Preisgestaltung für Azure Event Grid basiert auf der Anzahl der Operationen (veröffentlichte Ereignisse und Lieferversuche) und der Anzahl der Themen-/Abonnementressourcen.

  • Kombinieren Sie mehrere Ereignistypen zu einem einzigen Thema und filtern Sie auf Abonnementebene, wodurch die Anzahl der benötigten Themen reduziert wird.
  • Verwenden Sie die Ereignisfilterung aggressiv, um unnötige Lieferungen zu vermeiden. Jede Lieferung zählt als Operation.
  • Nutzen Sie Event Grid-Domains für Multi-Tenant-Szenarien - sie teilen sich die Infrastruktur und können billiger sein als separate Themen.
  • Die Standard-Retries (30 Tage) können zu lang sein; passen Sie die Time-to-Live- und Max-Retries basierend auf Ihrem SLA an.

Überwachen Sie Ihre Nutzung über Azure Cost Management und legen Sie Budgets oder Warnmeldungen fest, um unerwartete Rechnungen zu vermeiden.

Überwachung und Fehlerbehebung

Azure Monitor bietet umfassende Metriken für das Ereignisraster.

  • Erfolgsveröffentlichung: Anzahl der erfolgreich veröffentlichten Veranstaltungen.
  • Veröffentlichen fehlgeschlagen: Ereignisse, die nicht veröffentlicht werden konnten (z. B. Authentifizierungsfehler).
  • Lieferung erfolgreich: Ereignisse, die erfolgreich an Abonnenten geliefert wurden.
  • Delivery Failed: Events that could not be delivered (z.B. Endpoint not reachable).
  • Dead Lettered: Ereignisse, die Wiederholungsversuche erschöpft haben.

Sie können auch Diagnoseprotokolle für das Thema und das Abonnement aktivieren. Protokolle erfassen Details zu jedem Veröffentlichungs- und Bereitstellungsvorgang, einschließlich Fehlercodes und Latenz, und verwenden Log Analytics-Abfragen, um Fehler mit bestimmten Ereignistypen zu korrelieren.

Gemeinsame Schritte zur Fehlerbehebung:

  • Wenn Ereignisse Ihren Handler nicht erreichen, überprüfen Sie den Zustand des Abonnement-Endpunkts. Verwenden Sie die Funktion "Test" im Portal, um ein Beispielereignis zu senden.
  • Wenn die Validierung für einen Webhook fehlschlägt, stellen Sie sicher, dass Ihr Endpunkt HTTP 200 mit dem Validierungscode zurückgibt.
  • Wenn Ereignisse tot beschriftet werden, überprüfen Sie den tot-Blob-Container auf die ursprünglichen Ereignis-Nutzlast- und Fehlerdetails.

Integration mit anderen Azure Services

Azure Event Grid funktioniert nativ mit vielen Azure-Diensten.

  • Azure Blob Storage: Sendet automatisch Ereignisse, wenn Blobs erstellt, gelöscht oder aktualisiert werden.
  • Azure DevOps: Reagieren Sie, um Vervollständigungen zu erstellen, Anforderungsereignisse zu ziehen und mehr, um CI/CD zu automatisieren.
  • Azure Machine Learning: Trigger-Umschulungen oder Bereitstellungs-Pipelines, wenn neue Daten ankommen.
  • Azure IoT Hub: Route Device Telemetry und Lifecycle Events zur Downstream-Verarbeitung.
  • Azure Kubernetes Service (AKS): Verwenden Sie Event Grid, um AKS-Ereignisse für Cluster-Autoskalierung oder Anwendungsbereitstellung zu sehen.

Die Macht von Event Grid liegt in seiner Fähigkeit, diese unterschiedlichen Dienste mit minimalem Code zu verbinden.

Real-World-Beispiel: Serverless Order Processing

Stellen Sie sich eine E-Commerce-Plattform vor, die Bestellungen verarbeitet. Wenn ein Kunde eine Bestellung aufgibt, veröffentlicht die Web-App ein Ereignis zu einem Event Grid-Thema: mit Daten wie Bestell-ID, Kundeninformationen und Artikeln. Drei Abonnements sind konfiguriert:

  1. Inventardienst (Azure-Funktion): Reserven Bestand und Aktualisierungen der Bestandsdatenbank.
  2. Zahlungsdienst (Logic App): Verarbeitet die Zahlung über ein Gateway eines Drittanbieters.
  3. Notification Service (Webhook an SendGrid): Sendet dem Kunden eine Bestätigungs-E-Mail.

Jedes Abonnement filtert nach Ereignisart und Betreff, so dass es nur relevante Ereignisse erhält. Wenn der Zahlungsdienst ausfällt, werden Wiederholungen versucht; nach Erschöpfung wird das Ereignis für manuelle Eingriffe totgeschrieben. Das gesamte System ist entkoppelt: Die Web-App muss nichts über die nachgelagerten Dienste wissen. Neue Dienste können später hinzugefügt werden, indem einfach ein neues Abonnement erstellt wird.

Einschränkungen und Alternativen

Während Azure Event Grid leistungsstark ist, hat es einige Einschränkungen:

  • Ereignisgrößenlimit: Maximale Ereignisgröße ist 1 MB (einschließlich Header).
  • Throughput: Obwohl hoch, gibt es pro Thema Grenzen.Für extrem hohen Durchsatz (Millionen von Ereignissen pro Sekunde), betrachten Sie Azure Event Hubs für Ereignisaufnahme und Event Grid für Routing spezifische Ereignisse.
  • Ordering: Event Grid garantiert keine ordnetische Bestellung; Events können aus der Reihenfolge geraten.
  • Mindestens einmal Lieferung: Doppelte Lieferung ist möglich.

Wählen Sie Azure Event Grid, wenn Sie einen einfachen, serverlosen Event-Router mit Pub/Sub-Semantik benötigen.

Schlussfolgerung

Azure Event Grid ist ein grundlegender Service für die Erstellung moderner ereignisgesteuerter Anwendungen in der Cloud. Durch die Entkopplung von Produzenten von Verbrauchern ermöglicht es Architekturen, die skalierbar, belastbar und einfach zu erweitern sind. Die Einrichtung beinhaltet die Erstellung eines Themas, eines oder mehrerer Abonnements und eines Handlers, um Ereignisse zu verarbeiten. Best Practices wie Dead-lettering, Filtern, idempotente Handler und Monitoring gewährleisten die Produktionsbereitschaft.

Ob Sie Infrastruktur automatisieren, Microservices verbinden oder ein Echtzeit-Benachrichtigungssystem aufbauen, Event Grid bietet eine robuste, kostengünstige Ereignis-Routing-Ebene. Beginnen Sie klein, nehmen Sie die ereignisgesteuerte Denkweise an und erweitern Sie schrittweise Ihre nachrichtenbasierten Workflows. Die Flexibilität und Integration in das größere Azure-Ökosystem macht Event Grid zu einer Wahl für Entwickler und Architekten gleichermaßen.

Für weitere Informationen lesen Sie die offizielle Dokumentation des Azuren-Ereignisgitters und die Referenz des Ereignisschemas.