如何在 ARM 模板中设置服务总线逻辑应用程序操作的连接字符串?
How to set the connection string for a Service Bus Logic App action in an ARM template?
我正在尝试部署一个 Azure 逻辑应用程序,其中包含使用 ARM 模板在服务总线上发送消息的操作。
除了部署Logic App,ARM模板还部署了一个Service Bus Namespace,一个Queue和两个AuthorizationRule(一个发送一个监听)。
我想为“发送服务总线消息”操作动态设置连接信息,以使用为支持发送的 AuthorizationRule 生成的连接字符串。
当我在门户编辑器中创建它时(指定用于发送的连接字符串),我注意到在代码视图中生成了以下内容...
"Send_message.": {
"conditions": [
{
"dependsOn": "<previous action>"
}
],
"inputs": {
"body": {
"ContentData": "@{encodeBase64(triggerBody())}"
},
"host": {
"api": {
"runtimeUrl": "https://logic-apis-westus.azure-apim.net/apim/servicebus"
},
"connection": {
"name": "@parameters('$connections')['servicebus']['connectionId']"
}
},
"method": "post",
"path": "/@{encodeURIComponent(string('<queuename>'))}/messages"
},
"type": "apiconnection"
}
},
我假设连接信息以某种方式隐藏在 @parameters('$connections')['servicebus']['connectionId']"
然后我使用 resources.azure.com 导航到逻辑应用,看看是否可以获得有关如何定义 @parameters('$connections')['servicebus']['connectionId']"
的更多详细信息。
我找到了这个:
"parameters": {
"$connections": {
"value": {
"servicebus": {
"connectionId": "/subscriptions/<subguid>/resourceGroups/<rgname>/providers/Microsoft.Web/connections/servicebus",
"connectionName": "servicebus",
"id": "/subscriptions/<subguid>/providers/Microsoft.Web/locations/westus/managedApis/servicebus"
}
}
}
}
但是我还是没看到连接字符串是在哪里设置的。
在 ARM 模板中,我可以在哪里设置服务总线操作的连接字符串,如下所示?
[listkeys(variables('sendAuthRuleResourceId'), variables('sbVersion')).primaryConnectionString]
编辑:另外,我提到的似乎是 a promising Azure quick start on github (based on the title),但我无法理解它。它似乎使用了较旧的架构 2014-12-01-preview
,并且 "queueconnector" 引用了 Api 网关。如果有针对此场景的更新示例,我很乐意看到它。
如您所知,连接是一种资源,因此需要先创建它,您是否参考了此 https://blogs.msdn.microsoft.com/logicapps/2016/02/23/deploying-in-the-logic-apps-preview-refresh/。快速入门 link 您指的是旧架构。
我最近研究了一个用于部署逻辑应用程序和服务总线连接的 ARM 模板。下面是在“Microsoft.Web/connections”类型中配置服务总线连接字符串的示例模板。希望对你有帮助。
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[parameters('connections_servicebus_name')]",
"location": "centralus",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces/AuthorizationRules', parameters('ServiceBusNamespace'), 'RootManageSharedAccessKey')]"
],
"properties": {
"displayName": "ServiceBusConnection",
"customParameterValues": {},
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/centralus/managedApis/servicebus')]"
},
"parameterValues": {
"connectionString": "[listKeys(resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('ServiceBusNamespace'), 'RootManageSharedAccessKey'), '2017-04-01').primaryConnectionString]"
}
}
}
我正在尝试部署一个 Azure 逻辑应用程序,其中包含使用 ARM 模板在服务总线上发送消息的操作。
除了部署Logic App,ARM模板还部署了一个Service Bus Namespace,一个Queue和两个AuthorizationRule(一个发送一个监听)。
我想为“发送服务总线消息”操作动态设置连接信息,以使用为支持发送的 AuthorizationRule 生成的连接字符串。
当我在门户编辑器中创建它时(指定用于发送的连接字符串),我注意到在代码视图中生成了以下内容...
"Send_message.": {
"conditions": [
{
"dependsOn": "<previous action>"
}
],
"inputs": {
"body": {
"ContentData": "@{encodeBase64(triggerBody())}"
},
"host": {
"api": {
"runtimeUrl": "https://logic-apis-westus.azure-apim.net/apim/servicebus"
},
"connection": {
"name": "@parameters('$connections')['servicebus']['connectionId']"
}
},
"method": "post",
"path": "/@{encodeURIComponent(string('<queuename>'))}/messages"
},
"type": "apiconnection"
}
},
我假设连接信息以某种方式隐藏在 @parameters('$connections')['servicebus']['connectionId']"
然后我使用 resources.azure.com 导航到逻辑应用,看看是否可以获得有关如何定义 @parameters('$connections')['servicebus']['connectionId']"
的更多详细信息。
我找到了这个:
"parameters": {
"$connections": {
"value": {
"servicebus": {
"connectionId": "/subscriptions/<subguid>/resourceGroups/<rgname>/providers/Microsoft.Web/connections/servicebus",
"connectionName": "servicebus",
"id": "/subscriptions/<subguid>/providers/Microsoft.Web/locations/westus/managedApis/servicebus"
}
}
}
}
但是我还是没看到连接字符串是在哪里设置的。
在 ARM 模板中,我可以在哪里设置服务总线操作的连接字符串,如下所示?
[listkeys(variables('sendAuthRuleResourceId'), variables('sbVersion')).primaryConnectionString]
编辑:另外,我提到的似乎是 a promising Azure quick start on github (based on the title),但我无法理解它。它似乎使用了较旧的架构 2014-12-01-preview
,并且 "queueconnector" 引用了 Api 网关。如果有针对此场景的更新示例,我很乐意看到它。
如您所知,连接是一种资源,因此需要先创建它,您是否参考了此 https://blogs.msdn.microsoft.com/logicapps/2016/02/23/deploying-in-the-logic-apps-preview-refresh/。快速入门 link 您指的是旧架构。
我最近研究了一个用于部署逻辑应用程序和服务总线连接的 ARM 模板。下面是在“Microsoft.Web/connections”类型中配置服务总线连接字符串的示例模板。希望对你有帮助。
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[parameters('connections_servicebus_name')]",
"location": "centralus",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces/AuthorizationRules', parameters('ServiceBusNamespace'), 'RootManageSharedAccessKey')]"
],
"properties": {
"displayName": "ServiceBusConnection",
"customParameterValues": {},
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/centralus/managedApis/servicebus')]"
},
"parameterValues": {
"connectionString": "[listKeys(resourceId('Microsoft.ServiceBus/namespaces/authorizationRules', parameters('ServiceBusNamespace'), 'RootManageSharedAccessKey'), '2017-04-01').primaryConnectionString]"
}
}
}