次の方法で共有


SDK を使用して Azure Data Explorer 用の IoT Hub データ接続を作成する

この記事では、ビッグ データのストリーミング プラットフォームとなる IoT インジェスト サービスである IoT Hub から Azure Data Explorer にデータを取り込む方法について説明します。

Kusto SDK を使用して接続を作成する方法を確認するには、「SDK を使用した IoT Hub データ接続の作成」を参照してください。

IoT Hub から Azure Data Explorer への取り込みに関する一般的な情報については、IoT Hub への接続に関する記事を参照してください。

Note

データ接続の作成後にエンキューされたイベントのみが取り込まれたます。

以前の 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 ハブのリソース ID。
    sharedAccessPolicyName iothubforread IoT Hub に接続するデバイスとサービスのアクセス許可を定義する共有アクセス ポリシーの名前。
    consumerGroup $Default ご利用のイベント ハブのコンシューマー グループ。
    location 米国中部 データ接続リソースの場所。
    databaseRouting Multi または Single 接続のデータベース ルーティング。 値を Single に設定すると、このデータ接続のルーティング先は databaseName 設定で指定されたクラスター内の単一のデータベースとなります。 値を Multi に設定すると、Database というインジェスト プロパティを使用して既定のターゲット データベースをオーバーライドできます。 詳細については、「イベント ルーティング」を参照してください。

IoT Hub データ接続を削除する

IoT Hub 接続を削除するには、次のコマンドを実行します。

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