Dela via


Skapa en Event Grid-dataanslutning för Azure Data Explorer med SDK:er

I den här artikeln får du lära dig hur du matar in blobar från ditt lagringskonto till Azure Data Explorer med hjälp av en Event Grid-dataanslutning. Du skapar en Event Grid-dataanslutning som anger en Azure Event Grid prenumeration. Event Grid-prenumerationen dirigerar händelser från ditt lagringskonto till Azure Data Explorer via en Azure Event Hubs.

Information om hur du skapar anslutningen i Azure Portal eller med en ARM-mall finns i Skapa en Event Grid-dataanslutning.

Allmän information om hur du matar in i Azure Data Explorer från Event Grid finns i Ansluta till Event Grid.

Anteckning

För att uppnå bästa prestanda med Event Grid-anslutningen anger du inmatningsegenskapen rawSizeBytes via blobmetadata. Mer information finns i inmatningsegenskaper.

Kodexempel som baseras på tidigare SDK-versioner finns i den arkiverade artikeln.

Förutsättningar

Skapa en Event Grid-dataanslutning

I det här avsnittet upprättar du en anslutning mellan Event Grid och din Azure Data Explorer-tabell.

  1. Installera NuGet-paketet Microsoft.Azure.Management.Kusto.

  2. Skapa ett Microsoft Entra programhuvudnamn som ska användas för autentisering. Du behöver katalog-ID,program-ID och klienthemlighet.

  3. Kör följande kod.

    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);
    
    Inställning Föreslaget värde Fältbeskrivning
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Ditt klientorganisations-ID. Kallas även katalog-ID.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Det prenumerations-ID som du använder för att skapa resurser.
    ClientID xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Klient-ID för programmet som kan komma åt resurser i din klientorganisation.
    clientSecret PlatshållareClientSecret Klienthemligheten för programmet som kan komma åt resurser i din klientorganisation.
    resourceGroupName testrg Namnet på resursgruppen som innehåller klustret.
    clusterName mykustocluster Namnet på klustret.
    databaseName mykustodatabase Namnet på måldatabasen i klustret.
    eventGridConnectionName myeventgridconnect Önskat namn på dataanslutningen.
    tableName StormEvents Namnet på måltabellen i måldatabasen.
    mappingRuleName StormEvents_CSV_Mapping Namnet på din kolumnmappning som är relaterad till måltabellen.
    dataFormat Csv Meddelandets dataformat.
    eventHubResourceId Resurs-ID Resurs-ID:t för din händelsehubb där Event Grid har konfigurerats för att skicka händelser.
    storageAccountResourceId Resurs-ID Resurs-ID för ditt lagringskonto som innehåller data för inmatning.
    consumerGroup $Default Konsumentgruppen för din händelsehubb.
    location USA, centrala Platsen för dataanslutningsresursen.
    blobStorageEventType Microsoft.Storage.BlobSkapad Den typ av händelse som utlöser inmatning. Händelser som stöds är: Microsoft.Storage.BlobCreated eller Microsoft.Storage.BlobRenamed. Blobbyte stöds endast för ADLSv2-lagring.
    databaseRouting Flera eller enstaka Databasroutningen för anslutningen. Om du ställer in värdet på Enkel dirigeras dataanslutningen till en enskild databas i klustret enligt inställningen databaseName . Om du anger värdet till Multi kan du åsidosätta standardmåldatabasen med hjälp av egenskapen Databasinmatning. Mer information finns i Händelseroutning.

Använda Event Grid-dataanslutningen

Det här avsnittet visar hur du utlöser inmatning från Azure Blob Storage eller Azure Data Lake Gen 2 till klustret efter att bloben har skapats eller blobbytet.

Välj relevant flik baserat på vilken typ av lagrings-SDK som används för att ladda upp blobar.

Följande kodexempel använder Azure Blob Storage SDK för att ladda upp en fil till Azure Blob Storage. Uppladdningen utlöser Event Grid-dataanslutningen, som matar in data i 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();

Anteckning

Azure Data Explorer tar inte bort blobarna efter inmatning. Behåll blobarna i tre till fem dagar med hjälp av Azure Blob Storage-livscykeln för att hantera borttagning av blobar.

Anteckning

Utlösande inmatning efter en CopyBlob åtgärd stöds inte för lagringskonton som har funktionen hierarkisk namnrymd aktiverad på dem.

Ta bort en Event Grid-dataanslutning

Om du vill ta bort Event Grid-anslutningen kör du följande kommando:

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