功能 - AzureWebJobsServiceBus 设置为来自在同一 ARM 模板中创建的规则的键
Functions - AzureWebJobsServiceBus set to key from rules created in same 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)]"
},
目前,上面给出了这个错误。
Deployment template validation failed: 'The template resource 'mycompany-myapp-mycomponent-functionapp' at line '136' and column '9' is not valid: Unable to evaluate template language function 'resourceId': function requires exactly one multi-segmented argument which must be resource type including resource provider namespace.
更新
错误是由我的 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)]"
No registered resource provider found for location 'uksouth' and API version '2015-05-01-preview' for type 'namespaces/queues/authorizationrules'. The supported api-versions are '2014-09-01, 2015-08-01, 2017-04-01'. The supported locations are ''.
:(
更新
将 listKeys
的版本切换到 2017-04-01
,现在出现了这个非常有用的错误!
'The language expression property 'key1' doesn't exist, available properties are 'primaryConnectionString, secondaryConnectionString, primaryKey, secondaryKey, keyName'.'
好的,排序花了大约 8 个小时。 #高效
根据这里的错误:
'The language expression property 'key1' doesn't exist, available properties are '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)]"
我正在编写一个部署构成应用程序一部分的资源的 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)]"
},
目前,上面给出了这个错误。
Deployment template validation failed: 'The template resource 'mycompany-myapp-mycomponent-functionapp' at line '136' and column '9' is not valid: Unable to evaluate template language function 'resourceId': function requires exactly one multi-segmented argument which must be resource type including resource provider namespace.
更新
错误是由我的 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)]"
No registered resource provider found for location 'uksouth' and API version '2015-05-01-preview' for type 'namespaces/queues/authorizationrules'. The supported api-versions are '2014-09-01, 2015-08-01, 2017-04-01'. The supported locations are ''.
:(
更新
将 listKeys
的版本切换到 2017-04-01
,现在出现了这个非常有用的错误!
'The language expression property 'key1' doesn't exist, available properties are 'primaryConnectionString, secondaryConnectionString, primaryKey, secondaryKey, keyName'.'
好的,排序花了大约 8 个小时。 #高效
根据这里的错误:
'The language expression property 'key1' doesn't exist, available properties are '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)]"