Teilen über


Schnellstart: Weiterleiten von benutzerdefinierten Ereignissen an eine Azure-Funktion mit Event Grid

Azure Event Grid ist ein Ereignisroutingdienst für die Cloud. Azure Functions ist einer der unterstützten Ereignishandler.

In diesem Schnellstart erstellen Sie über das Azure-Portal ein benutzerdefiniertes Thema, abonnieren dieses benutzerdefinierte Thema und lösen das Ereignis zum Anzeigen des Ergebnisses aus. Sie senden die Ereignisse an eine Azure-Funktion.

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Erstellen einer Funktion mit einem Event Grid-Trigger mit Visual Studio Code

In diesem Abschnitt verwenden Sie Visual Studio Code zum Erstellen einer Funktion mit einem Event Grid-Trigger.

Voraussetzungen

Erstellen einer Funktion

  1. Öffnen Sie Visual Studio Code.

  2. Wählen Sie auf der linken Leiste Azure aus.

  3. Wählen Sie im linken Bereich im Abschnitt ARBEITSBEREICH die Schaltfläche Azure Functions auf der Befehlsleiste aus, und wählen Sie dann Funktion erstellen aus.

    Screenshot der Registerkarte „Azure“ von Visual Studio Code mit dem Menübefehl zum Erstellen einer Funktion.

  4. Wählen Sie einen Ordner aus, in dem Sie den Funktionscode speichern möchten.

  5. Wählen Sie für den Befehl Neues Projekt erstellen für Sprache die Option C# und dann die EINGABETASTE aus.

    Screenshot der Auswahl von C Sharp als Sprache für die Entwicklung einer Azure-Funktion.

  6. Wählen Sie für .NET-Runtime die Option .NET 8.0 Isolated LTS und dann die EINGABETASTE aus.

  7. Wählen Sie für Vorlage für die Funktion die Option Azure Event Grid-Trigger aus, und drücken Sie die EINGABETASTE.

  8. Geben Sie unter Funktionsname einen Namen für Ihre Funktion ein, und drücken Sie dann die EINGABETASTE.

  9. Geben Sie für Namespace einen Namen für den Namespace der Funktion ein, und wählen Sie dann die EINGABETASTE aus.

  10. Öffnen Sie das Projekt im aktuellen Fenster oder in einem neuen Fenster, oder fügen Sie es einem Arbeitsbereich hinzu.

  11. Warten Sie, bis die Funktion erstellt wurde. Der Status der Funktionserstellung wird in der unteren rechten Ecke angezeigt.

    Screenshot des Status der Funktionserstellung.

  12. Sehen Sie sich den Code in der Datei YourFunctionName.cs an, insbesondere die Run-Methode. Sie gibt die Informationen mithilfe einer Protokollierung aus.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

Bereitstellen der Funktion in Azure

  1. Wählen Sie die Azure-Schaltfläche auf der linken Leiste aus, wenn der Azure-Bereich noch nicht geöffnet ist.

  2. Zeigen Sie auf Ihr Projekt, und wählen Sie die Schaltfläche In Azure bereitstellen aus.

    Screenshot der Schaltfläche für die Bereitstellung in Azure.

  3. Wählen Sie in der Dropdownliste der Befehlspalette +Neue Funktions-App erstellen und dann die EINGABETASTE aus.

  4. Geben Sie unter Name einen global eindeutigen Namen für die neue Funktions-App ein, und wählen Sie dann die EINGABETASTE aus.

  5. Wählen Sie unter Runtimestapel die Option .NET 8 isoliert aus.

  6. Wählen Sie für Standort für Ihre Azure-Ressourcen eine Region in Ihrer Nähe aus.

  7. Der Status der Funktions-App-Erstellung wird auf der Registerkarte AZURE des unteren Bereichs angezeigt. Nachdem die Funktions-App erstellt wurde, wird der Status der Bereitstellung der Funktion, die Sie lokal in der Funktions-App erstellt haben angezeigt.

  8. Wenn die Bereitstellung erfolgreich war, erweitern Sie die Meldung Erstellung der Funktions-App erfolgreich, und wählen Sie Klicken, um Ressource anzuzeigen aus. Vergewissern Sie sich, dass Ihre Funktion im Abschnitt RESSOURCEN im linken Bereich ausgewählt ist.

  9. Klicken Sie mit der rechten Maustaste auf Ihre Funktion, und wählen Sie dann Im Portal öffnen aus.

    Screenshot der Auswahl zum Öffnen einer Funktion im Portal.

  10. Melden Sie sich bei Bedarf bei Azure an, und vergewissern Sie sich, dass die Seite Funktions-App für Ihre Funktion angezeigt wird.

  11. Wählen Sie im unteren Bereich Ihre Funktion aus.

    Screenshot: Auswahl einer Azure-Funktion auf der Seite „Funktions-App“

  12. Wechseln Sie zur Registerkarte Protokolle. Lassen Sie diese Registerkarte geöffnet, damit protokollierte Nachrichten angezeigt werden, wenn Sie ein Ereignis später in diesem Lernprogramm an ein Event Grid-Thema senden.

    Screenshot der Registerkarte „Protokolle“ für eine Funktion im Azure-Portal.

