Compartilhar via


Criar uma conexão de dados do Hub IoT para o Azure Data Explorer com SDKs

Este artigo mostra como ingerir dados no Azure Data Explorer do Hub IoT, de uma plataforma de streaming de Big Data e do serviço de ingestão de IoT.

Para saber como criar a conexão usando os SDKs do Kusto, confira Criar uma conexão de dados do Hub IoT com SDKs.

Para obter informações gerais sobre a ingestão no Azure Data Explorer do Hub IoT, confira Conectar-se ao Hub IoT.

Observação

Somente os eventos enfileirados após a criação da conexão de dados são ingeridos.

Para obter amostras de código baseadas em versões anteriores do SDK, confira o artigo arquivado.

Pré-requisitos

Criar uma conexão de dados do Hub IoT

Nesta seção, você estabelecerá uma conexão entre o Hub IoT e a sua tabela do Azure Data Explorer. Enquanto essa conexão estiver em vigor, os dados serão transmitidos do Hub IoT para a tabela de destino.

  1. Instale o pacote NuGet Microsoft.Azure.Management.Kusto.

  2. Crie uma entidade de aplicativo do Microsoft Entra para usar na autenticação. Você precisará da ID do diretório (locatário), da ID do aplicativo e do segredo do cliente.

  3. Execute o código a seguir.

    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);
    
    Configuração Valor sugerido Descrição do campo
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID do locatário. Também conhecida como ID do diretório.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx A ID da assinatura que você usa para a criação de recursos.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx A ID do cliente do aplicativo que pode acessar recursos em seu locatário.
    clientSecret PlaceholderClientSecret O segredo do cliente do aplicativo que pode acessar recursos em seu locatário.
    resourceGroupName testrg O nome do grupo de recursos que contém o seu cluster.
    clusterName mykustocluster O nome do seu cluster.
    databaseName mykustodatabase O nome do banco de dados de destino no cluster.
    iotHubConnectionName myiothubconnect O nome desejado da conexão de dados.
    tableName StormEvents O nome da tabela de destino no banco de dados de destino.
    mappingRuleName StormEvents_CSV_Mapping O nome do mapeamento de coluna relacionado à tabela de destino.
    dataFormat csv O formato de dados da mensagem.
    iotHubResourceId ID de Recurso A ID do recurso do hub IoT que contém os dados para ingestão.
    sharedAccessPolicyName iothubforread O nome da política de acesso compartilhado que define as permissões para dispositivos e serviços para se conectar ao Hub IoT.
    consumerGroup $Default O grupo de consumidores do hub de eventos.
    local Centro dos EUA A localização do recurso de conexão de dados.
    databaseRouting Multi ou Single O roteamento de banco de dados para a conexão. Se você definir o valor para Single, a conexão de dados será direcionada para um único banco de dados no cluster conforme especificado na configuração databaseName. Se você definir o valor para Multi, poderá substituir o banco de dados de destino padrão usando a propriedade de ingestão Database. Para obter mais informações, confira Roteamento de evento.

Remover uma conexão de dados do Hub IoT

Para remover a conexão do Hub IoT, execute o seguinte comando:

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