Event Grid-adatkapcsolat létrehozása az Azure Data Explorer SDK-kkal

Ebből a cikkből megtudhatja, hogyan lehet blobokat beszúrni a tárfiókból az Azure Data Explorer egy Event Grid-adatkapcsolat használatával. Létre fog hozni egy Event Grid-adatkapcsolatot, amely beállít egy Azure Event Grid-előfizetést. Az Event Grid-előfizetés egy Azure Event Hubs keresztül irányítja át az eseményeket a tárfiókból az Azure Data Explorer.

Ha meg szeretné tudni, hogyan hozhat létre kapcsolatot a Azure Portal vagy egy ARM-sablonnal, olvassa el az Event Grid-adatkapcsolat létrehozása című témakört.

Az Azure Data Explorer Event Gridből való betöltésére vonatkozó általános információkért lásd: Csatlakozás az Event Gridhez.

Megjegyzés

Ha a legjobb teljesítményt szeretné elérni az Event Grid-kapcsolattal, állítsa be a rawSizeBytes betöltési tulajdonságot a blob metaadatain keresztül. További információ: Betöltési tulajdonságok.

A korábbi SDK-verziókon alapuló kódmintákért tekintse meg az archivált cikket.

Előfeltételek

Event Grid-adatkapcsolat létrehozása

Ebben a szakaszban kapcsolatot fog létesíteni az Event Grid és az Azure Data Explorer tábla között.

  1. Telepítse a Microsoft.Azure.Management.Kusto NuGet-csomagot.

  2. Hozzon létre egy Microsoft Entra alkalmazásnevet a hitelesítéshez. Szüksége lesz a címtár (bérlő) azonosítójára, az alkalmazásazonosítóra és az ügyfél titkos kódjára.

  3. Futtassa az alábbi kódot.

    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);
    
    Beállítás Ajánlott érték Mező leírása
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Az Ön bérlőazonosítója. Más néven könyvtárazonosító.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Az erőforrás-létrehozáshoz használt előfizetés-azonosító.
    ügyfél-azonosító xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Annak az alkalmazásnak az ügyfélazonosítója, amely hozzáfér a bérlő erőforrásaihoz.
    clientSecret HelyőrzőClientSecret Az alkalmazás titkos ügyfélkódja, amely hozzáfér a bérlő erőforrásaihoz.
    resourceGroupName testrg A fürtöt tartalmazó erőforráscsoport neve.
    clusterName mykustocluster A fürt neve.
    databaseName mykustodatabase A fürt céladatbázisának neve.
    eventGridConnectionName myeventgridconnect Az adatkapcsolat kívánt neve.
    tableName StormEvents A céltábla neve a céladatbázisban.
    mappingRuleName StormEvents_CSV_Mapping A céltáblához kapcsolódó oszlopleképezés neve.
    dataFormat Csv Az üzenet adatformátuma.
    eventHubResourceId Erőforrás-azonosító Annak az eseményközpontnak az erőforrás-azonosítója, ahol az Event Grid eseményküldésre van konfigurálva.
    storageAccountResourceId Erőforrás-azonosító A betöltéshez szükséges adatokat tároló tárfiók erőforrás-azonosítója.
    consumerGroup $Default Az eseményközpont fogyasztói csoportja.
    location USA középső régiója Az adatkapcsolati erőforrás helye.
    blobStorageEventType Microsoft.Storage.BlobCreated A betöltést kiváltó esemény típusa. A támogatott események a következők: Microsoft.Storage.BlobCreated vagy Microsoft.Storage.BlobRenamed. A blob átnevezése csak az ADLSv2-tárolók esetében támogatott.
    databaseRouting Több vagy egyszemélyes A kapcsolat adatbázis-útválasztása. Ha az értéket Egyetlen értékre állítja, az adatkapcsolatot a rendszer a fürt egyetlen adatbázisába irányítja a databaseName beállításban megadott módon. Ha az értéket Több értékre állítja, felülbírálhatja az alapértelmezett céladatbázist az Adatbázis-betöltési tulajdonság használatával. További információ: Események útválasztása.

Az Event Grid-adatkapcsolat használata

Ez a szakasz bemutatja, hogyan aktiválhat betöltést Azure Blob Storage vagy Azure Data Lake Gen 2-ből a fürtbe a blob létrehozása vagy blob átnevezése után.

Válassza ki a megfelelő lapot a blobok feltöltéséhez használt tárolási SDK típusa alapján.

Az alábbi kódminta a Azure Blob Storage SDK használatával tölt fel egy fájlt a Azure Blob Storage. A feltöltés aktiválja az Event Grid adatkapcsolatot, amely betölti az adatokat az 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();

Megjegyzés

Az Azure Data Explorer nem törli a blobokat a betöltés után. Tartsa meg a blobokat három-öt napig az Azure Blob Storage életciklusának használatával a blobok törlésének kezeléséhez.

Megjegyzés

A művelet utáni CopyBlob betöltés aktiválása nem támogatott azon tárfiókok esetében, amelyeken engedélyezve van a hierarchikus névtér funkció.

Event Grid-adatkapcsolat eltávolítása

Az Event Grid-kapcsolat eltávolításához futtassa a következő parancsot:

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