如何使用ARM模板配置Stream Analytics Job的Data Explorer输出?
配置Stream Analytics Job输出到Azure Data Explorer的ARM模板
核心配置要点
- 输出类型必须指定为
Microsoft.Kusto/clusters/databases - 需包含Kusto集群/数据库资源ID、授权模式、目标表名、映射规则名等关键参数
- 必须配置依赖关系,确保Kusto集群和数据库先于Stream Analytics Job完成部署
ARM模板输出配置片段
以下是完整的输出资源配置示例,可直接嵌入到Stream Analytics Job的ARM模板中:
"resources": [ { "type": "Microsoft.StreamAnalytics/streamingjobs/outputs", "apiVersion": "2020-03-01", "name": "[concat(parameters('streamingJobName'), '/', parameters('kustoOutputName'))]", "dependsOn": [ "[resourceId('Microsoft.StreamAnalytics/streamingjobs', parameters('streamingJobName'))]", "[resourceId('Microsoft.Kusto/clusters/databases', parameters('kustoClusterName'), parameters('kustoDatabaseName'))]" ], "properties": { "datasource": { "type": "Microsoft.Kusto/clusters/databases", "properties": { "clusterResourceId": "[resourceId('Microsoft.Kusto/clusters', parameters('kustoClusterName'))]", "databaseResourceId": "[resourceId('Microsoft.Kusto/clusters/databases', parameters('kustoClusterName'), parameters('kustoDatabaseName'))]", "tableName": "[parameters('kustoTableName')]", "mappingRuleName": "[parameters('kustoMappingName')]", "authenticationMode": "Msi" // 推荐使用MSI授权,也可根据场景改为UserToken } }, "serialization": { "type": "Json", // 匹配你的数据序列化格式,支持Csv、Avro等 "properties": { "encoding": "UTF8" } } } } ]
参数说明
clusterResourceId/databaseResourceId:必须填写Kusto集群和数据库的完整资源ID,不能仅用名称替代authenticationMode:若使用MSI,需为Stream Analytics Job的系统分配身份添加Kusto数据库的Ingestor角色权限mappingRuleName:需确保Kusto数据库中已存在该映射规则,也可在ARM模板中同时部署Kusto映射资源
解决导出模板无效的问题
- 导出的默认模板可能包含硬编码的环境参数或缺失关键属性,需手动替换为模板参数并补充
datasource的完整配置 - 检查导出模板的
apiVersion是否为2020-03-01及以上版本,旧版本可能不支持Kusto输出类型
MSI权限补充配置
若采用MSI授权,需在ARM模板中添加角色分配资源,为Stream Analytics Job授予Kusto数据写入权限:
{ "type": "Microsoft.Kusto/clusters/databases/providers/roleAssignments", "apiVersion": "2022-07-07", "name": "[concat(parameters('kustoClusterName'), '/', parameters('kustoDatabaseName'), '/Microsoft.Authorization/', guid(parameters('streamingJobName')))]", "dependsOn": [ "[resourceId('Microsoft.StreamAnalytics/streamingjobs', parameters('streamingJobName'))]", "[resourceId('Microsoft.Kusto/clusters/databases', parameters('kustoClusterName'), parameters('kustoDatabaseName'))]" ], "properties": { "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', '96a9d632-3b6d-48e8-b73c-0b729b8286f1')]", // Kusto Ingestor角色固定ID "principalId": "[reference(resourceId('Microsoft.StreamAnalytics/streamingjobs', parameters('streamingJobName')), '2020-03-01').identity.principalId]", "principalType": "ServicePrincipal" } }
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

