有人可以建议如何使用ARM模板创建与事件中心兼容的iothub端点吗?我无法在ARM模板中生成连接字符串以动态创建端点?
答案 0 :(得分:0)
最近我们能够找到解决方案。我们所做的第一件事是将iothub和eventhub模板组合在一起。然后在创建iothub时动态获取事件中心端点详细信息。这是片段的
“变量”:{
//事件中心访问策略名称
“ eventHubAccessPolicy”:“ [resourceId('Microsoft.Eventhub / namespaces / EventHubs / AuthorizationRules',
parameters('eventHubNS'),
parameters('eventHubName'),parameters('sharedAccessPolicyName'))] “
},
。
。
。
//创建iothub时,在终点和路线下面添加。
“路由”:{
“端点”:{
“ eventHubs”:[
{
“ connectionString”:“ [listKeys(variables('eventHubAccessPolicy'),'2017-04-01')。primaryConnectionString]”,
“ name”:“ [parameters('eventHubName')]”,
“ resourceGroup”:“ [resourceGroup()。location]”
}
]
},
。
。
。
“路线”:[
{
“ name”:“ [parameters('routingName')]”“,
“ source”:“ DeviceMessages”,
“ condition”:“ message ='telemetric'”,
“ endpointNames”:[
“ [parameters('eventHubName')]”
],
“ isEnabled”:true
}
]
},
答案 1 :(得分:0)
好吧
答案似乎不完整(也有部分不正确)。
在事件中心端点节点"resourceGroup": "[resourceGroup().location]"
的位置必须替换为名称([resourceGroup().name]
。
此外,您需要将"subscriptionId": "[subscription().subscriptionId]"
添加到端点节点。否则,将毫无错误地添加端点,但是在门户网站中将不起作用(单击时无法打开端点的属性-您会得到404)。
最后-在门户中-创建端点时-它将自动创建必要的授权规则。
在ARM模板中定义路由和端点时,不会发生这种情况。您需要在ARM模板中将授权规则添加到事件中心本身。 (例如,如何操作:https://github.com/Azure/azure-quickstart-templates/tree/master/301-eventHub-create-authrule-namespace-and-eventHub)