Как использовать функцию listkeys в шаблоне ARM с концентратором событий

У меня есть концентратор событий, который выглядит так:  введите описание изображения здесь

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

Я успешно сделал это для служебной шины, но только для верхнего уровня RootManageSharedAccessKey.

Однако для концентратора событий мне нужна основная строка подключения для политики общего доступа SendOnly.

Я пробовал много комбинаций, но при развертывании развертывания не могу найти политику общего доступа SendOnly.

Вот json для моей политики общего доступа SendOnly.

введите здесь описание изображения

Любая помощь будет оценена.


person RuSs    schedule 17.11.2017    source источник


Ответы (3)


Окончательный рабочий код шаблона 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

Вот пример, который я использовал:

person RuSs    schedule 19.11.2017

используйте это, чтобы получить строку подключения:

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

вы не можете разделить его на строки, я сделал это для удобства чтения

person 4c74356b41    schedule 18.11.2017
comment
Но это строка корневого подключения. Мне нужна только посылка - person RuSs; 19.11.2017
comment
заменить 'RootManageSharedAccessKey' на 'SendOnly'? - person 4c74356b41; 19.11.2017
comment
Мне также пришлось добавить еще один раздел идентификаторов ресурсов между пространствами имен и правилами авторизации: [listkeys (resourceId ('Microsoft.EventHub / namespaces / eventhubs / authorizationRules', variables ('ehub'). Name, parameters ('eventhubs_myaccountevents_name'), 'SendOnly'). ), параметры ('eventhubs_api_version')). ​​primaryConnectionString] - person RuSs; 20.11.2017
comment
ну, вы могли бы хотя бы проголосовать за мой ответ, так как технически он правильный;) - person 4c74356b41; 20.11.2017
comment
Извини, чувак, я сделал это сейчас. Вы говорите, что ваш тоже работает, если я просто заменю RootConnectionShar .... Если да, то почему они оба работают? - person RuSs; 20.11.2017
comment
интересно, я недостаточно проснулся;) Я не тестировал это с 'SendOnly', tbh, я предполагал, что это будет работать так, но, глядя на ваш ответ сейчас, может быть, что это не сработает. - person 4c74356b41; 20.11.2017
comment
Завтра попробую твое предложение просто ради развлечения - person RuSs; 20.11.2017
comment
Я попробовал вас, просто заменив RootManageSharedAccessKey на SendOnly, и это не удалось. Затем я добавил / eventhubs сюда: / Microsoft.Eventhub / namespaces / eventhubs / authorizationRules и имя концентратора событий, поэтому конечный результат был следующим: [listkeys (resourceId ('Microsoft.Eventhub / namespaces / eventhubs / authorizationRules', переменные ('ehub'). имя, параметры ('eventhubs_myaccountevents_name'), 'SendOnly'), параметры ('eventhubs_api_version')). ​​primaryConnectionString] Что теперь работает. Так что, боюсь, твой способ не сработает. Русь - person RuSs; 21.11.2017

Вот как я это решил (включая создание правила авторизации):

Определите переменные:

...
"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]"
person Martin Brandl    schedule 21.10.2019