Compartir a través de


Creación de una conexión de datos de IoT Hub para Azure Data Explorer con SDK

En este artículo se muestra cómo ingerir datos en Azure Data Explorer desde IoT Hub, una plataforma de streaming de macrodatos y un servicio de ingesta de IoT.

Para obtener información sobre cómo crear la conexión mediante los SDK de Kusto, consulte Crear una conexión de datos de IoT Hub con SDK.

Para información general sobre la ingesta en Azure Data Explorer desde IoT Hub, consulte Conexión a IoT Hub.

Nota:

Solamente se ingieren los eventos en cola después de crear la conexión de datos.

Para obtener ejemplos de código basados en versiones anteriores del SDK, consulte el artículo archivado.

Requisitos previos

Crear una conexión de datos de IoT Hub

En esta sección, establecerá una conexión entre IoT Hub y la tabla de Azure Data Explorer. Siempre que esta conexión esté en vigor, los datos se transmiten desde IoT Hub a la tabla de destino.

  1. Instale el paquete Microsoft.Azure.Management.Kusto NuGet.

  2. Cree una entidad de seguridad de aplicación de Microsoft Entra para usarla para la autenticación. Necesitará el identificador de directorio (inquilino), el identificador de aplicación y el secreto de cliente.

  3. Ejecute el código siguiente:

    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);
    
    Configuración Valor sugerido Descripción del campo
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx El identificador de inquilino. También conocido como identificador de directorio.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identificador de suscripción que se usa para la creación de recursos.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Identificador del cliente de la aplicación que puede acceder a los recursos del inquilino.
    clientSecret PlaceholderClientSecret Secreto del cliente de la aplicación que puede acceder a los recursos del inquilino.
    resourceGroupName testrg Nombre del grupo de recursos que contiene el clúster.
    clusterName mykustocluster Nombre del clúster.
    databaseName mykustodatabase Nombre de la base de datos de destino del clúster.
    iotHubConnectionName myiothubconnect Nombre que desea asignar a la conexión de datos.
    tableName StormEvents Nombre de la tabla de destino de la base de datos de destino.
    mappingRuleName StormEvents_CSV_Mapping Nombre de la asignación de columnas asociada a la tabla de destino.
    dataFormat csv Formato de datos del mensaje.
    iotHubResourceId Identificador del recurso Identificador del recurso del centro de IoT que contiene los datos que se van a ingerir.
    sharedAccessPolicyName iothubforread Nombre de la directiva de acceso compartido que define los permisos para que los dispositivos y los servicios se conecten a IoT Hub.
    consumerGroup $Default Grupo de consumidores del centro de eventos.
    ubicación Centro de EE. UU. Ubicación del recurso de conexión de datos.
    databaseRouting Múltiple o Sencillo Enrutamiento de la base de datos para la conexión. Si establece el valor en Sencillo, la conexión de datos se enruta a una base de datos única del clúster, tal y como se especifica en la opción databaseName. Si establece el valor en Múltiple, puede invalidar la base de datos de destino predeterminada mediante la propiedad de ingesta Base de datos. Para más información, consulte Enrutamiento de eventos.

Eliminar una conexión de datos de IoT Hub

Para quitar la conexión de IoT Hub, ejecute el siguiente comando:

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