Erstellen eines benutzerdefinierten Themas

Ein Event Grid-Thema stellt einen benutzerdefinierten Endpunkt bereit, an dem Sie Ihre Ereignisse posten.

  1. Melden Sie sich auf einer neuen Registerkarte des Webbrowserfensters beim Azure-Portal an.

  2. Suchen Sie in der Suchleiste des Themas nach Event Grid-Themen, und wählen Sie Event Grid-Themen aus.

    Screenshot der Auswahl der Event Grid-Themen.

  3. Wählen Sie auf der Seite Themen auf der Befehlsleiste die Option + Erstellen aus.

    Screenshot der Schaltfläche zum Erstellen eines Event Grid-Themas.

  4. Gehen Sie im Bereich Thema erstellen wie folgt vor:

    1. Wählen Sie für Abonnement Ihr Azure-Abonnement aus.

    2. Wählen Sie für die Ressourcengruppe die gleiche Ressourcengruppe aus den vorherigen Schritten aus.

    3. Geben Sie für Name einen eindeutigen Namen für das benutzerdefinierte Thema an. Der Name des Themas muss eindeutig sein, da er durch einen Domain Name System (DNS)-Eintrag dargestellt wird.

      Verwenden Sie nicht den Namen, der in der Abbildung zu sehen ist. Erstellen Sie stattdessen einen eigenen Namen. Es muss 3-50 Zeichen lang sein und darf nur die Werte a-z, A-Z, 0-9 und ein Bindestrich (-) enthalten.

    4. Wählen Sie eine Region für das Event Grid-Thema aus.

    5. Klicken Sie auf Überprüfen + erstellen.

      Screenshot des Bereichs zum Erstellen eines neuen Themas.

    6. Überprüfen Sie auf der Registerkarte Überprüfen und erstellen Ihre Einstellungen, und wählen Sie dann Erstellen aus.

  5. Nachdem das benutzerdefinierte Thema erstellt wurde, wählen Sie den Link Gehe zu Ressource aus, um die Seite Event Grid-Thema für dieses Thema zu öffnen.

    Screenshot der Seite für ein benutzerdefiniertes Event Grid-Thema.

Abonnieren eines benutzerdefinierten Themas

