Übung: Integrieren von Azure Cosmos DB in die IoT-Datenpipeline

Abgeschlossen

Diese Übung bietet eine Übersicht über das Einrichten der Sammlung sowie die Verarbeitung und Speicherung von IoT-Telemetriedaten, die mithilfe einer Azure IoT Central-Anwendung generiert wurden.

In dieser Übung führen Sie die folgenden Schritte aus:

  • Erstellen einer Azure IoT Central-Anwendung
  • Erstellen einer Azure-Funktion, die HTTP-Anforderungsnutzdaten protokolliert
  • Konfigurieren und Überprüfen von IoT-Telemetrieregeln einer Azure IoT Central-Anwendung

Voraussetzungen

Um diese Übung auszuführen, benötigen Sie Folgendes:

  • Ein Microsoft-Konto oder ein Microsoft Entra-Konto mit der Rolle „Globaler Admin“ im Microsoft Entra-Mandanten. Der Mandant muss mit dem Azure-Abonnement und mit der Rolle „Besitzer“ oder „Mitwirkender“ im Azure-Abonnement verbunden sein.
  • Zum Abschluss der Übungseinheit Richten Sie Azure Cosmos DB ein.
  • Ein aktives Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Erstellen einer Azure IoT Central-Anwendung

  1. Navigieren Sie im Azure-Portal zur Seite IoT Central-Anwendung erstellen. Melden Sie sich nach Aufforderung mit Ihrem Azure-Konto an.

  2. Geben Sie Folgendes ein:

    Feld BESCHREIBUNG
    Subscription Das Azure-Abonnement, das Sie verwenden möchten
    Resource group Die Ressourcengruppe, die Sie verwenden möchten. Sie können eine neue Ressourcengruppe erstellen oder eine bereits vorhandene Ressourcengruppe verwenden.
    Ressourcenname Ein gültiger Azure-Ressourcenname, z. B. adatum-iot-custom-application.
    Anwendungs-URL Eine URL-Unterdomäne für Ihre Anwendung, z. B. adatum-iot-custom-application. Die URL für eine IoT Central-Anwendung sieht wie https://adatum-iot-custom-application.azureiotcentral.com aus.
    Vorlage In-Store-Analytics – Bedingungsüberwachung
    Region Die Azure-Region, die Sie verwenden möchten.
    Tarif Wählen Sie einen der Standardpreispläne aus. Weitere Informationen zu den Preisen finden Sie unter Azure IoT Central pricing.
  3. Klicken Sie auf Überprüfen + erstellen. Klicken Sie anschließend auf Erstellen.

Wenn die App bereit ist, können Sie sie über das Azure-Portal aufrufen:

Screenshot that shows the IoT Central application resource in the Azure portal. The application URL is highlighted.

Tipp

Navigieren Sie zu IoT Central-Anwendungen, um alle IoT Central-Anwendungen aufzulisten, auf die Sie Zugriff haben.

In ein paar Minuten oder weniger wird die Dashboard-Seite angezeigt. Überprüfen Sie die Telemetriedaten und Analysen der Azure IoT Central-Beispielanwendung:

  1. Wählen Sie auf der Seite Dashboard des IoT Central-Anwendungsportals im vertikalen Menü die Option Geräte aus.

  2. Wählen Sie im Abschnitt Thermostat die Option Thermostat-Zone1 aus.

  3. Überprüfen Sie im Bereich Thermostat-Zone1 den Inhalt der Registerkarte Dashboard.

    Screenshot of the Dashboard tab of the 'Thermostat-Zone1' device pane in the IoT Central Application portal.

  4. Wählen Sie die Registerkarte Rohdaten aus, und überprüfen Sie den Inhalt.

    Screenshot of the Raw data tab of the 'Thermostat-Zone1' device pane in the IoT Central Application portal.

Erstellen einer Azure-Funktion, die HTTP-Anforderungsnutzdaten protokolliert

