Erstellen einer IoT Hub-Datenverbindung für Azure Data Explorer mit SDKs
In diesem Artikel wird erläutert, wie Sie in Azure Data Explorer Daten aus IoT Hub (Big Data-Streamingplattform und IoT-Erfassungsdienst) erfassen.
Informationen zum Erstellen der Verbindung mithilfe der Kusto-SDKs finden Sie unter Erstellen einer IoT Hub-Datenverbindung mit SDKs.
Allgemeine Informationen zur Erfassung in Azure Data Explorer aus IoT Hub finden Sie unter Herstellen einer Verbindung mit IoT Hub.
Hinweis
Nur Ereignisse, die nach dem Erstellen der Datenverbindung in die Warteschlange eingereiht werden, werden erfasst.
Codebeispiele, die auf früheren SDK-Versionen basieren, finden Sie im archivierten Artikel.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie ein kostenloses Azure-Konto.
- Schnellstart: Erstellen eines Azure Data Explorer-Clusters und einer Datenbank. Erstellen eines Clusters und einer Datenbank
- Eine Zieltabelle: Erstellen Sie eine Tabelle, oder verwenden Sie eine vorhandene.
- Eine Erfassungszuordnung für die Tabelle.
- Ein IoT Hub mit Daten für die Erfassung.
Erstellen einer IoT Hub-Datenverbindung
In diesem Abschnitt richten Sie eine Verbindung zwischen dem IoT Hub und Ihrer Azure Data Explorer-Tabelle ein. Solange diese Verbindung vorhanden ist, werden Daten vom IoT Hub in Ihre Zieltabelle übertragen.
Installieren Sie das NuGet-Paket Microsoft.Azure.Management.Kusto.
Erstellen Sie einen Microsoft Entra-Anwendungsprinzipal, der für die Authentifizierung verwendet werden soll. Sie benötigen die Verzeichnis-ID (Mandanten-ID), die Anwendungs-ID und den geheimen Clientschlüssel.
Führen Sie den folgenden Code aus.
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID var clientSecret = "PlaceholderClientSecret"; //Client Secret var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret); var resourceManagementClient = new ArmClient(credentials, subscriptionId); var resourceGroupName = "testrg"; //The cluster and database that are created as part of the Prerequisites var clusterName = "mykustocluster"; var databaseName = "mykustodatabase"; var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync(); var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value; var cluster = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value; var database = (await cluster.GetKustoDatabaseAsync(databaseName)).Value; var dataConnections = database.GetKustoDataConnections(); var iotHubConnectionName = "myiothubconnect"; //The IoT hub that is created as part of the Prerequisites var iotHubResourceId = new ResourceIdentifier("/subscriptions/<iotHubSubscriptionId>/resourceGroups/<iotHubResourceGroupName>/providers/Microsoft.Devices/IotHubs/<iotHubName>"); var sharedAccessPolicyName = "iothubforread"; var consumerGroup = "$Default"; var location = AzureLocation.CentralUS; //The table and column mapping are created as part of the Prerequisites var tableName = "StormEvents"; var mappingRuleName = "StormEvents_CSV_Mapping"; var dataFormat = KustoIotHubDataFormat.Csv; var databaseRouting = KustoDatabaseRouting.Multi; var iotHubConnectionData = new KustoIotHubDataConnection { IotHubResourceId = iotHubResourceId, ConsumerGroup = consumerGroup, SharedAccessPolicyName = sharedAccessPolicyName, Location = location, TableName = tableName, MappingRuleName = mappingRuleName, DataFormat = dataFormat, DatabaseRouting = databaseRouting }; await dataConnections.CreateOrUpdateAsync(WaitUntil.Completed, iotHubConnectionName, iotHubConnectionData);
Einstellung Empfohlener Wert Feldbeschreibung tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Ihre Mandanten-ID. Wird auch als Verzeichnis-ID bezeichnet. subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Die Abonnement-ID, die Sie für die Ressourcenerstellung verwenden. clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Die Client-ID der Anwendung, die auf Ressourcen in Ihrem Mandanten zugreifen kann. clientSecret PlaceholderClientSecret Das Clientgeheimnis der Anwendung, die auf Ressourcen in Ihrem Mandanten zugreifen kann. resourceGroupName testrg Der Name der Ressourcengruppe, die Ihren Cluster enthält. clusterName mykustocluster Der Name Ihres Clusters. databaseName mykustodatabase Der Name der Zieldatenbank in Ihrem Cluster. iotHubConnectionName myiothubconnect Der gewünschte Name Ihrer Datenverbindung. tableName StormEvents Der Name der Zieltabelle in der Zieldatenbank. mappingRuleName StormEvents_CSV_Mapping Der Name der Spaltenzuordnung, die mit der Zieltabelle verknüpft ist. dataFormat csv Das Datenformat der Nachricht. iotHubResourceId Ressourcen-ID Die Ressourcen-ID Ihres IoT-Hubs mit den Daten für die Erfassung. sharedAccessPolicyName iothubforread Der Name der SAS-Richtlinie, die Berechtigungen für Geräte und Dienste zum Herstellen einer Verbindung mit IoT Hub definiert. consumerGroup $Default Die Consumergruppe Ihres Event Hubs. location USA, Mitte Der Speicherort der Datenverbindungsressource. databaseRouting Multi oder Single Das Datenbankrouting für die Verbindung. Wenn Sie den Wert auf Single festlegen, wird die Datenverbindung wie in der Einstellung databaseName angegeben an eine einzelne Datenbank im Cluster geroutet. Wenn Sie den Wert auf Multi festlegen, können Sie die Standardzieldatenbank mithilfe der Erfassungseigenschaft Database überschreiben. Weitere Informationen finden Sie unter Ereignisrouting.
Entfernen einer IoT Hub-Datenverbindung
Führen Sie den folgenden Befehl aus, um die IoT Hub-Verbindung zu entfernen:
kustoManagementClient.DataConnections.Delete(resourceGroupName, clusterName, databaseName, dataConnectionName);