Megosztás a következőn keresztül:


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

Ebből a cikkből megtudhatja, hogyan lehet blobokat beszúrni a tárfiókból az Azure Data Explorerbe 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 Hubson keresztül irányítja át az eseményeket a tárfiókból az Azure Data Explorerbe.

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

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

Megjegyzés:

Az Event Grid-kapcsolaton keresztüli legjobb teljesítmény eléréséhez állítsa be a rawSizeBytes betöltési tulajdonságot a blob metaadatain keresztül. További információkért lásd a bevitel tulajdonságait.

A korábbi SDK-verziókon alapuló kódmintákért lásd 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 a következő 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);
    
    Setting Ajánlott érték Mező leírása
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx Az Ön bérlőazonosítója. Más néven könyvtárazonosító.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx Az erőforrás-létrehozáshoz használt előfizetés-azonosító.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx Annak az alkalmazásnak az ügyfélazonosítója, amely hozzáfér a bérlő erőforrásaihoz.
    clientSecret PlaceholderClientSecret Az alkalmazás ügyfélkulcsa, amely hozzáférést biztosít a bérlői környezet erőforrásaihoz.
    resourceGroupName testrg A fürtöt tartalmazó erőforráscsoport neve.
    klaszternév mykustocluster A klaszter 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.
    leképezési szabály neve ViharEsemények_CSV_Térkép A céltáblához kapcsolódó oszlopleképezés neve.
    adatformátum csv Az üzenet adatformátuma.
    eventHubResourceId Erőforrás-azonosító Az eseményközpont erőforrás-azonosítója, ahol az Event Grid események küldésére van konfigurálva.
    storageAccountResourceId Erőforrás-azonosító A betöltéshez szükséges adatokat tartalmazó tárfiók erőforrás-azonosítója.
    fogyasztói csoport $Alapértelmezett Az eseményközpont fogyasztói csoportja.
    hely USA középső régiója Az adatkapcsolati erőforrás helye.
    blob tárolási eseménytípus Microsoft.Storage.BlobCreated Az esemény típusa, amely bemenetet vált ki. A támogatott események a következők: Microsoft.Storage.BlobCreated vagy Microsoft.Storage.BlobRenamed. A blob átnevezése csak az ADLSv2 storage esetében támogatott.
    adatbázis-irányítás Több - vagy egyszemélyes A kapcsolat adatbázis-útválasztása. Ha az értéket Single értékre állítja, az adatkapcsolatot a fürtön belül a databaseName beállításban megadott adatbázishoz irányítják. Ha multi értékre állítja az értéket, 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 lehet indítani az adatbetöltést az Azure Blob Storage-ból vagy az Azure Data Lake Gen 2-ből a fürtbe a blob létrehozását vagy átnevezését követően.

Válassza ki a megfelelő lapot a blobok feltöltéséhez használt tárolási SDK típusától függően.

Az alábbi kódminta az Azure Blob Storage SDK használatával tölt fel egy fájlt az Azure Blob Storage-ba. A feltöltés aktiválja az Event Grid adatkapcsolatot, amely betölti az adatokat az Azure Data Explorerbe.

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 3–5 napig az Azure Blob Storage életciklusának használatával a blobok törlésének kezeléséhez.

Megjegyzés:

A CopyBlob művelet utáni bevitel aktiválása nem lehetséges azoknál a tárfiókoknál, amelyeknél engedélyezve van a hierarchikus névtér funkció.

Fontos

Nagy mértékben elriasztjuk a Storage-események egyéni kódból való létrehozását és az Event Hubsba való küldését. Ha ezt választja, győződjön meg arról, hogy a létrehozott események szigorúan megfelelnek a megfelelő Storage Events-sémának és A JSON formátum specifikációinak.

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