Tutorial: MQTT-Nachrichten aus Azure Event Grid an Azure Functions mit benutzerdefinierten Topics weiterleiten – Azure-Portal

Azure Event Grid kann MQTT-Nachrichten von Ihren IoT-Clients empfangen und sie zur Verarbeitung an andere Azure-Dienste weiterleiten. Dieses Tutorial zeigt Ihnen, wie Sie MQTT-Nachrichten, die von einem Azure Event Grid-Namensraum empfangen werden, mit einem benutzerdefinierten Event Grid Thema an eine Azure-Funktion routen. Das Routing von Nachrichten an eine Funktion ermöglicht es Ihnen, benutzerdefinierten Code auszuführen, wie zum Beispiel das Transformieren oder Filtern der Telemetrie, jedes Mal, wenn eine Nachricht eintrifft, ohne Server verwalten zu müssen.

In diesem Tutorial lernen Sie:

  • Erstellen Sie eine Azure-Funktion, die einen Event Grid-Trigger verwendet.
  • Erstellt ein benutzerdefiniertes Event Grid-Thema.
  • Fügen Sie ein Abonnement hinzu, das Ereignisse an die Funktion sendet.
  • Erstellen Sie einen Event Grid-Namensraum mit Clients, Themenräumen und Berechtigungsbindungen.
  • Aktivieren Sie eine verwaltete Identität für den Namensraum.
  • Konfigurieren Sie das Routing vom Namensraum zum benutzerdefinierten Thema.
  • Senden Sie Test-MQTT-Nachrichten und überprüfen Sie, ob die Funktion diese empfängt.

Voraussetzungen

Erstellen Sie eine Azure-Funktion durch Verwendung eines Event Grid-Triggers

Von Bedeutung

Erstelle alle Ressourcen in diesem Tutorial in derselben Region.

Folgen Sie den Anweisungen in Create an Azure function using Visual Studio Code, verwenden Sie jedoch den Azure Event Grid Trigger anstelle des HTTP Triggers.

Code sollte dem folgenden Beispiel ähneln:

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

Hinweis

Dieses Tutorial wurde mit einer Azure-Funktion getestet, die den .NET 8.0 (isolierten) Laufzeitstack verwendet.

Erstellen eines Ereignisrasterthemas (benutzerdefiniertes Thema)

Erstellen Sie ein Ereignisrasterthema. Siehe Erstellen eines benutzerdefinierten Themas mithilfe des Azure-Portals. Wenn Sie das Thema "Ereignisraster" erstellen, wählen Sie auf der Registerkarte " Erweitert " für "Ereignisschema" die Option "Cloud-Ereignisschema v1.0" aus.

Screenshot, der die Seite

Hinweis

Verwenden Sie das Cloud-Ereignisschema v1.0 überall in diesem Lernprogramm.

Fügen Sie ein Abonnement für das Thema mit der Funktion hinzu

In diesem Schritt erstellen Sie ein Abonnement für das Event Grid-Thema, indem Sie die zuvor erstellte Azure-Funktion verwenden.

  1. Wählen Sie auf der Seite "Ereignisrasterthema" die Option "Abonnements" aus.

    Screenshot der Seite

  2. Auf der Seite Ereignis-Abonnement erstellen führen Sie folgende Schritte aus:

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

    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 Seite

  3. Auf der Seite zur Funktion Select Azure ausführen Sie folgende Schritte:

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

    2. Wählen Sie für die Ressourcengruppe die Ressourcengruppe mit Ihrer Azure-Funktion aus.

    3. Für die Funktions-App wählen Sie die Funktions-App aus, die die Funktion enthält.

    4. Wählen Sie für Slot die Option Produktion aus.

    5. Für Funktion wählen Sie Ihre Azure Function aus.

    6. Klicken Sie auf Auswahl bestätigen.

      Screenshot der Seite

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

  5. Auf der Seite "Ereignisabonnements " sollte das von Ihnen erstellte Abonnement angezeigt werden.

