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
インジェスト プロパティを設定します。 詳細については、「インジェスト プロパティ」を参照してください。
前提条件
- Azure サブスクリプション。 無料の Azure アカウントを作成します。
- Azure Data Explorer クラスターとデータベース。 クラスターとデータベースを作成します。
- 宛先テーブル。 テーブルを作成するか、既存のテーブルを使用する。
- テーブルのインジェスト マッピング。
- ストレージ アカウント。 Event Grid 通知サブスクリプションは、
BlobStorage
、StorageV2
、または Data Lake Storage Gen2 に対して Azure Storage アカウントで設定できる。 - Event Grid リソース プロバイダーを登録する。
Event Grid データ接続を作成する
このセクションでは、Event Grid と Azure Data Explorer テーブルの間の接続を確立します。
Azure portal で、Azure Data Explorer クラスターに移動します。
[データ] で [データベース]>[TestDatabase] を選択します。
[設定] で [データ接続] を選択し、[データ接続の追加]>[Event Grid (Blob Storage)] を選択します。
次の情報を使用して、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 インジェスト用のリソースを手動で作成する」を参照してください。 必要に応じて、特定の Event Grid の件名を追跡できます。 次のように、通知用のフィルターを設定します。
- [Prefix](プレフィックス) フィールドはサブジェクトの "リテラル" プレフィックスです。 適用されるパターンは [次の文字列で始まる] で、複数のコンテナー、フォルダー、BLOB を対象にできます。 ワイルドカードは使用できません。
- BLOB コンテナーに対してフィルターを定義するには、フィールドを
/blobServices/default/containers/[container prefix]
のように設定する "必要があります"。 - BLOB プレフィックス (または Azure Data Lake Gen2 のフォルダー) に対してフィルターを定義するには、フィールドを
/blobServices/default/containers/[container name]/blobs/[folder/blob prefix]
のように設定する "必要があります"。
- BLOB コンテナーに対してフィルターを定義するには、フィールドを
- [Suffix](サフィックス) フィールドは、BLOB の "リテラル" サフィックスです。 ワイルドカードは使用できません。
- [Case-Sensitive](大文字と小文字の区別) フィールドは、プレフィックスとサフィックスのフィルターで大文字と小文字が区別されるかどうかを示します
イベントのフィルター処理の詳細については、Blob Storage のイベントに関するページをご覧ください。
- [Prefix](プレフィックス) フィールドはサブジェクトの "リテラル" プレフィックスです。 適用されるパターンは [次の文字列で始まる] で、複数のコンテナー、フォルダー、BLOB を対象にできます。 ワイルドカードは使用できません。
必要に応じて、次の情報に従ってデータ ルーティング設定を指定できます。 データのルーティング設定はすべて指定する必要はありません。 部分的な設定も受け入れられます。
設定 推奨値 フィールドの説明 他のデータベースへのデータのルーティングを許可する (マルチ データベース データ接続) 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
テーブル名とマッピング名では大文字と小文字が区別されます。
必要に応じて、[詳細設定] で、データ接続で使用されるマネージド ID の種類を指定できます。 既定では、[システム割り当て] が選択されています。
[ユーザー割り当て] を選択した場合は、マネージド ID を手動で割り当てる必要があります。 クラスターにまだ割り当てられていないユーザーを選択すると、自動的に割り当てられます。 詳細については、「Azure Data Explorer クラスターのマネージド ID の構成」を参照してください。
[なし] を選択した場合、ストレージ アカウントとイベント ハブは接続文字列を介して認証されます。 この方法は推奨されていません。
[作成] を選択します
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 接続を削除するには、次の手順を実行します。
- クラスターに移動します。 左側のメニューで [データベース] を選択します。 対象となるテーブルを含むデータベースを選択します。
- 左側のメニューで [データ接続] を選択します。 次に、関連する Event Grid データ接続の横にあるチェック ボックスをオンにします。
- 上部のメニュー バーで [削除] を選択します。