다음을 통해 공유


SDK를 사용하여 Azure Data Explorer에 대한 IoT Hub 데이터 연결 만들기

이 문서에서는 빅 데이터 스트리밍 플랫폼 및 IoT 수집 서비스인 IoT Hub에서 Azure Data Explorer로 데이터를 수집하는 방법을 보여 줍니다.

Kusto SDK를 사용하여 연결을 만드는 방법을 알아보려면 SDK를 사용하여 IoT Hub 데이터 연결 만들기를 참조 하세요.

IoT Hub에서 Azure Data Explorer에 수집하는 방법에 대한 일반적인 내용은 IoT Hub에 연결을 참조하세요.

참고 항목

데이터 연결을 만든 후에 큐에 넣은 이벤트만 수집됩니다.

이전 SDK 버전을 기반으로 하는 코드 샘플은 보관된 문서를 참조하세요.

필수 구성 요소

IoT Hub 데이터 연결 만들기

이 섹션에서는 IoT Hub와 Azure Data Explorer 테이블 간에 연결을 설정합니다. 이 연결이 있는 한 데이터는 IoT Hub에서 대상 테이블로 전송됩니다.

  1. Microsoft.Azure.Management.Kusto NuGet 패키지를 설치합니다.

  2. 인증에 사용할 Microsoft Entra 애플리케이션 주체 를 만듭니다. 디렉터리(테넌트) ID, 애플리케이션 ID 및 클라이언트 암호가 필요합니다.

  3. 다음 코드를 실행합니다.

    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);
    
    설정 제안 값 필드 설명
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 테넌트 ID 디렉터리 ID라고도 합니다.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 리소스를 만드는 데 사용하는 구독 ID입니다.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 테넌트의 리소스에 액세스할 수 있는 애플리케이션의 클라이언트 ID입니다.
    clientSecret PlaceholderClientSecret 테넌트의 리소스에 액세스할 수 있는 애플리케이션의 클라이언트 암호입니다.
    resourceGroupName testrg 클러스터가 포함된 리소스 그룹의 이름입니다.
    clusterName mykustocluster 클러스터의 이름입니다.
    databaseName mykustodatabase 클러스터에 있는 대상 데이터베이스의 이름입니다.
    iotHubConnectionName myiothubconnect 원하는 데이터 연결 이름입니다.
    tableName StormEvents 대상 데이터베이스의 대상 테이블 이름입니다.
    mappingRuleName StormEvents_CSV_Mapping 대상 테이블과 관련된 열 매핑의 이름입니다.
    dataFormat csv 메시지의 데이터 형식입니다.
    iotHubResourceId 리소스 ID 수집할 데이터를 보유하는 IoT Hub의 리소스 ID입니다.
    sharedAccessPolicyName iothubforread IoT Hub에 연결할 수 있는 디바이스 및 서비스에 대한 권한을 정의하는 공유 액세스 정책의 이름입니다.
    consumerGroup $Default 이벤트 허브의 소비자 그룹입니다.
    위치 미국 중부 데이터 연결 리소스의 위치입니다.
    databaseRouting Multi 또는 Single 연결에 대한 데이터베이스 라우팅입니다. 값을 Single로 설정하면 데이터베이스 이름 설정에 지정된 대로 데이터 연결이 클러스터의 단일 데이터베이스로 라우팅됩니다. 값을 Multi로 설정하면 데이터베이스 수집 속성을 사용하여 기본 대상 데이터베이스를 재정의할 있습니다. 자세한 내용은 이벤트 라우팅을 참조하세요.

IoT Hub 데이터 연결 제거

IoT Hub 연결을 제거하려면 다음 명령을 실행합니다.

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