In dieser Aufgabe erstellen Sie eine Azure Functions-App, die die HTTP-Webhookfunktion implementiert. Wenden Sie diese Funktion an, um die Telemetriedaten aus der Azure IoT Central-Anwendung weiterzuleiten, indem Sie eine Anwendungsregel erstellen.

  1. Starten Sie einen Webbrowser, navigieren Sie zum Azure-Portal, und melden Sie bei dem Azure-Abonnement an, das Sie für dieses Modul verwenden.

  2. Verwenden Sie das Textfeld Ressourcen, Dienste und Dokumente durchsuchen, um nach Funktions-App zu suchen.

  3. Wählen Sie im Bereich Funktions-App die Option + Erstellen aus.

  4. Konfigurieren Sie auf der Registerkarte Grundlagen die folgenden Einstellungen, und wählen Sie dann Überprüfen + erstellen aus.

    Einstellung Konfiguration
    Subscription Wählen Sie den Namen des Azure-Abonnements aus, das Sie für dieses Modul verwenden.
    Ressourcengruppe Erstellen Sie eine neue Ressourcengruppe mit dem Namen function-app-RG.
    Name der Funktions-App Geben Sie einen eindeutigen Namen ein, der aus Kleinbuchstaben, Ziffern oder Bindestrichen besteht und mit einem Buchstaben beginnt.
    Veröffentlichen Wählen Sie Code aus.
    Laufzeitstapel Wählen Sie .NET aus.
    Version Wählen Sie Version 6 (LTS), In-Process-Modell aus.
    Region Wählen Sie die Azure-Region aus, die dem Standort Ihrer Laborumgebung am nächsten liegt und vorzugsweise dem Standort entspricht, den Sie für die Bereitstellung von Azure IoT Central ausgewählt haben.
    Betriebssystem Windows
    Plantyp Verbrauch (serverlos)

    Screenshot of the Basics tab of the Create Function App pane in the Azure portal.

  5. Klicken Sie auf Erstellen.

    Hinweis

    Warten Sie, bis die Bereitstellung der Azure Function-App abgeschlossen wurde. Dies kann etwa zwei Minuten dauern.

  6. Wenn die Bereitstellung der Azure Functions-App abgeschlossen ist, wählen Sie Zu Ressource wechseln aus.

  7. Wählen Sie im Bereich der Azure Function-App unter Im Azure-Portal erstellen Funktion erstellen aus.

  8. Geben Sie im Bereich Funktion hinzufügen die folgenden Einstellungen an, und wählen Sie dann Erstellen aus.

    Einstellung Konfiguration
    Entwicklungsumgebung Im Portal entwickeln
    Vorlage HTTP-Trigger
    Neue Funktion HttpTrigger1
    Autorisierungsstufe Function

    Screenshot of the 'Add function' pane of the Azure Function app in the Azure portal.

  9. Wählen Sie im Bereich HttpTrigger1 die Menüoption Integration aus.

    Screenshot of the Integration function pane of the Azure Function app in the Azure portal.

  10. Wählen Sie im Rechteck mit der Bezeichnung Ausgaben die Option + Ausgabe hinzufügen aus.

  11. Geben Sie die folgenden Einstellungen ein, und wählen Sie dann Hinzufügen aus:

    Einstellung Konfiguration
    Bindungstyp Wählen Sie Azure Cosmos DB aus.
    Dokumentparametername Ersetzen Sie den Standardwert mit outDoc.
    Datenbankname Geben Sie den Namen der Datenbank ein, die Sie in der vorherigen Übung erstellt haben: iotdb.
    Sammlungsname Geben Sie iotcollection ein.
    Bei Festlegung auf TRUE wird die Cosmos DB-Datenbank erstellt. Wählen Sie Ja aus.
    Cosmos DB account connection (Cosmos DB-Kontoverbindung) Wählen Sie Neuaus. Stellen Sie im Popupfenster Cosmos DB-Verbindung sicher, dass die Option Azure Cosmos DB-Konto ausgewählt ist. Wählen Sie in der Dropdownliste Datenbankkonto den Eintrag aus, der das Cosmos DB-Konto darstellt, das Sie in der vorherigen Übung erstellt haben, und wählen Sie dann OK aus.
    Partitionsschlüssel (optional) Geben Sie /pk/timestamp/deviceid ein.

    Screenshot of the Create Output pane of the HttpTrigger1 Integration pane of an Azure function in the Azure portal.

    Hinweis

    Bei der Auswahl eines optimalen Partitionsschlüssels ist es wichtig, die Verwendungsmuster und die Größenbeschränkung für logische Partitionen von 20 GB zu berücksichtigen. Sie können beispielsweise einen synthetischen Partitionsschlüssel erstellen, der aus einer Kombination von deviceId und date besteht.

  12. Wählen Sie Code + Test aus.

  13. Ersetzen Sie den vorhandenen Code durch den folgenden Inhalt, und wählen Sie dann Speichern aus.

    #r "Newtonsoft.Json"
    
    using Microsoft.Azure.WebJobs.Host;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using Microsoft.Extensions.Logging;
    using Microsoft.AspNetCore.Mvc;
    
    public static void Run(HttpRequest req, out object outDoc, ILogger log)
    {
      log.LogInformation($"C# Queue trigger function processed: {req.Body}");
    
      string requestBody = new StreamReader(req.Body).ReadToEnd();
      dynamic iotDataJson = JObject.Parse(requestBody);
      dynamic iotData = JsonConvert.DeserializeObject<dynamic>(iotDataJson.ToString());
    
      log.LogInformation($"{iotData}");
    
      outDoc = new {
        pk = iotData.device.id + "-" + iotData.timestamp.ToString("yyyyMMdd"),
        timestamp = iotData.timestamp,
        deviceId = iotData.device.id,
        temperature = iotData.device.telemetry.Thermostat_1o.temp.value
      };
    }
    

    Screenshot of the Code + Test pane of the HttpTrigger1 of the Azure Function app in the Azure portal displaying the code.

    Hinweis

    Die Funktion protokolliert die JSON-basierten Nutzdaten der HTTP-Anforderung und erstellt einzelne JSON-Elemente, die in einem einzelnen Dokument der Cosmos DB-Zielsammlung gespeichert werden sollen, das der von Ihnen konfigurierten Funktionsausgabe entspricht. Sie können das pk-Element, das aus der verketteten deviceId-Eigenschaft und dem Datum des erfassten Telemetriedatenpunkts besteht, als Partitionsschlüssel verwenden.

  14. Wählen Sie Funktions-URL abrufen für den Funktionsschlüssel aus, und zeichnen Sie dessen Wert auf.

    Screenshot of the Code + Test pane of the HttpTrigger1 of the Azure Function app in the Azure portal, with the Get function URL pop-up window.

