使用 Python 为 Azure 数据资源管理器创建 IoT 中心数据连接(预览版)

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

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

先决条件

安装 Python 包

要为 Azure 数据资源管理器 (Kusto) 安装 Python 包,请打开其路径中包含 Python 的命令提示符。 运行以下命令:

pip install azure-common
pip install azure-mgmt-kusto

身份验证

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

添加 IoT 中心数据连接

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

from azure.mgmt.kusto import KustoManagementClient
from azure.mgmt.kusto.models import IotHubDataConnection
from azure.common.credentials import ServicePrincipalCredentials

#Directory (tenant) ID
tenant_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
#Application ID
client_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
#Client Secret
client_secret = "xxxxxxxxxxxxxx"
subscription_id = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"
credentials = ServicePrincipalCredentials(
        client_id=client_id,
        secret=client_secret,
        tenant=tenant_id
    )
kusto_management_client = KustoManagementClient(credentials, subscription_id)

resource_group_name = "testrg"
#The cluster and database that are created as part of the Prerequisites
cluster_name = "mykustocluster"
database_name = "mykustodatabase"
data_connection_name = "myeventhubconnect"
#The IoT hub that is created as part of the Prerequisites
iot_hub_resource_id = "/subscriptions/xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx/resourceGroups/xxxxxx/providers/Microsoft.Devices/IotHubs/xxxxxx";
shared_access_policy_name = "iothubforread"
consumer_group = "$Default"
location = "China East 2"
#The table and column mapping that are created as part of the Prerequisites
table_name = "StormEvents"
mapping_rule_name = "StormEvents_CSV_Mapping"
data_format = "csv"
database_routing = "Multi"

#Returns an instance of LROPoller, check https://docs.microsoft.com/python/api/msrest/msrest.polling.lropoller?view=azure-python
poller = kusto_management_client.data_connections.create_or_update(resource_group_name=resource_group_name, cluster_name=cluster_name, database_name=database_name, data_connection_name=data_connection_name,
                                            parameters=IotHubDataConnection(iot_hub_resource_id=iot_hub_resource_id, shared_access_policy_name=shared_access_policy_name,
                                                                                consumer_group=consumer_group, table_name=table_name, location=location, mapping_rule_name=mapping_rule_name, data_format=data_format, database_routing=database_routing))
设置 建议的值 字段说明
tenant_id xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 租户 ID。 也称为目录 ID。
subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 用于创建资源的订阅 ID。
client_id xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 可以访问租户中资源的应用程序的客户端 ID。
client_secret xxxxxxxxxxxxxx 可以访问租户中资源的应用程序的客户端密码。
resource_group_name testrg 包含群集的资源组的名称。
cluster_name mykustocluster 群集的名称。
database_name mykustodatabase 群集中目标数据库的名称。
data_connection_name myeventhubconnect 所需的数据连接名称。
table_name StormEvents 目标数据库中目标表的名称。
mapping_rule_name StormEvents_CSV_Mapping 与目标表相关的列映射的名称。
data_format csv 消息的数据格式。
iot_hub_resource_id 资源 ID 包含要引入的数据的 IoT 中心的资源 ID。
shared_access_policy_name iothubforread 共享访问策略的名称,这些策略定义设备与服务连接到 IoT 中心所需的权限。
consumer_group $Default 事件中心的使用者组。
location 中国东部 2 数据连接资源的位置。
database_routing 多或单 连接的数据库路由。 如果将此值设置为“单”,数据连接将按“databaseName”设置中指定的那样路由到群集中的单个数据库。 如果将此值设置为“多”,可使用数据库引入属性重写默认目标数据库。 有关详细信息,请参阅事件路由

清理资源

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

kusto_management_client.data_connections.delete(resource_group_name=resource_group_name, cluster_name=kusto_cluster_name, database_name=kusto_database_name, data_connection_name=kusto_data_connection_name)