次の方法で共有


Azure Data Explorer 用に Event Grid データ接続を作成する

この記事では、Event Grid データ接続を使用して、ストレージ アカウントから Azure Data Explorer に BLOB を取り込む方法について説明します。 Azure Event Grid サブスクリプションを設定する Event Grid データ接続を作成します。 Event Grid サブスクリプションは、Azure Event Hubs 経由でストレージアカウントから Azure Data Explorer にイベントをルーティングします。

インジェストでは、最大で 6 GB のファイル サイズがサポートされます。 100 MB から 1 GB の間のファイルを取り込むことをお勧めします。

Kusto SDK を使用して接続を作成する方法については、「SDK を使用して Event Grid データ接続を作成する」を参照してください。

Event Grid から Azure Data Explorer へのインジェストに関する一般的な情報については、Event Grid への接続に関する記事を参照してください。

Event Grid 接続で最高のパフォーマンスを得るには、BLOB メタデータで rawSizeBytes インジェスト プロパティを設定します。 詳細については、インジェストのプロパティに関する記事を参照してください。

前提条件

Event Grid データ接続を作成する

このセクションでは、Event Grid と Azure Data Explorer テーブル間の接続を確立します。

  1. Azure portal で、Azure Data Explorer クラスターに移動します。

  2. [データ] セクションで [データベース]>[TestDatabase] を選択します。

    クラスターのデータベース セクションのスクリーンショット。含まれているデータベースの一覧が表示されています。

  3. [設定] セクションで [データ接続] を選択した後、[データ接続の追加]>[Event Grid (BLOB ストレージ)] を選択します。

    データ接続ページのスクリーンショット。データ接続を追加するオプションが強調表示されています。

  4. Event Grid データ接続フォームに次の情報を入力します。

    Event Grid ペインのスクリーンショット。データ接続の詳細が表示されています。

    設定 推奨値 フィールドの説明
    データ接続名 テストグリッド接続 Azure Data Explorer で作成する接続の名前。 データ接続名に含めることができるのは、英数字、ダッシュ、ピリオドのみで、40 文字以下で指定する必要があります。
    ストレージ アカウントのサブスクリプション サブスクリプション ID ストレージ アカウントが存在するサブスクリプション ID。
    イベントの種類 作成された BLOB または名前変更された BLOB インジェストをトリガーするイベントの種類。 名前変更された BLOB は、ADLSv2 ストレージに対してのみサポートされています。 BLOB を名前変更するには、Azure portal で BLOB に移動し、その BLOB を右クリックして、[名前の変更] を選択します。 サポートされる種類は、Microsoft.Storage.BlobCreated または Microsoft.Storage.BlobRenamed。
    ストレージ アカウント gridteststorage1 作成済みのストレージ アカウントの名前。
    リソースの作成 自動 自動リソース作成をオンにすると、Azure Data Explorer が Event Grid サブスクリプション、Event Hubs 名前空間、Event Hubs を自動的に作成します。 オフにする場合は、これらのリソースを手動で作成し、データ接続を確実に構成する必要があります。 「Event Grid インジェスト用のリソースを手動で作成する」を参照してください。
    1. 任意で、特定の Event Grid のサブジェクトを追跡できます。 次のように、通知用のフィルターを設定します。

      • [プレフィックス] フィールドには、サブジェクトのリテラル プレフィックスを指定します。 適用されるパターンは [指定の値で始まる] であるため、複数のコンテナー、フォルダー、BLOB を対象にできます。 ワイルドカードは使用できません。
        • BLOB コンテナーに対してフィルターを定義するには、フィールドを のように設定する "/blobServices/default/containers/[container prefix]"。
        • BLOB プレフィックス (または Azure Data Lake Gen2 のフォルダー) に対してフィルターを定義するには、フィールドを のように設定する "/blobServices/default/containers/[container name]/blobs/[folder/blob prefix]"。
      • [サフィックス] フィールドには、BLOB のリテラル サフィックスを指定します。 ワイルドカードは使用できません。
      • [大文字と小文字の区別] フィールドは、プレフィックスとサフィックスのフィルターで大文字と小文字が区別されるかどうかを示します。

      イベントのフィルター処理の詳細については、Blob Storage のイベントに関する記事を参照してください。

    2. 任意で、次の情報に基づいてデータ ルーティング設定を指定できます。 データのルーティング設定はすべて指定する必要はありません。 部分的な設定も受け入れられます。

      設定 推奨値 フィールドの説明
      他のデータベースへのデータのルーティングを許可する (マルチ データベース データ接続) 許可しないでください このオプションは、データ接続に関連付けられている既定のターゲット データベースをオーバーライドする場合にオンにします。 データベースのルーティングの詳細については、「イベント ルーティング」を参照してください。
      テーブル名 TestTable TestDatabase に作成したテーブル。
      データ形式 JSON サポートされている形式は、APACHEAVRO、Avro、CSV、JSON、ORC、PARQUET、PSV、RAW、SCSV、SOHSV、TSV、TSVE、TXT、W3CLOG です。 サポートされている圧縮オプションは、zip と gzip です。
      マッピング名 TestTable_mapping TestDatabase に作成したマッピング。これにより、受信データを TestTable の列名とデータ型にマッピングします。 指定されていない場合、テーブルのスキーマから派生した ID のデータ マッピングが自動生成されます。
      形式エラーを無視する 無視する JSON データの形式エラーを無視する場合は、このオプションをオンにします。

      テーブル名とマッピング名では大文字と小文字が区別されます。

    3. 任意で、データ接続で使用するマネージド ID の種類[詳細設定] で指定できます。 既定では、[システム割り当て] が選択されています。

      [ユーザー割り当て] を選択した場合は、マネージド ID を手動で割り当てる必要があります。 クラスターにまだ割り当てられていないユーザーを選択した場合は、自動的に割り当てられます。 詳細については、Azure Data Explorer クラスターでマネージド ID の構成に関する記事を参照してください。

      [なし] を選択すると、ストレージ アカウントと Event Hub は接続文字列によって認証されます。 この方法はお勧めできません。

      詳細設定セクションのスクリーンショット。データ接続に使用できるマネージド ID の種類が表示されています。

  5. [作成] を選択します。

