如何在带有Event Hub的ARM模板中使用listkeys函数

时间:2017-11-17 23:02:03

标签: azure azure-resource-manager azure-eventhub azure-keyvault arm-template

我有一个如下所示的事件中心: enter image description here

enter image description here

enter image description here

enter image description here

我已成功完成服务总线,但只适用于高级 RootManageSharedAccessKey

但是,对于Event Hub,我想要 SendOnly 共享访问策略的主连接字符串。

我尝试了很多组合,但是当我部署部署时,我找不到SendOnly共享访问策略。

以下是我的SendOnly共享访问策略的json。

enter image description here

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

最终工作的ARM模板代码是:

[listkeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('ehub').name, parameters('eventhubs_myaccountevents_name'), 'SendOnly'), parameters('eventhubs_api_version')).primaryConnectionString]

请注意,而不是:

Microsoft.Eventhub/namespaces/authorizationRules

我必须使用它:

Microsoft.EventHub/namespaces/eventhubs/authorizationRules

以下是我使用的示例: https://github.com/pascalnaber/EnterpriseARMTemplates/blob/master/Resources/Microsoft.Eventhub/azuredeploy.json

答案 1 :(得分:1)

使用它来获取连接字符串:

"[listkeys(resourceId('Microsoft.Eventhub/namespaces/authorizationRules',
  parameters('name'), 'RootManageSharedAccessKey'),
  '2017-04-01').primaryConnectionString]"

你不能跨行分割,为了便于阅读,我已经这样做了

答案 2 :(得分:1)

这是我解决的方法(包括创建授权规则):

定义变量:

...
"variables": {
    "eventHubNamespaceName": "myehubns",
    "eventHubName": "myehub",
    "eventhubSendAuthorizationRuleName": "SendOnly",
    "eventHubSendRuleId": "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventHubNamespaceName'),variables('eventHubName'), variables('eventhubSendAuthorizationRuleName'))]"
}

创建授权规则:

...
"resources": [{
        "apiVersion": "2017-04-01",
        "name": "[variables('eventhubSendAuthorizationRuleName')]",
        "type": "authorizationRules",
        "dependsOn": [
            "[concat('Microsoft.EventHub/namespaces/', variables('eventHubNamespaceName'),'/eventhubs/',variables('eventHubName'))]"
        ],
        "properties": {
            "rights": [
                "Send"
            ]
        }
    }
]

检索先前创建的规则的主要连接字符串:

"EventHubConnectionstring": "[listkeys(variables('eventHubSendRuleId'), '2017-04-01').primaryConnectionString]"