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

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

Note

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

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

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

Note

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

前提条件

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

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

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

  2. [データ][データベース]>[TestDatabase] を選択します。

    クラスターに含まれるデータベースの一覧を示すクラスターの [データベース] セクションのスクリーンショット。

  3. [設定][データ接続] を選択し、[データ接続の追加]>[Event Grid (Blob Storage)] を選択します。

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

  4. 次の情報を使用して、Event Grid データ接続の詳細を入力します。

    データ接続の詳細を示す Event Grid ペインのスクリーンショット。

    設定 推奨値 フィールドの説明
    データ接続名 test-grid-connection 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 の件名を追跡できます。 次のように、通知用のフィルターを設定します。

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

      イベントのフィルター処理の詳細については、Blob Storage のイベントに関するページをご覧ください。

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

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

      Note

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

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

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

      [なし] を選択した場合、ストレージ アカウントとイベント ハブは接続文字列を介して認証されます。 この方法は推奨されていません。

      データ接続に使用できるマネージド ID の種類を示す [詳細設定] セクションのスクリーンショット。

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

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

このセクションでは、BLOB の作成または 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);

Note

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

Note

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

重要

カスタム コードからストレージ イベントを生成し、Event Hubs に送信することは、極力避けてください。 そうする場合は、生成されたイベントが適切なストレージ イベント スキーマと JSON 形式の仕様に厳密に準拠していることを確認してください。

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

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

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