Sie abonnieren ein Event Grid-Thema, um Event Grid mitzuteilen, welche Ereignisse Sie nachverfolgen möchten und wohin diese gesendet werden sollen.

  1. Wählen Sie nun auf der Symbolleiste der Seite Event Grid-Thema für Ihr benutzerdefiniertes Thema die Option + Ereignisabonnement aus.

    Screenshot der Schaltfläche zum Hinzufügen eines Ereignisabonnements auf der Symbolleiste.

  2. Gehen Sie im Bereich Ereignisabonnement erstellen wie folgt vor:

    1. Geben Sie unter Name einen Namen für das Ereignisabonnement an.

    2. Wählen Sie für Ereignisschema die Option Cloudereignisschema v1.0 aus.

    3. Wählen Sie für Endpunkttyp die Option Azure-Funktion aus.

    4. Wählen Sie Endpunkt konfigurieren aus.

      Screenshot der Ereignisabonnementwerte.

    5. Führen Sie im Bereich Azure-Funktion auswählen die folgenden Schritte aus:

      1. Wählen Sie für Abonnement das Azure-Abonnement aus, das über die Funktion verfügt.

      2. Wählen Sie als Ressourcengruppe die Ressourcengruppe aus, die über die Funktion verfügt.

      3. Wählen Sie für Funktions-App Ihre Funktions-App aus.

      4. Wählen Sie für Funktion die Funktion in der Funktions-App aus.

      5. Klicken Sie auf Auswahl bestätigen.

        Screenshot des Bereichs zum Auswählen einer zuvor erstellten Azure-Funktion.

    6. Dieser Schritt ist optional, wird aber für Produktionsszenarien empfohlen. Navigieren Sie im Bereich Ereignisabonnement erstellen zur Registerkarte Weitere Funktionen, und legen Sie Werte für Max. Anzahl von Ereignissen pro Batch und Bevorzugte Batchgröße in KB fest.

      Durch die Batchverarbeitung kann ein hoher Durchsatz erreicht werden. Legen Sie für Max. Anzahl von Ereignissen pro Batch die maximale Anzahl von Ereignissen fest, die ein Abonnement in einen Batch einschließen soll. Die bevorzugte Batchgröße in Kilobyte legt die bevorzugte Obergrenze der Batchgröße fest, kann jedoch überschritten werden, wenn ein einzelnes Ereignis größer als dieser Schwellenwert ist.

      Screenshot der Batcheinstellungen für ein Ereignisabonnement.

    7. Wählen Sie im Bereich Ereignis-Abonnement erstellen die Option Erstellen aus.

Senden eines Ereignisses an Ihr Thema

Nun wird ein Ereignis ausgelöst, um zu sehen, wie Event Grid die Nachricht an Ihren Endpunkt weiterleitet. Verwenden Sie die Azure-Befehlszeilenschnittstelle oder Azure PowerShell, um ein Testereignis an Ihr benutzerdefiniertes Thema zu senden. Üblicherweise werden die Ereignisdaten von einer Anwendung oder einem Azure-Dienst gesendet.

Im ersten Beispiel wird die Azure-Befehlszeilenschnittstelle verwendet. Sie ruft die URL und den Schlüssel für das benutzerdefinierte Thema sowie Beispielereignisdaten ab. Verwenden Sie für topicname den Namen Ihres benutzerdefinierten Themas. Es werden Beispielereignisdaten erstellt.

Bei dem data-Element des JSON-Codes handelt es sich um die Nutzlast Ihres Ereignisses. Für dieses Feld kann ein beliebiger wohlgeformter JSON-Code verwendet werden. Sie können auch das Betrefffeld zur erweiterten Weiterleitung und Filterung verwenden.

Das cURL-Tool sendet HTTP-Anforderungen. In diesem Artikel verwenden Sie cURL, um das Ereignis an das benutzerdefinierte Thema zu senden.

Azure CLI

  1. Wählen Sie im Azure-Portal die Option Cloud Shell aus. Wenn Sie sich im Azure PowerShell-Modus befinden, wählen Sie Zu Bash wechseln aus.

    Screenshot des Bash-Fensters in Azure Cloud Shell.

  2. Legen Sie die Variablen topicname und resourcegroupname fest, die in den Befehlen verwendet werden.

    Ersetzen Sie TOPICNAME durch den Namen Ihres Event Grid-Themas.

    topicname="TOPICNAME"
    

    Ersetzen Sie RESOURCEGROUPNAME durch den Namen der Azure-Ressourcengruppe, die das Event Grid-Thema enthält.

    resourcegroupname="RESOURCEGROUPNAME"
    
  3. Verwenden Sie den folgenden Befehl, um den Endpunkt für das Thema abzurufen. Aktualisieren Sie nach dem Kopieren und Einfügen des Befehls den Namen des Themas und den Namen der Ressourcengruppe, bevor Sie es ausführen.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Verwenden Sie den folgenden Befehl, um den Schlüssel für das benutzerdefinierte Thema abzurufen. Aktualisieren Sie nach dem Kopieren und Einfügen des Befehls den Namen des Themas und den Namen der Ressourcengruppe, bevor Sie es ausführen.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Kopieren Sie die folgende Anweisung mit der Ereignisdefinition, und wählen Sie dann die EINGABETASTE aus.

    event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
    
  6. Führen Sie den folgenden cURL-Befehl aus, um das Ereignis zu posten:

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    
  7. Vergewissern Sie sich, dass die Nachricht aus der Funktion auf der Registerkarte Protokolle Für Ihre Funktion im Azure-Portal angezeigt wird.

    Screenshot der Registerkarte „Protokolle“ für eine Azure-Funktion.

