Tutorial: Weiterleiten von MQTT-Nachrichten in Azure Event Grid zu Azure Functions mithilfe von benutzerdefinierten Themen – Azure-Portal

In diesem Tutorial erfahren Sie, wie Sie MQTT-Nachrichten, die von einem Azure Event Grid-Namespace empfangen werden, über ein benutzerdefiniertes Ereignisrasterthema an eine Azure-Funktion weiterleiten, indem Sie die folgenden Schritte ausführen:

Falls Sie nicht über ein Azure-Abonnement verfügen, können Sie sich für eine kostenlose Testversion registrieren.

Erstellen einer Azure-Funktion mithilfe eines Event Grid-Triggers

Folgen Sie den Anweisungen unter Erstellen einer Azure-Funktion mit Visual Studio Code, verwenden Sie jedoch den Azure Event Grid Trigger anstelle des HTTP-Triggers. Der Code sollte etwa dem folgenden Beispiel entsprechen:

using System;
using Azure.Messaging;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace Company.Function
{
    public class MyEventGridTriggerFunc
    {
        private readonly ILogger<MyEventGridTriggerFunc> _logger;

        public MyEventGridTriggerFunc(ILogger<MyEventGridTriggerFunc> logger)
        {
            _logger = logger;
        }

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

Sie verwenden diese Azure-Funktion als Ereignishandler für das Abonnement eines Themas weiter unten in diesem Tutorial.

Hinweis

  • Erstellen Sie alle Ressourcen in der gleichen Region.
  • Dieses Tutorial wurde mit einer Azure-Funktion getestet, die (isolierte) .NET 8.0 Runtime-Stapel verwendet.

Erstellen eines Event Grid-Themas (benutzerdefiniertes Thema)

Erstellen eines Event Grid-Themas Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Themas mithilfe des Portals. Wenn Sie das Event Grid-Thema erstellen, wählen Sie auf der Registerkarte Erweitert für Event SchemaCloud Event Schema v1.0 aus.

Screenshot der Seite „Erweitert“ des Assistenten „Thema erstellen“.

Hinweis

Verwenden Sie das Cloudereignisschema überall in diesem Tutorial.

Hinzufügen eines Abonnements zum Thema mithilfe der Funktion

In diesem Schritt erstellen Sie ein Abonnement für das Thema „Event Grid“ mithilfe der zuvor erstellten Azure-Funktion.

  1. Wählen Sie auf der Themenseite „Event Grid“ Abonnements auf der linken Navigationsleiste aus.

    Screenshot der Seite „Event Subscriptions“ für ein Thema.

  2. Führen Sie auf der Seite Ereignisabonnement erstellen diese Schritte aus:

    1. Geben Sie einen Namen für das Ereignisabonnement ein.

    2. Wählen Sie für EreignisschemaCloud Event Schema 1.0 aus.

    3. Wählen Sie als Endpunkttyp die Option Azure Functions aus.

    4. Wählen Sie dann Endpunkt konfigurieren aus.

      Screenshot der Seite „Ereignisabonnement erstellen“.

  3. Führen Sie auf der Seite Azure-Funktion auswählen diese Schritte aus:

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

    2. Wählen Sie als Ressourcengruppe die Ressourcengruppe mit Ihrer Azure-Funktion aus.

    3. Wählen Sie als Function App die Funktions-App aus, die über die Funktion verfügt.

    4. Wählen Sie als SlotProduktion aus.

    5. Wählen Sie als Funktion Ihre Azure-Funktion aus.

    6. Wählen Sie dann unten auf der Seite Auswahl bestätigen aus.

      Screenshot der Seite „Azure-Funktion auswählen“.

  4. Wählen Sie auf der Seite Ereignisabonnement erstellen die Option Erstellen aus.

  5. Auf der Seite Event Subscriptions sollte das von Ihnen erstellte Abonnement angezeigt werden.

Erstellen von Namespaces, Clients, Themenräumen und Berechtigungsbindungen

Folgen Sie den Anweisungen aus dem Schnellstart: Veröffentlichen und Abonnieren von MQTT-Nachrichten mithilfe eines Event Grid-Namespaces mit dem Azure-Portal für:

  1. Erstellen eines Event Grid-Namespace
  2. Erstellen Sie zwei Clients.
  3. Erstellen Sie einen Themenbereich.
  4. Erstellen Sie Herausgeber- und Abonnentenberechtigungsbindungen.
  5. Testen Sie mithilfe der MQTTX-App, ob Clients Meldungen senden und empfangen können.

Aktivieren der verwalteten Identität für den Namespace

In diesem Abschnitt aktivieren Sie die vom System zugewiesene verwaltete Identität für den Event Grid-Namespace. Erteilen Sie dann der Identität die Berechtigung zum Senden an das zuvor erstellte benutzerdefinierte Event Grid-Thema, damit sie Nachrichten an das benutzerdefinierte Thema weiterleiten kann. Dazu fügen Sie die verwaltete Identität im benutzerdefinierten Thema zur Rolle Event Grid-Datensender hinzu.

  1. Wählen Sie auf der Seite Event Grid-Namespace die Option Identität im linken Navigationsmenü aus.

    Screenshot des Event Grid-Namespace mit ausgewählter Registerkarte „Identität“.

  2. Navigieren Sie zu dem Event Grid-Thema für ihr benutzerdefiniertes Event Grid-Thema.

  3. Wählen Sie Zugriffssteuerung auf der linken Navigationsleiste aus.

  4. Wählen Sie auf der Seite ZugriffssteuerungHinzufügen und dann Rollenzuweisung hinzufügen aus.

    Screenshot der Zugriffssteuerungsseite.

  5. Wählen Sie auf der Seite Rolle des Assistenten Rollenzuweisung hinzufügen die Rolle Event Grid Data Sender aus und klicken Sie unten auf der Seite auf Weiter.

    Screenshot der Seite **Rolle** des Assistenten zum **Hinzufügen von Rollenzuweisungen**

  6. Wählen Sie auf der Seite Mitglieder des Assistenten Rollenzuweisung hinzufügenVerwaltete Identität aus und wählen Sie dann Mitglieder auswählen.

    Screenshot der Seite „Mitglieder“ des Assistenten zum Hinzufügen von Rollenzuweisungen.

  7. Führen Sie auf der Seite Verwaltete Identitäten auswählen die folgenden Schritte aus:

    1. Wählen Sie Ihr Azure- Abonnementaus.

    2. Wählen Sie für Verwaltete Identität die Option Event Grid-Namespace aus.

    3. Wählen Sie die verwaltete Identität aus, die denselben Namen wie der Event Grid-Namespace hat.

    4. Klicken Sie unten auf der Seite auf Auswählen.

      Screenshot: Seite „Verwaltete Identitäten auswählen“

  8. Wählen Sie unten auf der Seite Rollenzuweisung hinzufügen die Option Weiter aus.

  9. Wählen Sie auf der Seite Überprüfen + Zuweisen die Einstellungen aus und wählen Sie dann unten auf der Seite Überprüfen + Zuweisen aus.

Konfigurieren des Routings von Meldungen an die Azure-Funktion über ein benutzerdefiniertes Thema

In diesem Schritt konfigurieren Sie das Routing für den Event Grid-Namespace, sodass die empfangenen Meldungen an das von Ihnen erstellte benutzerdefinierte Thema weitergeleitet werden.

  1. Wählen Sie auf der Seite Event Grid-Namespace auf der linken Navigationsleiste Routing aus.

  2. Wählen Sie auf der Seite Routing die Option Routing aktivieren aus.

  3. Wählen Sie für ThementypBenutzerdefiniertes Thema aus.

  4. Wählen Sie als Thema das benutzerdefinierte Thema aus, das Sie für dieses Tutorial erstellt haben.

  5. Wählen Sie als verwaltete Identität für die ÜbermittlungVom System zugewiesenen aus.

  6. Wählen Sie unten auf der Seite Anwenden aus.

    Screenshot zeigt die Routingseite für einen Namespace.

Senden von MQTT-Testnachrichten mit MQTTX

Senden Sie MQTT-Testmeldungen an den Namespace, und bestätigen Sie, dass die Funktion sie empfängt.

Folgen Sie den Anweisungen aus dem Artikel Veröffentlichen und abonnieren von Meldungen mithilfe der MQTTX-App, um einige Testmeldungen an den Event Grid-Namespace zu senden.

Der Flow der Ereignisse oder Meldungen ist wie folgt:

  1. MQTTX sendet Meldungen an den Themenbereich des Event Grid-Namespace.

  2. Die Meldungen werden an das von Ihnen konfigurierte benutzerdefinierte Thema weitergeleitet.

  3. Die Meldungen werden an das Ereignisabonnement, also die Azure-Funktion, weitergeleitet.

  4. Verwenden Sie das Protokollierungsfeature, um zu überprüfen, ob die Funktion das Ereignis empfangen hat.

    Screenshot der Seite „Protokolldatenstrom“ für eine Azure-Funktion.

Nächster Schritt

Codebeispiele finden Sie in diesem GitHub-Repository.