即使配置了 api 连接,部署 Azure 逻辑应用程序也需要服务总线连接字符串

Deploy of Azure Logic App requires service bus connection string even with configured api connection

我正在构建一个连接到服务总线的逻辑应用程序。我创建了逻辑应用程序和 API 连接。我向 API 连接添加了服务总线 RootManageSharedAccessKey 主连接字符串。我可以在队列中出现的新消息的触发操作中使用那个 API 连接。

现在,如果我将逻辑应用程序加载到 Visual Studio 并从那里部署它(使用资源组项目类型),它会要求提供服务总线连接字符串。

上图中我使用了keyvault。它创建以下 LogicApp.parameters.json:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "value": "publisher-la-messagebatcher-test"
    },
    "servicebus_1_connectionString": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.KeyVault/vaults/publisher-kvault-test"
        },
        "secretName": "servicebus-connection-string"
      }
    }
  }
}

现在,我的问题是为什么我必须在 API 连接的逻辑应用程序部署参数中再次提供连接字符串(在本例中为 "publisher-sb-test-connection")?连接本身(在 Azure 中)配置为使用连接字符串还不够吗?我可以绕过在逻辑应用部署中定义连接字符串吗?

嗯,我找到了。 Visual Studio 也创建到模板的 API 连接。打开 LogicApp.json 并删除 servicebus_1_connectionString 资源创建逻辑。

"servicebus_1_connectionString": {
  "type": "securestring",
  "metadata": {
    "description": "Azure Service Bus Connection String"
  }
},
---
  "dependsOn": [
    "[resourceId('Microsoft.Web/connections', parameters('servicebus_1_Connection_Name'))]"
  ]
},
{
  "type": "MICROSOFT.WEB/CONNECTIONS",
  "apiVersion": "2016-06-01",
  "name": "[parameters('servicebus_1_Connection_Name')]",
  "location": "westeurope",
  "properties": {
    "api": {
      "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', 'westeurope', '/managedApis/', 'servicebus')]"
    },
    "displayName": "[parameters('servicebus_1_Connection_DisplayName')]",
    "parameterValues": {
      "connectionString": "[parameters('servicebus_1_connectionString')]"
    }
  }