1

我正在尝试部署一个 Azure 逻辑应用,其中包含使用 ARM 模板在服务总线上发送消息的操作。

除了部署逻辑应用之外,ARM 模板还部署了一个服务总线命名空间、一个队列和两个 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]

编辑:另外,我提到的似乎是github 上的一个有前途的 Azure 快速入门(基于标题),但我无法理解它。它似乎使用较旧的 schema 2014-12-01-preview,并且“queueconnector”引用了 Api Gateway。如果这个场景有更新的例子,我很乐意看到它。

4

2 回答 2

5

我最近研究了一个用于部署逻辑应用程序和服务总线连接的 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]"
      }
    }
  }
于 2019-05-02T18:34:35.893 回答
2

如您所知,连接是一种资源,因此需要先创建它,您是否参考了此https://blogs.msdn.microsoft.com/logicapps/2016/02/23/deploying-in-the-logic-apps-preview-刷新/。您所指的快速入门链接适用于较旧的架构。

于 2016-04-24T06:56:25.960 回答