Een Event Grid-gegevensverbinding maken voor Azure Data Explorer met SDK's
In dit artikel leert u hoe u blobs uit uw opslagaccount opneemt in Azure Data Explorer met behulp van een Event Grid-gegevensverbinding. U maakt een Event Grid-gegevensverbinding waarmee een Azure Event Grid-abonnement wordt ingesteld. Het Event Grid-abonnement routeert gebeurtenissen van uw opslagaccount naar Azure Data Explorer via een Azure Event Hubs.
Zie Een Event Grid-gegevensverbinding maken voor meer informatie over het maken van de verbinding in de Azure Portal of met een ARM-sjabloon.
Zie Verbinding maken met Event Grid voor algemene informatie over het opnemen in Azure Data Explorer vanuit Event Grid.
Notitie
Als u de beste prestaties wilt bereiken met de Event Grid-verbinding, stelt u de rawSizeBytes
opname-eigenschap in via de blobmetagegevens. Zie opname-eigenschappen voor meer informatie.
Zie het gearchiveerde artikel voor codevoorbeelden op basis van eerdere SDK-versies.
Vereisten
- Een Azure-abonnement. Maak een gratis Azure-account.
- Een Azure Data Explorer-cluster en -database. Maak een cluster en database.
- Een doeltabel. Maak een tabel of gebruik een bestaande tabel.
- Een opnametoewijzing voor de tabel.
- Een opslagaccount. Er kan een Event Grid-meldingsabonnement worden ingesteld voor Azure Storage-accounts voor
BlobStorage
,StorageV2
of Data Lake Storage Gen2. - Laat de Event Grid-resourceprovider registreren.
Een Event Grid-gegevensverbinding maken
In deze sectie brengt u een verbinding tot stand tussen Event Grid en uw Azure Data Explorer-tabel.
Installeer het NuGet-pakket Microsoft.Azure.Management.Kusto.
Maak een Microsoft Entra toepassingsprincipal voor verificatie. U hebt de map-id (tenant), de toepassings-id en het clientgeheim nodig.
Voer de volgende code uit.
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);
Instelling Voorgestelde waarde Beschrijving van veld tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Uw tenant-id. Ook wel bekend als map-id. subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx De abonnements-id die u gebruikt voor het maken van resources. clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx De client-id van de toepassing die toegang heeft tot resources in uw tenant. clientSecret PlaceholderClientSecret Het clientgeheim van de toepassing die toegang heeft tot resources in uw tenant. resourceGroupName testrg De naam van de resourcegroep die uw cluster bevat. clusterName mykustocluster De naam van uw cluster. databaseName mykustodatabase De naam van de doeldatabase in uw cluster. eventGridConnectionName myeventgridconnect De gewenste naam van uw gegevensverbinding. tableName StormEvents De naam van de doeltabel in de doeldatabase. mappingRuleName StormEvents_CSV_Mapping De naam van de kolomtoewijzing die is gerelateerd aan de doeltabel. dataFormat Csv De gegevensindeling van het bericht. eventHubResourceId Resource-id De resource-id van uw Event Hub waar Event Grid is geconfigureerd voor het verzenden van gebeurtenissen. storageAccountResourceId Resource-id De resource-id van uw opslagaccount met de gegevens voor opname. consumerGroup $Default De consumentengroep van uw Event Hub. location US - centraal De locatie van de gegevensverbindingsresource. blobStorageEventType Microsoft.Storage.BlobCreated Het type gebeurtenis dat opname activeert. Ondersteunde gebeurtenissen zijn: Microsoft.Storage.BlobCreated of Microsoft.Storage.BlobRenamed. Het wijzigen van de naam van een blob wordt alleen ondersteund voor ADLSv2-opslag. databaseRouting Multi of Single De databaseroutering voor de verbinding. Als u de waarde instelt op Single, wordt de gegevensverbinding doorgestuurd naar één database in het cluster, zoals opgegeven in de instelling databaseName . Als u de waarde instelt op Multi, kunt u de standaarddoeldatabase overschrijven met behulp van de eigenschap Databaseopname. Zie Gebeurtenissenroutering voor meer informatie.
De Event Grid-gegevensverbinding gebruiken
In deze sectie wordt beschreven hoe u opname van Azure Blob Storage of Azure Data Lake Gen 2 naar uw cluster activeert na het maken of wijzigen van de naam van een blob.
Selecteer het relevante tabblad op basis van het type opslag-SDK dat wordt gebruikt voor het uploaden van blobs.
In het volgende codevoorbeeld wordt de Azure Blob Storage SDK gebruikt om een bestand te uploaden naar Azure Blob Storage. De upload activeert de Event Grid-gegevensverbinding, die de gegevens opneemt in 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();
Notitie
Azure Data Explorer verwijdert de blobs niet na opname. Bewaar de blobs drie tot vijf dagen met behulp van de levenscyclus van Azure Blob Storage om het verwijderen van blobs te beheren.
Notitie
Het activeren van opname na een CopyBlob
bewerking wordt niet ondersteund voor opslagaccounts waarvoor de hiërarchische naamruimtefunctie is ingeschakeld.
Een Event Grid-gegevensverbinding verwijderen
Voer de volgende opdracht uit om de Event Grid-verbinding te verwijderen:
kustoManagementClient.DataConnections.Delete(resourceGroupName, clusterName, databaseName, dataConnectionName);