ARM 模板错误 'properties.api' is not valid from parameter file?

ARM template error 'properties.api' is not valid from parameter file?

我已经为 LogicApp project 创建了 parameter file

当我尝试使用此参数文件进行部署时,它给出以下 error -

 Template deployment returned the following errors:
Resource MICROSOFT.WEB/CONNECTIONS 'demo-sbs' failed with message '{
   "error": {
     "code": "InvalidRequestContent",
     "message": "The request content is not valid and could not be deserialized: 'The 'id' property 'aaaaaaa-aaaa-aaaa-aaaaa-aaaaaaaa/providers/Microsoft.Web/locations/westeurope/managedApis/servicebus' under 'properties.api' is not valid.'."
   }
 }'

LogicApp.dev.parameters.json

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "value": "demoapp"
    },
    "ResourceGroupName": {
      "value": "demo1"
    },
    "logicAppLocation": {
      "value": "westeurope"
    },
    "logicAppEnvironment": {
      "value": "DEV"
    },
    "sbs_Name": {
      "value": "demo-sbs"
    },
    "sbs_Connection_Name": {
      "value": "demo-sbs"
    },
    "sbs_Connection_DisplayName": {
      "value": "demo-sbs"
    },
    "nok_cb2b_we_sbs_connectionString": {
      "value": "Endpoint=sb://demo-sbs.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=asdasd/assasad"
    },
    "LogicAppIntegrationAccountName": {
      "value": "intdemo"
    },
      "subscriptionId": {
          "value": "aaaaaaa-aaaa-aaaa-aaaaa-aaaaaaaa"
      }
  }
}

LogicApp.json(资源部分)

"resources": [

    {
      "type": "MICROSOFT.WEB/CONNECTIONS",
      "apiVersion": "2016-06-01",
      "name": "[parameters('demo-sbs_Connection_Name')]",
      "location": "[parameters('logicAppLocation')]",
      "properties": {
        "api": {
          "id": "[concat(parameters('subscriptionId'), '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'servicebus')]"
        },
        "displayName": "[parameters('demo-sbs_Connection_DisplayName')]",
        "parameterValues": {
          "connectionString": "[parameters('demo-sbs_connectionString')]"
        }
      }
    }

问题出在下面这一行 - 当我尝试使用 concat(parameters('subscriptionId') 之类的 subscriptionId 参数时,它给出了上述错误,如果我使用 concat(subscription().id 它工作正常。 我也想为 subscriptionId 使用参数。

嗯,那是因为那不是资源 ID 在 Azure 中的样子。

/subscriptions/subscription_guid/resourceGroups/resource_group_name/providers/microsoft.insights/components/resource_name

这是它的样子。要创建它,您可以使用 resourceId 函数。 Link

或者您可以使用 concat,但您需要创建相同的字符串,您可以使用 resourceGroup().id 来帮助您。

这是您正在做的事情的正确语法:

                "api":{  
                "id":"[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/serviceBus')]"
            }