Share via


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

Azure Data Explorer では、ビッグ データ ストリーミング プラットフォームとイベント インジェスト サービスである Event Hubs からのインジェストが提供されます。 Event Hubs は、1 秒あたり数百万件のイベントをほぼリアルタイムで処理できます。

この記事では、イベント ハブに接続し、Azure Data Explorerにデータを取り込みます。 Event Hubs からの取り込みの概要については、「データ接続のAzure Event Hubs」を参照してください。

Azure Data Explorer Web UI、Azure portal、または ARM テンプレートで接続を作成する方法については、「Event Hubs データ接続を作成する」を参照してください。

以前の SDK バージョンに基づくコード サンプルについては、 アーカイブされた記事を参照してください。

前提条件

イベント ハブ データ接続を作成する

このセクションでは、イベント ハブと Azure Data Explorer テーブルの間に接続を確立します。 この接続が確立されている限り、データはイベント ハブからターゲット テーブルに送信されます。 イベント ハブが別のリソースまたはサブスクリプションに移動された場合は、接続を更新または再作成する必要があります。

  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 eventHubConnectionName = "myeventhubconnect";
    //The event hub that is created as part of the Prerequisites
    var eventHubResourceId = new ResourceIdentifier("/subscriptions/<eventHubSubscriptionId>/resourceGroups/<eventHubResourceGroupName>/providers/Microsoft.EventHub/namespaces/<eventHubNamespaceName>/eventhubs/<eventHubName>");
    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 = KustoEventHubDataFormat.Csv;
    var compression = EventHubMessagesCompressionType.None;
    var databaseRouting = KustoDatabaseRouting.Multi;
    var eventHubConnectionData = new KustoEventHubDataConnection
    {
        EventHubResourceId = eventHubResourceId, ConsumerGroup = consumerGroup,
        Location = location, TableName = tableName, MappingRuleName = mappingRuleName,
        DataFormat = dataFormat, Compression = compression, DatabaseRouting = databaseRouting
    };
    await dataConnections.CreateOrUpdateAsync(WaitUntil.Completed, eventHubConnectionName, eventHubConnectionData);
    
    設定 推奨値 フィールドの説明
    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 ご利用のクラスター内のターゲット データベースの名前。
    dataConnectionName myeventhubconnect データ接続の任意の名前。
    tableName StormEvents ターゲット データベース内のターゲット テーブルの名前。
    mappingRuleName StormEvents_CSV_Mapping ターゲット テーブルに関連付けられている列マッピングの名前。
    dataFormat csv メッセージのデータ形式。
    eventHubResourceId リソース ID インジェスト用のデータを保持しているイベント ハブのリソース ID。
    consumerGroup $Default ご利用のイベント ハブのコンシューマー グループ。
    location 米国中部 データ接続リソースの場所。
    compression Gzip または None データ圧縮の種類。
    databaseRouting Multi または Single 接続のデータベース ルーティング。 値を Single に設定すると、 databaseName 設定で指定されたクラスター内の単一データベースにデータ接続がルーティングされます。 値を Multi に設定すると、Databaseインジェスト プロパティを使用して、既定のターゲット データベースを上書きできます。 詳細については、「イベント ルーティング」を参照してください。

イベント ハブ データ接続を削除する

イベント ハブ接続を削除するには、次のコマンドを実行します。

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