Bagikan melalui


Membuat koneksi data Event Grid untuk Azure Data Explorer dengan SDK

Dalam artikel ini, Anda mempelajari cara menyerap blob dari akun penyimpanan Anda ke Azure Data Explorer menggunakan koneksi data Event Grid. Anda akan membuat koneksi data Event Grid yang menetapkan langganan Azure Event Grid. Langganan Event Grid merutekan peristiwa dari akun penyimpanan Anda ke Azure Data Explorer melalui Azure Event Hubs.

Untuk mempelajari cara membuat koneksi di portal Azure atau dengan templat ARM, lihat Membuat koneksi data Event Grid.

Untuk informasi umum tentang menyerap ke Azure Data Explorer dari Event Grid, lihat Menyambungkan ke Event Grid.

Catatan

Untuk mencapai performa terbaik dengan koneksi Event Grid, atur rawSizeBytes properti penyerapan melalui metadata blob. Untuk informasi selengkapnya, lihat properti penyerapan.

Untuk sampel kode berdasarkan versi SDK sebelumnya, lihat artikel yang diarsipkan.

Prasyarat

  • Langganan Azure. Membuat akun Azure gratis.
  • Kluster dan database Azure Data Explorer. Membuat kluster dan database.
  • Tabel tujuan. Buat tabel atau gunakan tabel yang sudah ada.
  • Pemetaan penyerapan untuk tabel.
  • Akun penyimpanan. Langganan pemberitahuan Event Grid dapat diatur di akun Azure Storage untuk BlobStorage, , StorageV2atau Data Lake Storage Gen2.
  • Daftarkan penyedia sumber daya Event Grid.

Membuat koneksi data Event Grid

Di bagian ini, Anda akan membuat koneksi antara Event Grid dan tabel Azure Data Explorer Anda.

  1. Instal paket Microsoft.Azure.Management.Kusto NuGet.

  2. Buat perwakilan aplikasi Microsoft Entra untuk digunakan untuk autentikasi. Anda akan memerlukan ID direktori (penyewa), ID aplikasi, dan rahasia klien.

  3. Jalankan kode berikut.

    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 eventGridConnectionName = "myeventgridconnect";
    //The event hub and storage account that are created as part of the Prerequisites
    var eventHubResourceId = new ResourceIdentifier("/subscriptions/<storageAccountSubscriptionId>/resourceGroups/<storageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>");
    var storageAccountResourceId = 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 = KustoEventGridDataFormat.Csv;
    var blobStorageEventType = BlobStorageEventType.MicrosoftStorageBlobCreated;
    var databaseRouting = KustoDatabaseRouting.Multi;
    var eventGridConnectionData = new KustoEventGridDataConnection
    {
        StorageAccountResourceId = storageAccountResourceId, EventHubResourceId = eventHubResourceId,
        ConsumerGroup = consumerGroup, TableName = tableName, Location = location, MappingRuleName = mappingRuleName,
        DataFormat = dataFormat, BlobStorageEventType = blobStorageEventType, DatabaseRouting = databaseRouting
    };
    await dataConnections.CreateOrUpdateAsync(WaitUntil.Completed, eventGridConnectionName, eventGridConnectionData);
    
    Pengaturan Nilai yang disarankan Deskripsi bidang
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID penyewa Anda. Juga dikenal sebagai ID direktori.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID langganan yang Anda gunakan untuk pembuatan sumber daya.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx ID klien aplikasi yang dapat mengakses sumber daya di penyewa Anda.
    clientSecret PlaceholderClientSecret Rahasia klien aplikasi yang dapat mengakses sumber daya di penyewa Anda.
    resourceGroupName testrg Nama grup sumber daya yang berisi kluster Anda.
    clusterName mykustocluster Nama kluster Anda.
    databaseName mykustodatabase Nama database target dalam kluster Anda.
    eventGridConnectionName myeventgridconnect Nama koneksi data yang diinginkan.
    tableName StormEvents Nama tabel target dalam database target.
    mappingRuleName StormEvents_CSV_Mapping Nama pemetaan kolom Anda yang terkait dengan tabel target.
    dataFormat csv Format data pesan.
    eventHubResourceId ID Sumber Daya ID sumber daya hub peristiwa Anda tempat Event Grid dikonfigurasi untuk mengirim peristiwa.
    storageAccountResourceId ID Sumber Daya ID sumber daya akun penyimpanan Anda yang menyimpan data untuk penyerapan.
    consumerGroup $Default Grup konsumen pusat aktivitas Anda.
    lokasi US Tengah Lokasi sumber daya koneksi data.
    blobStorageEventType Microsoft.Storage.BlobDeleted Jenis peristiwa yang memicu konsumsi. Peristiwa yang didukung adalah: Microsoft.Storage.BlobCreated atau Microsoft.Storage.BlobRenamed. Penggantian nama blob hanya didukung untuk penyimpanan ADLSv2.
    databaseRouting Multi atau Tunggal Perutean database untuk koneksi. Jika Anda mengatur nilai ke Tunggal, koneksi data akan dirutekan ke database tunggal di kluster seperti yang ditentukan dalam pengaturan databaseName . Jika Anda mengatur nilai ke Multi, Anda bisa mengambil alih database target default menggunakan properti Penyerapan database. Untuk informasi selengkapnya, lihat Perutean peristiwa.

Menggunakan koneksi data Event Grid

Bagian ini menunjukkan cara memicu penyerapan dari Azure Blob Storage atau Azure Data Lake Gen 2 ke kluster Anda setelah pembuatan blob atau penggantian nama blob.

Pilih tab yang relevan berdasarkan jenis SDK penyimpanan yang digunakan untuk mengunggah blob.

Sampel kode berikut menggunakan Azure Blob Storage SDK untuk mengunggah file ke Azure Blob Storage. Unggahan ini memicu koneksi data Event Grid, yang menyerap data ke 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 = <mappingReference>;
// Create a new container in your storage account.
var azureStorageAccount = CloudStorageAccount.Parse(azureStorageAccountConnectionString);
var blobClient = azureStorageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists();
// Set metadata and upload a file to the blob.
var blob = container.GetBlockBlobReference(blobName);
blob.Metadata.Add("rawSizeBytes", uncompressedSizeInBytes);
blob.Metadata.Add("kustoIngestionMappingReference", mapping);
blob.UploadFromFile(localFileName);
// Confirm success of the upload by listing the blobs in your container.
var blobs = container.ListBlobs();

Catatan

Azure Data Explorer tidak akan menghapus penyerapan postingan blob. Pertahankan blob selama tiga hingga lima hari dengan menggunakan siklus hidup penyimpanan Azure Blob untuk mengelola penghapusan blob.

Catatan

Memicu penyerapan setelah CopyBlob operasi tidak didukung untuk akun penyimpanan yang mengaktifkan fitur namespace hierarkis pada akun tersebut.

Menghapus koneksi data Event Grid

Untuk menghapus koneksi Event Grid, jalankan perintah berikut:

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