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
- Azure-előfizetés. Hozzon létre egy ingyenes Azure-fiókot.
- Egy Azure-Data Explorer-fürt és -adatbázis. Hozzon létre egy fürtöt és egy adatbázist.
- Céltábla. Hozzon létre egy táblát , vagy használjon egy meglévő táblát.
- A tábla betöltési leképezése .
- Egy tárfiók. Az Event Grid értesítési előfizetése beállítható az Azure Storage-fiókokban
BlobStorage
a ,StorageV2
, vagy Data Lake Storage Gen2 esetében. - Regisztrálja az Event Grid erőforrás-szolgáltatót.
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.
Telepítse a Microsoft.Azure.Management.Kusto NuGet-csomagot.
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.
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);
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: