使用 C# 为 Azure 数据资源管理器创建 IoT 中心数据连接

Azure 数据资源管理器是一项快速且高度可缩放的数据探索服务,适用于日志和遥测数据。 Azure 数据资源管理器提供了从事件中心、IoT 中心和写入 blob 容器的 blob 引入数据(数据加载)的功能。

在本文中,你将使用 C# 为 Azure 数据资源管理器创建 IoT 中心数据连接。

先决条件

安装 C# NuGet

身份验证

若要运行以下示例,需要可以访问资源的 Azure Active Directory (Azure AD) 应用程序和服务主体。 若要创建免费的 Azure AD 应用程序并在订阅级别添加角色分配,请参阅创建 Azure AD 应用程序。 还需要目录(租户)ID、应用程序 ID 和客户端密码。

添加 IoT 中心数据连接

以下示例演示如何以编程方式添加 IoT 中心数据连接。 请参阅将 Azure 数据资源管理器表连接到 IoT 中心,了解如何使用 Azure 门户添加 IoT 中心数据连接。

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 authenticationContext = new AuthenticationContext($"https://login.chinacloudapi.cn/{tenantId}");
var credential = new ClientCredential(clientId, clientSecret);
var result = await authenticationContext.AcquireTokenAsync(resource: "https://management.core.chinacloudapi.cn/", clientCredential: credential);

var credentials = new TokenCredentials(result.AccessToken, result.AccessTokenType);

var kustoManagementClient = new KustoManagementClient(credentials)
{
    SubscriptionId = subscriptionId
};

var resourceGroupName = "testrg";
//The cluster and database that are created as part of the Prerequisites
var clusterName = "mykustocluster";
var databaseName = "mykustodatabase";
var dataConnectionName = "myeventhubconnect";
//The IoT hub that is created as part of the Prerequisites
var iotHubResourceId = "/subscriptions/xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx/resourceGroups/xxxxxx/providers/Microsoft.Devices/IotHubs/xxxxxx";
var sharedAccessPolicyName = "iothubforread";
var consumerGroup = "$Default";
var location = "China East 2";
//The table and column mapping are created as part of the Prerequisites
var tableName = "StormEvents";
var mappingRuleName = "StormEvents_CSV_Mapping";
var dataFormat = DataFormat.CSV;
var databaseRouting = "Multi";

await kustoManagementClient.DataConnections.CreateOrUpdate(resourceGroupName, clusterName, databaseName, dataConnectionName,
            new IotHubDataConnection(iotHubResourceId, consumerGroup, sharedAccessPolicyName, tableName: tableName, location: location, mappingRuleName: mappingRuleName, dataFormat: dataFormat, databaseRouting: databaseRouting));
设置 建议的值 字段说明
tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 租户 ID。 也称为目录 ID。
subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 用于创建资源的订阅 ID。
clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 可以访问租户中资源的应用程序的客户端 ID。
clientSecret PlaceholderClientSecret 可以访问租户中资源的应用程序的客户端密码。
resourceGroupName testrg 包含群集的资源组的名称。
clusterName mykustocluster 群集的名称。
databaseName mykustodatabase 群集中目标数据库的名称。
dataConnectionName myeventhubconnect 所需的数据连接名称。
tableName StormEvents 目标数据库中目标表的名称。
mappingRuleName StormEvents_CSV_Mapping 与目标表相关的列映射的名称。
dataFormat csv 消息的数据格式。
iotHubResourceId 资源 ID 包含要引入的数据的 IoT 中心的资源 ID。
sharedAccessPolicyName iothubforread 共享访问策略的名称,这些策略定义设备与服务连接到 IoT 中心所需的权限。
consumerGroup $Default 事件中心的使用者组。
location 中国东部 2 数据连接资源的位置。
databaseRouting 多或单 连接的数据库路由。 如果将此值设置为“单”,数据连接将按“databaseName”设置中指定的那样路由到群集中的单个数据库。 如果将此值设置为“多”,可使用数据库引入属性重写默认目标数据库。 有关详细信息,请参阅事件路由

清理资源

若要删除数据连接,请使用以下命令:

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