函数-AzureWebJobsServiceBus设置为根据在同一ARM模板中创建的规则进行键操作

时间:2019-08-20 12:00:58

标签: arm-template

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

  • 服务总线,包括名称空间,队列和授权规则。
  • Azure函数由上面的队列触发。

AzureWebJobsServiceBus应用程序设置需要部署才能使此功能触发器起作用。当然,队列连接字符串包含来自在同一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”:该函数仅需要一个multi -segmented参数,该参数必须是资源类型,包括资源提供者名称空间。

更新

该错误是由我的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”和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'。

1 个答案:

答案 0 :(得分:0)

好,这花了大约8个小时来整理。 #生产

根据此处的错误:

  

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

可用的连接字符串听起来好像不需要我连接我自己的连接字符串,因为服务总线队列触发器不喜欢最后的队列名称,所以我必须像这样手动编写。 / p>

"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)]"