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
- Uma assinatura do Azure. Criar uma conta gratuita do Azure.
- Um cluster e um banco de dados do Azure Data Explorer. Criar um cluster e um banco de dados.
- Uma tabela de destino. Criar uma tabela ou usar uma tabela existente.
- Um mapeamento de ingestão para a tabela.
- Um Hub IoT com dados para ingestão.
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.
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.
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);