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. [データ] で、[データベース] [テスト][>データベース] の順に選択します。

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

  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 コンテナーに対してフィルターを定義するには、フィールドを のように設定する "必要があります"。
        • BLOB プレフィックス (または Azure Data Lake Gen2 のフォルダー) に対してフィルターを定義するには、フィールドを のように設定する "必要があります"。
      • [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 データ マッピング が自動生成されます。
      書式エラーを無視する 無視 JSON データ形式の形式エラーを無視する場合は、このオプションをオンに切り替えます。

      注意

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

    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);

注意

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

注意

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

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

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

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