【问题标题】:Multiple values for a property on resource in Azure ARM TemplateAzure ARM 模板中资源属性的多个值
【发布时间】:2018-03-15 11:53:33
【问题描述】:

根据https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-multiple#property-iteration,应该可以使用副本在资源上创建多个值,但我无法使其工作。这是我的代码...

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": { 
    "appServiceName": {
      "type": "string",
      "metadata": {
        "description": "Name of app service to apply SSL to."
      }
    },
    "certificateName": {
      "type": "string",
      "metadata": {
        "description": "User friendly certificate resource name"
      }
    },
    "appServicePlan": {
      "type": "string",
      "metadata": {
        "description": "App Service Plan Name"
      }
    },
    "keyVaultId": {
      "type": "string",
      "metadata": {
        "description": "Existing Key Vault resource Id with an access     policy to allow Microsoft.Web RP to read Key Vault secrets (Checkout README.md for more information)"
      }
    },
    "hostname": {
      "type": "array",
      "metadata": {
        "description": "Custom hostname for creating SSL binding. This hostname should already be assigned to the Web App"
      }
    }
  },
  "resources": [
    {
      "apiVersion": "2017-03-30",
      "type": "Microsoft.Web/sites",
      "name": "[parameters('appServiceName')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/certificates', parameters('certificateName'))]"
      ],
      "properties": {
        "copy": [
          {
            "name": "hostnames",
            "count": "[length(parameters('hostname'))]",
            "input": {
              "name": "[copyIndex('hostnames')]",
              "properties": {
                "hostNameSslStates": [
                  {
                    "name": "[[copyIndex(hostname)]]",
                    "sslState": "SniEnabled",
                    "thumbprint": "[reference(resourceId('Microsoft.Web/certificates', parameters('certificateName'))).Thumbprint]",
                   "toUpdate": true
                  }
                ]
              }
            }
           } 
        ]
      }
    },
    {
      "type": "Microsoft.Web/certificates",
      "name": "[parameters('certificateName')]",
      "apiVersion": "2016-03-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "keyVaultId": "[parameters('keyVaultId')]",
        "keyVaultSecretName": "[parameters('certificateName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms',parameters('appServicePlan'))]"
      }
    }
  ]
}

它返回错误:代码=无效模板; Message=部署模板 l 语言表达式评估失败:'无法解析语言表达式'copyIndex(主机名)]':期望 d 标记“左括号”和实际的“右括号”。请看https://aka.ms/arm-template-expressi 使用详情。

任何想法我做错了什么?

提前致谢!

【问题讨论】:

    标签: json azure arm-template


    【解决方案1】:

    错误消失了:

    "[[copyIndex(hostname)]]", 更改为"[copyIndex('hostname')]"

    你甚至在其他地方也有,为什么不在这里?

    你可能想这样做:

    "[parameters('hostname')[copyIndex('hostname')]]"

    【讨论】:

    • 非常感谢,这让我遇到了下一个错误:Resource Microsoft.Web/sites 'developapp' failed with message '{ "Code": "BadRequest", "Message": "HTTP request body must不能为空。", "Target": null, "Details": [ { "Message": "HTTP 请求正文不能为空。" }, { "Code": "BadRequest" }, { "ErrorEntity": { "ExtendedCode": "51016", "MessageTemplate": "HTTP 请求正文不能为空。", "Parameters": [], "Code ": "BadRequest", "Message": "HTTP 请求正文不能为空。" }
    • 我建议您接受这个答案并创建一个新问题。因为这看起来像是一个全新的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2020-02-17
    相关资源
    最近更新 更多