Arm template Functions-AzureWebJobsServiceBus根据在同一ARM模板中创建的规则设置为key

Arm template Functions-AzureWebJobsServiceBus根据在同一ARM模板中创建的规则设置为key,arm-template,Arm Template,我正在编写一个ARM模板,它部署构成应用程序一部分的资源 服务总线,包括名称空间、队列和授权规则 Azure函数由上面的队列触发 需要部署azurewebjobservicebusapp设置,此功能触发器才能工作。当然,队列连接字符串包含来自同一ARM模板中创建的授权规则的共享访问密钥 我需要以某种方式构建一个连接字符串,并引用刚刚创建的密钥 "siteConfig": { "appSettings": [ {

我正在编写一个ARM模板,它部署构成应用程序一部分的资源

  • 服务总线,包括名称空间、队列和授权规则
  • Azure函数由上面的队列触发
需要部署
azurewebjobservicebus
app设置,此功能触发器才能工作。当然,队列连接字符串包含来自同一ARM模板中创建的授权规则的共享访问密钥

我需要以某种方式构建一个连接字符串,并引用刚刚创建的密钥

    "siteConfig": {
        "appSettings": [
            {
                "name": "AzureWebJobsServiceBus",
                "value": "[concat('Endpoint=sb://', parameters('serviceBusNamespaceName'), '.servicebus.windows.net/;SharedAccessKeyName=sender-listener;SharedAccessKey=', listKeys(resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', parameters('serviceBusNamespaceName'), '/http-push/sender-listener'),'2015-05-01-preview').key1)]"
            },
目前,上述情况给了我这个错误

部署模板验证失败:“第136行和第9列的模板资源“mycompany myapp mycomponent functionapp”无效:无法评估模板语言函数“resourceId”:函数只需要一个多段参数,该参数必须是资源类型,包括资源提供器命名空间

更新 这个错误是由我的
dependsOn
引起的,尽管它的语法与我在上面的
value
中使用的语法相同,所以感觉像是在进步。对于我的情况,正确的语法是:

"dependsOn": [
    "[resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', parameters('serviceBusNamespaceName'), 'queue-name', 'auth-rule-name')]"
],
还在做另一件事

更新 将其用作上述应用程序设置的值会导致新的错误

"[concat('Endpoint=sb://', parameters('serviceBusNamespaceName'), '.servicebus.windows.net/;SharedAccessKeyName=auth-rule-name;SharedAccessKey=', listKeys(resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', parameters('serviceBusNamespaceName'), 'queue-name', 'auth-rule-name'),'2015-05-01-preview').key1)]"
未找到位置“uksouth”和类型“namespaces/queues/authorizationrules”的API版本“2015-05-01-preview”的注册资源提供程序。支持的api版本为“2014-09-01、2015-08-01、2017-04-01”。支持的位置为“”

:(

更新 将
listKeys
的版本切换到
2017-04-01
,现在出现了这个非常有用的错误

'语言表达式属性'key1'不存在,可用属性为'primaryConnectionString,secondaryConnectionString,primaryKey,secondaryKey,keyName'。'


好的,这花了大约8个小时来整理

根据此处的错误:

'语言表达式属性'key1'不存在,可用属性为'primaryConnectionString,secondaryConnectionString,primaryKey,secondaryKey,keyName'。'

连接字符串是可用的,这听起来好像不需要我自己的连接字符串,唉,服务总线队列触发器不喜欢末尾的队列名称,所以我必须像这样手动组合它

"value": "[concat('Endpoint=sb://', parameters('serviceBusNamespaceName'), '.servicebus.windows.net/;SharedAccessKeyName=auth-rule-name;SharedAccessKey=', listKeys(resourceId('Microsoft.ServiceBus/namespaces/queues/authorizationRules', parameters('serviceBusNamespaceName'), 'queue-name', 'auth-rule-name'),'2017-04-01').primaryKey)]"