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