Azure PowerShell

Im zweiten Beispiel werden ähnliche Schritte mit Azure PowerShell ausgeführt.

  1. Wählen Sie im Azure-Portal die Option Cloud Shell aus (oder wechseln Sie zur Seite Azure Cloud Shell). Wählen Sie in der oberen linken Ecke des Cloud Shell-Fensters die Option Zu PowerShell wechseln aus.

  2. Legen Sie die folgenden Variablen fest. Aktualisieren Sie nach dem Kopieren und Einfügen der einzelnen Befehle den Namen des Themas und den Namen der Ressourcengruppe, bevor Sie es ausführen.

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. Führen Sie die folgenden Befehle aus, um den Endpunkt und die Schlüssel für das Thema abzurufen:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  4. Bereiten Sie das Ereignis vor. Kopieren Sie diese Anweisungen, und führen Sie sie im Cloud Shell-Fenster aus:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  5. Verwenden Sie das Invoke-WebRequest-Cmdlet, um das Ereignis zu senden:

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    
  6. Vergewissern Sie sich, dass die Nachricht aus der Funktion auf der Registerkarte Protokolle Für Ihre Funktion im Azure-Portal angezeigt wird.

    Screenshot der Registerkarte „Protokolle“ für eine Funktion.

Überprüfen, ob die Funktion das Ereignis empfangen hat

Sie haben das Ereignis ausgelöst, und Event Grid hat die Nachricht an den Endpunkt gesendet, den Sie beim Abonnieren konfiguriert haben. Jetzt können Sie überprüfen, ob die Funktion sie empfangen hat.

  1. Suchen Sie auf der Seite Überwachen für Ihre Funktion einen Aufruf.

    Screenshot der Registerkarte „Aufrufe“ der Seite „Überwachen“.

  2. Wählen Sie den Aufruf aus, um die Details anzuzeigen.

    Screenshot, der Aufrufdetails zeigt.

    Sie können auch die Registerkarte Protokolle im rechten Bereich verwenden, um die protokollierten Nachrichten anzuzeigen, wenn Sie Ereignisse an den Endpunkt des Themas posten.

    Screenshot der Monitoransicht einer Funktion mit einem Protokoll.

Bereinigen von Ressourcen

Wenn Sie dieses Ereignis weiterverwenden möchten, sollten Sie die in diesem Artikel erstellten Ressourcen nicht bereinigen. Löschen Sie andernfalls die Ressourcen, die Sie in diesem Artikel erstellt haben.

  1. Wählen Sie im Menü auf der linken Seite die Option Ressourcengruppen aus.

    Screenshot der Seite für Ressourcengruppen

    Alternativ können Sie Alle Dienste im linken Menü und dann Ressourcengruppen auswählen.

  2. Wählen Sie die Ressourcengruppe aus, um den Bereich für ihre Details zu öffnen.

  3. Wählen Sie auf der Symbolleiste die Option Ressourcengruppe löschen aus.

  4. Bestätigen Sie den Löschvorgang, indem Sie den Namen der Ressourcengruppe eingeben und dann Löschen auswählen.

Das Cloud Shell-Fenster wurde erstellt und verwendet die andere Ressourcengruppe, die auf der Seite Ressourcengruppen angezeigt wird. Löschen Sie diese Ressourcengruppe, wenn Sie nicht beabsichtigen, das Cloud Shell-Fenster später zu verwenden.

Sie haben gelernt, wie Sie Themen und Ereignisabonnements erstellen. Nun können Sie sich ausführlicher darüber informieren, welche Möglichkeiten Event Grid bietet:

In den folgenden Beispielen erfahren Sie, wie Sie Ereignisse in Event Grid mithilfe verschiedener Programmiersprachen veröffentlichen und nutzen: