Udostępnij za pośrednictwem


Tworzenie połączenia danych usługi IoT Hub dla usługi Azure Data Explorer przy użyciu zestawów SDK

W tym artykule pokazano, jak pozyskiwać dane do usługi Azure Data Explorer z usługi IoT Hub, platformy przesyłania strumieniowego danych big data i usługi pozyskiwania IoT.

Aby dowiedzieć się, jak utworzyć połączenie przy użyciu zestawów SDK kusto, zobacz Tworzenie połączenia danych usługi IoT Hub z zestawami SDK.

Aby uzyskać ogólne informacje na temat pozyskiwania do usługi Azure Data Explorer z usługi IoT Hub, zobacz Nawiązywanie połączenia z usługą IoT Hub.

Uwaga

Tylko zdarzenia umieszczone w kolejce po utworzeniu połączenia danych są pozyskiwane.

Przykłady kodu oparte na poprzednich wersjach zestawu SDK można znaleźć w zarchiwizowanym artykule.

Wymagania wstępne

Tworzenie połączenia danych usługi IoT Hub

W tej sekcji ustanowisz połączenie między usługą IoT Hub i tabelą usługi Azure Data Explorer. O ile to połączenie jest na miejscu, dane są przesyłane z usługi IoT Hub do tabeli docelowej.

  1. Zainstaluj pakiet NuGet Microsoft.Azure.Management.Kusto.

  2. Utwórz jednostkę aplikacji Firmy Microsoft Entra do użycia na potrzeby uwierzytelniania. Będziesz potrzebować identyfikatora katalogu (dzierżawy), identyfikatora aplikacji i klucza tajnego klienta.

  3. Uruchom następujący kod.

    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);
    
    Ustawienie Sugerowana wartość Opis pola
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identyfikator dzierżawy. Znany również jako identyfikator katalogu.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identyfikator subskrypcji używany do tworzenia zasobów.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identyfikator klienta aplikacji, która może uzyskiwać dostęp do zasobów w dzierżawie.
    clientSecret Symbol zastępczyClientSecret Klucz tajny klienta aplikacji, który może uzyskiwać dostęp do zasobów w dzierżawie.
    resourceGroupName testrg Nazwa grupy zasobów zawierającej klaster.
    clusterName mykustocluster Nazwa klastra.
    databaseName mykustodatabase Nazwa docelowej bazy danych w klastrze.
    iotHubConnectionName myiothubconnect Żądana nazwa połączenia danych.
    tableName StormEvents Nazwa tabeli docelowej w docelowej bazie danych.
    mappingRuleName StormEvents_CSV_Mapping Nazwa mapowania kolumny powiązana z tabelą docelową.
    dataFormat csv Format danych wiadomości.
    iotHubResourceId Identyfikator zasobu Identyfikator zasobu centrum IoT, który przechowuje dane do pozyskiwania.
    sharedAccessPolicyName iothubforread Nazwa zasad dostępu współdzielonego definiujących uprawnienia dla urządzeń i usług do łączenia się z usługą IoT Hub.
    consumerGroup $Default Grupa odbiorców centrum zdarzeń.
    lokalizacja Środkowe stany USA Lokalizacja zasobu połączenia danych.
    databaseRouting Wiele lub pojedynczy Routing bazy danych dla połączenia. Jeśli ustawisz wartość Na pojedynczą, połączenie danych jest kierowane do pojedynczej bazy danych w klastrze, jak określono w ustawieniu databaseName . Jeśli ustawisz wartość Na wiele, możesz zastąpić domyślną docelową bazę danych przy użyciu właściwości Pozyskiwanie bazy danych. Aby uzyskać więcej informacji, zobacz Routing zdarzeń.

Usuwanie połączenia danych usługi IoT Hub

Aby usunąć połączenie usługi IoT Hub, uruchom następujące polecenie:

kustoManagementClient.DataConnections.Delete(resourceGroupName, clusterName, databaseName, dataConnectionName);