Event Grid データ接続を使用する

このセクションでは、BLOB の作成または名前変更後に、Azure Blob Storage または Azure Data Lake Gen 2 からクラスターへのインジェストをトリガーする方法について説明します。

BLOB のアップロードに使用するストレージ SDK の種類に応じて、該当するタブを選択します。

次のコード サンプルは、Azure Blob Storage SDK を使用してファイルを Azure Blob Storage にアップロードする例です。 このアップロードにより Event Grid データ接続がトリガーされ、データが Azure Data Explorer に取り込まれます。

var azureStorageAccountConnectionString = <storage_account_connection_string>;
var containerName = <container_name>;
var blobName = <blob_name>;
var localFileName = <file_to_upload>;
var uncompressedSizeInBytes = <uncompressed_size_in_bytes>;
var mapping = <mapping_reference>;
// Create a new container if it not already exists.
var azureStorageAccount = new BlobServiceClient(azureStorageAccountConnectionString);
var container = azureStorageAccount.GetBlobContainerClient(containerName);
container.CreateIfNotExists();
// Define blob metadata and uploading options.
IDictionary<String, String> metadata = new Dictionary<string, string>();
metadata.Add("rawSizeBytes", uncompressedSizeInBytes);
metadata.Add("kustoIngestionMappingReference", mapping);
var uploadOptions = new BlobUploadOptions
{
    Metadata = metadata,
};
// Upload the file.
var blob = container.GetBlobClient(blobName);
blob.Upload(localFileName, uploadOptions);

Azure Data Explorer では、BLOB 投稿のインジェストは削除されません。 BLOB の削除を管理する Azure Blob Storage のライフサイクルを使用して、BLOB を 3 から 5 日間保持します。

階層型名前空間機能が有効になっているストレージ アカウントでは、CopyBlob 操作後のインジェスト トリガーはサポートされていません。

重要

カスタム コードからストレージ イベントを生成して Event Hubs に送信しないことを強くお勧めします。 どうしても行う場合は、生成するイベントが適切なストレージ イベント スキーマと JSON 形式仕様に厳密に準拠していることを確認してください。

Event Grid データ接続を削除する

Azure portal から Event Grid 接続を削除するには、以下の手順を実行します。

  1. クラスターに移動します。 左側のメニューから [データベース] を選択します。 次に、ターゲット テーブルを含むデータベースを選択します。
  2. 左側のメニューから [データ接続] を選択します。 次に、該当する Event Grid データ接続の横にあるチェックボックスをオンにします。
  3. 上部のメニュー バーで、[削除] を選択します。