Konfigurieren und Überprüfen von IoT-Telemetrieregeln einer Azure IoT Central-Anwendung

  1. Wechseln Sie zurück zum Webbrowserfenster, in dem die Seite Geräte der Azure IoT Central-Anwendung angezeigt wird, die Sie zuvor in dieser Übung erstellt haben.

  2. Wählen Sie im IoT Central-Anwendungsportal im vertikalen Menü die Option Regeln aus.

  3. Wählen Sie + Neu aus, und konfigurieren Sie die folgenden Einstellungen:

    Einstellung Konfiguration
    Regelname Geben Sie Adatum IoT telemetry rule (Adatum IoT-Telemetrieregel) ein.
    Gerätevorlage Wählen Sie Thermostat aus.
    Zeitaggregation Stellen Sie sicher, dass die Einstellungen Deaktiviert sind.
    Telemetrie Wählen Sie Temperature (Temperatur) aus.
    Operator Wählen Sie ist größer als aus.
    Geben Sie einen Wert ein. Geben Sie 0 ein.
    Aktion Wählen Sie + Webhook aus.
    Anzeigename Geben Sie Azure function webhook (Azure-Funktionswebhook) ein.
    Rückruf-URL Fügen Sie den Wert der Azure-Funktions-URL ein, den Sie sich in der vorherigen Aufgabe dieser Übung notiert haben.

    Screenshot of the first part of the sample Azure IoT Central application rule.

    Screenshot of the second part of the sample Azure IoT Central application rule.

    Hinweis

    Der Wert der Temperaturtelemetrie wird absichtlich künstlich niedrig gehalten, um die Webhookfunktion aufzurufen und die Funktion auszulösen. In realen Szenarien würden Sie ihn an die Bedingung anpassen, die die Datensammlung zusichert, die Sie in der Cosmos DB-Zielsammlung speichern möchten.

  4. Wählen Sie Fertig und dann Speichern aus.

  5. Wechseln Sie zurück zum Webbrowserfenster, in dem der Bereich HttpTrigger1 | Programmieren und testen im Azure-Portal angezeigt wird.

  6. Wählen Sie Überwachen und dann die Registerkarte Protokolle aus.

  7. Stellen Sie sicher, dass im Bereich Protokolle die Nachrichten angezeigt werden, die als Reaktion auf den HTTP-Trigger generiert wurden, der von dem Webhook der Azure IoT Central-Anwendung stammt, den Sie zuvor in dieser Aufgabe konfiguriert haben.

  8. Wechseln Sie zum Webbrowserfenster mit dem Bereich Daten-Explorer des Cosmos DB-Kontos, das Sie in der vorherigen Übung bereitgestellt haben.

  9. Wählen Sie im Abschnitt NOSQL-API die Schaltfläche Aktualisieren mit dem runden Pfeil aus, erweitern Sie den Knoten iotdb und den darin enthaltenen Knoten iotcollection. Wählen Sie den Knoten Elemente und dann das erste Dokument in der Liste der Elemente aus.

  10. Überprüfen Sie, ob im Bereich Details auf der Registerkarte Elemente im Fenster Daten-Explorer die Telemetriedaten angezeigt werden, die von den in der Azure Central IoT-Anwendung registrierten und von der Azure-Funktion verarbeiteten Geräten generiert wurden, einschließlich pk, timestamp, deviceId und temperature.

    Screenshot of the Azure Cosmos DB items. The items represent the telemetry data generated by devices registered with Azure IoT Central and processed by the Azure function.

Ergebnisse

Herzlichen Glückwunsch! Sie haben die zweite Übung dieses Moduls abgeschlossen. In dieser Übung haben Sie eine Azure IoT Central-Anwendung erstellt.