Share via


SDK'larla Azure Veri Gezgini için Event Grid veri bağlantısı oluşturma

Bu makalede, Event Grid veri bağlantısı kullanarak depolama hesabınızdaki blobları Azure Veri Gezgini'a almayı öğreneceksiniz. Azure Event Grid aboneliği ayarlayan bir Event Grid veri bağlantısı oluşturacaksınız. Event Grid aboneliği, depolama hesabınızdaki olayları bir Azure Event Hubs aracılığıyla Azure Veri Gezgini yönlendirir.

Azure portal veya ARM şablonuyla bağlantı oluşturmayı öğrenmek için bkz. Event Grid veri bağlantısı oluşturma.

Event Grid'den Azure Veri Gezgini alma hakkında genel bilgi için bkz. Event Grid'e bağlanma.

Not

Event Grid bağlantısıyla en iyi performansı elde etmek için blob meta verileri aracılığıyla alma özelliğini ayarlayın rawSizeBytes . Daha fazla bilgi için bkz. alım özellikleri.

Önceki SDK sürümlerini temel alan kod örnekleri için arşivlenmiş makaleye bakın.

Önkoşullar

Event Grid veri bağlantısı oluşturma

Bu bölümde Event Grid ile Azure Veri Gezgini tablonuz arasında bir bağlantı kuracaksınız.

  1. Microsoft.Azure.Management.Kusto NuGet paketini yükleyin.

  2. Kimlik doğrulaması için kullanılacak bir Microsoft Entra uygulama sorumlusu oluşturun. Dizin (kiracı) kimliği, uygulama kimliği ve istemci gizli dizisi gerekir.

  3. Aşağıdaki kodu çalıştırın.

    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);
    
    Ayar Önerilen değer Alan açıklaması
    tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Kiracı kimliğiniz. Dizin kimliği olarak da bilinir.
    subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Kaynak oluşturmak için kullandığınız abonelik kimliği.
    clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx Kiracınızdaki kaynaklara erişebilen uygulamanın istemci kimliği.
    clientSecret PlaceholderClientSecret Kiracınızdaki kaynaklara erişebilen uygulamanın istemci gizli dizisi.
    resourceGroupName testrg Kümenizi içeren kaynak grubunun adı.
    clusterName mykustocluster Kümenizin adı.
    veritabanıAdı mykustodatabase Kümenizdeki hedef veritabanının adı.
    eventGridConnectionName myeventgridconnect Veri bağlantınızın istenen adı.
    tableName StormEvents Hedef veritabanındaki hedef tablonun adı.
    mappingRuleName StormEvents_CSV_Mapping Hedef tabloyla ilgili sütun eşlemenizin adı.
    Dataformat Csv İletinin veri biçimi.
    eventHubResourceId Kaynak kimliği Event Grid'in olayları gönderecek şekilde yapılandırıldığı olay hub'ınızın kaynak kimliği.
    storageAccountResourceId Kaynak kimliği Veri alımı için verileri tutan depolama hesabınızın kaynak kimliği.
    consumerGroup $Default Olay hub'ınızın tüketici grubu.
    location Central US Veri bağlantısı kaynağının konumu.
    blobStorageEventType Microsoft.Storage.BlobCreated Alımı tetikleyen olay türü. Desteklenen olaylar şunlardır: Microsoft.Storage.BlobCreated veya Microsoft.Storage.BlobRenamed. Blob yeniden adlandırma yalnızca ADLSv2 depolama için desteklenir.
    databaseRouting Çoklu veya Tek Bağlantı için veritabanı yönlendirmesi. Değeri Tek olarak ayarlarsanız, veri bağlantısı databaseName ayarında belirtildiği gibi kümedeki tek bir veritabanına yönlendirilir. Değeri Multi olarak ayarlarsanız, Veritabanıalımı özelliğini kullanarak varsayılan hedef veritabanını geçersiz kılabilirsiniz. Daha fazla bilgi için bkz . Olay yönlendirme.

Event Grid veri bağlantısını kullanma

Bu bölümde blob oluşturma veya blob yeniden adlandırma sonrasında Azure Blob Depolama veya Azure Data Lake 2. Nesil'den kümenize veri alımının nasıl tetiklenmesi gösterilmektedir.

Blobları karşıya yüklemek için kullanılan depolama SDK'sının türüne göre ilgili sekmeyi seçin.

Aşağıdaki kod örneği, Azure Blob Depolama'a dosya yüklemek için Azure Blob Depolama SDK'sını kullanır. Karşıya yükleme, Verileri Azure Veri Gezgini'a alan Event Grid veri bağlantısını tetikler.

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

Not

Azure Veri Gezgini alma sonrasında blobları silmez. Blob silmeyi yönetmek için Azure Blob depolama yaşam döngüsünü kullanarak blobları üç ile beş gün boyunca koruyun.

Not

Bir CopyBlob işlemden sonra alımı tetikleme, hiyerarşik ad alanı özelliğinin etkinleştirildiği depolama hesapları için desteklenmez.

Event Grid veri bağlantısını kaldırma

Event Grid bağlantısını kaldırmak için aşağıdaki komutu çalıştırın:

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