Erstellen von Namespaces, Clients, Themenbereichen und Berechtigungsbindungen

Befolgen Sie die Anweisungen in Quickstart: Veröffentlichen und abonnieren Sie MQTT-Nachrichten mit einem Event Grid Namespace mit Azure-Portal, um:

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

Aktivieren der verwalteten Identität für den Namespace

In diesem Abschnitt aktivieren Sie die systemzugewiesene verwaltete Identität für den Event Grid-Namensraum und gewähren der Identität dann die Übertragungsberechtigung für das benutzerdefinierte Event Grid-Thema, damit sie Nachrichten an das benutzerdefinierte Thema weiterleiten kann. Diese Berechtigung erteilen Sie, indem Sie der verwalteten Identität die Rolle Event Grid Data Sender für das benutzerdefinierte Thema zuweisen.

  1. Wählen Sie auf der Seite "Event Grid Namespace" die Option "Identität" aus. Wählen Sie "Ein" und dann "Speichern" aus.

    Screenshot des Event Grid Namespace mit ausgewählter Registerkarte

  2. Gehe zum Event Grid Thema für dein Event Grid Custom Topic.

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

  4. Wählen Sie auf der Access-Steuerelementseite"Hinzufügen" und dann " Rollenzuweisung hinzufügen" aus.

    Screenshot der Zugriffssteuerungsseite.

  5. Wählen Sie auf der Seite "Rolle hinzufügen" des Assistenten zum Hinzufügen von Rollenzuweisungen die Rolle " Ereignisrasterdatensender " und dann "Weiter" aus.

    Screenshot, das die Seite „Rolle“ des Assistenten „Rollenzuweisung hinzufügen“ zeigt.

  6. Klicken Sie auf Rollen zuweisen, auf der Seite Mitglieder, wählen Sie Verwaltete Identität und dann Mitglieder auswählen aus.

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

    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 auf Auswählen.

      Screenshot der Seite

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

  9. Wählen Sie auf der Seite "Überprüfen+ Zuweisen ", "Einstellungen überprüfen" und dann "Überprüfen+ Zuweisen" aus.

Konfigurieren des Routings von Nachrichten an Azure-Funktionen über ein benutzerdefiniertes Thema

In diesem Abschnitt konfigurieren Sie das Routing für den Event Grid-Namensraum so, dass die erhaltenen Nachrichten an das von Ihnen erstellte benutzerdefinierte Thema weitergeleitet werden.

  1. Wählen Sie auf der Seite "Event Grid Namespace " die Option "Routing" aus.

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

  3. Wählen Sie für den Thementyp"Benutzerdefiniertes Thema" aus.

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

  5. Wählen Sie für die verwaltete Identität für die Übermittlung die Option "System zugewiesen" aus.

  6. Wählen Sie Anwenden.

    Screenshot zeigt die Routingseite für einen Namespace.

Senden Sie Test-MQTT-Nachrichten mit MQTTX

Senden Sie Test-MQTT-Nachrichten an den Namespace, und bestätigen Sie, dass die Funktion sie empfängt. Folgen Sie den Anweisungen in Mit der MQTTX-App veröffentlichen und abonnieren, um einige Testnachrichten an den Event Grid-Namespace zu senden.

Wenn Sie Nachrichten senden, fließen sie in folgender Reihenfolge durch das System:

  1. MQTTX sendet Nachrichten an den Themenbereich des Event Grid-Namespace.
  2. Event Grid leitet die Nachrichten an das benutzerdefinierte Thema, das du konfiguriert hast.
  3. Event Grid leitet die Nachrichten an das Ereignis-Abonnement weiter, das die Azure-Funktion ist.

Um die Zustellung zu bestätigen, verwenden Sie die Logging-Funktion, um zu überprüfen, dass die Funktion das Ereignis empfängt.

Screenshot der Seite

Nächster Schritt