Partager via


Créer une connexion de données IoT Hub pour Azure Data Explorer en utilisant des Kits de développement logiciel (SDK)

Cet article vous montre comment ingérer des données dans Azure Data Explorer depuis IoT Hub, plateforme de streaming de big data et service d’ingestion IoT.

Pour savoir comment créer la connexion en utilisant des Kits de développement logiciel (SDK) Kusto, consultez Créer une connexion de données IoT Hub avec des Kits de développement logiciel (SDK).

Pour obtenir des informations générales sur l’ingestion dans Azure Data Explorer à partir d’IoT Hub, consultez Connexion à IoT Hub.

Remarque

Seuls les événements mis en file d’attente après que vous avez créé la connexion de données sont ingérés.

Pour obtenir des exemples de code basés sur les versions précédentes du Kit de développement logiciel (SDK), consultez l’article archivé.

Prérequis

Créer une connexion de données IoT Hub

Dans cette section, vous allez établir une connexion entre IoT Hub et votre table Azure Data Explorer. Tant que cette connexion est en place, les données sont transmises depuis le hub IoT dans votre table cible.

  1. Installez le package NuGet Microsoft.Azure.Management.Kusto.

  2. Créez un principal d’application Microsoft Entra à utiliser pour l’authentification. Vous aurez besoin de l’ID (de locataire) d’annuaire, de l’ID d’application et de la clé secrète client.

  3. Exécutez le code suivant.

    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);
    
    Paramètre Valeur suggérée Description du champ
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Votre ID de client. Également appelé ID de répertoire.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID d’abonnement que vous utilisez pour la création de ressources.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID client de l’application qui peut accéder aux ressources figurant dans votre locataire.
    clientSecret PlaceholderClientSecret Secret client de l’application qui peut accéder aux ressources figurant dans votre locataire.
    resourceGroupName testrg Nom du groupe de ressources qui contient votre cluster.
    clusterName mykustocluster Nom de votre cluster.
    databaseName mykustodatabase Nom de la base de données cible dans votre cluster.
    iotHubConnectionName myiothubconnect Nom souhaité de votre connexion de données.
    tableName StormEvents Nom de la table cible dans la base de données cible.
    mappingRuleName StormEvents_CSV_Mapping Nom de votre mappage de colonnes associé à la table cible.
    dataFormat csv Format de données du message.
    iotHubResourceId ID de ressource ID de ressource de votre hub IoT qui contient les données à des fins d’ingestion.
    sharedAccessPolicyName iothubforread Nom de la stratégie d’accès partagé qui définit les autorisations pour que les périphériques et les services se connectent au hub IoT.
    consumerGroup $Default Groupe de consommateurs de votre hub d’événements.
    location USA Centre Emplacement de la ressource de connexion de données.
    databaseRouting Multi ou Single Routage de la base de données pour la connexion. Si vous définissez la valeur sur Unique, la connexion de données est routée vers une base de données unique dans le cluster, comme spécifié dans le paramètre databaseName. Si vous définissez la valeur sur Multi, vous pouvez remplacer la base de données cible par défaut en utilisant la propriété d’ingestion Database. Pour plus d’informations, consultez Routage des événements.

Supprimer une connexion de données IoT Hub

Pour supprimer la connexion IoT Hub, exécutez la commande suivante :

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