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 nasıl alacağınızı öğreneceksiniz. Azure Event Grid aboneliğini ayarlayan bir Event Grid veri bağlantısı oluşturacaksınız. Event Grid aboneliği, olayları depolama hesabınızdan Azure Event Hubs aracılığıyla Azure Veri Gezgini yönlendirir.
Azure portalında 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 . alma özellikleri.
Önceki SDK sürümlerini temel alan kod örnekleri için arşivlenmiş makaleye bakın.
Önkoşullar
- Azure aboneliği. Ücretsiz bir Azure hesabı oluşturun.
- Azure Veri Gezgini kümesi ve veritabanı. Küme ve veritabanı oluşturma.
- Hedef tablo. Tablo oluşturun veya var olan bir tabloyu kullanın.
- Tablo için alım eşlemesi.
- Depolama hesabı. Bir Event Grid bildirim aboneliği, ,
StorageV2
veya Data Lake Storage 2. Nesil içinBlobStorage
Azure Depolama hesaplarında ayarlanabilir. - Event Grid kaynak sağlayıcısının kaydedilmesini sağlayın.
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.
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.
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-xxxxxxxxxx Kiracı kimliğiniz. Dizin kimliği olarak da bilinir. subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxx Kaynak oluşturmak için kullandığınız abonelik kimliği. clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxxx 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. konum 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 alımı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 SDK'sını kullanarak bir dosyayı Azure Blob Depolama'a yükler. Karşıya yükleme, Event Grid veri bağlantısını tetikleyerek verileri Azure Veri Gezgini'a alır.
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 süreyle koruyun.
Not
Hiyerarşik ad alanı özelliğinin etkinleştirildiği depolama hesapları için bir CopyBlob
işlemden sonra alımı tetikleme desteklenmez.
Önemli
Özel koddan Depolama Olayları oluşturma ve bunları Event Hubs'a göndermeyi kesinlikle önerilmez. Bunu yapmayı seçerseniz, üretilen olayların uygun Depolama Olayları şemasına ve JSON biçimi belirtimlerine kesinlikle uyduğunu doğrulayın.
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);