Использование copyindex () для имени подсети создает ошибку как дубликат ресурса - PullRequest
0 голосов
/ 29 сентября 2018

Я пытался использовать copyIndex () для создания подсетей с разными именами, но я получаю ошибку

        "message": "Resource
/subscriptions//resourceGroups//providers/Microsoft.Network/virtualNetworks/ has two child
resources with the same name
([parameters('subnets').subnetProperties[copyIndex('subnets')].name)).

Но я следовал документации, чтобы использовать копию, и это то, что я использовал, поэтому яя не уверен, почему не будет переходить к следующему свойству name:

 "resources": [
    {
        "type": "Microsoft.Network/virtualNetworks",
        "apiVersion": "2016-03-30",
        "name": "[parameters('virtualNetworkName')]",
        "location": "[parameters('location')]",
        "tags": "[parameters('virtualNetworkTags')]",
        "properties": {
        "addressSpace": {
            "addressPrefixes": [
             "[parameters('vNetAddressSpaces')]"
          ]
        },
            "copy": [
                {
                    "name": "subnets",
                    "count": "[parameters('numberOfSubnets')]",
                    "input": {
                        "name": "[parameters('subnets').subnetProperties[copyIndex('subnets')].name)",
                        "properties": {
                            "addressPrefix": "[parameters('subnets').subnetProperties[copyIndex('subnets')].addressPrefix]"
                        }
                    }
                }
            ]
        }
    },

Файл параметров:

"subnets":{
  "value":{
    "subnetProperties":[
      {
        "name":"firstSubnet",
        "addressPrefix":"10.0.0.0/24"
      },
      {
        "name":"secondSubnet",
        "addressPrefix":"10.0.1.0/24"
      }
    ]        
  }
},

Я также пытался использовать copyIndex (), но это выбрасывает

 template language expression evaluation failed: 'The template language
function 'copyIndex' has an invalid argument. The provided copy name '' doesn't exist in the
resource.

1 Ответ

0 голосов
/ 03 октября 2018

Я думаю, что вы перепутали скобки в этой строке:

"name": "[parameters('subnets').subnetProperties[copyIndex('subnets')].name)",

Это должно выглядеть так:

"name": "[parameters('subnets').subnetProperties[copyIndex('subnets')].name]",

Последняя скобка неверна.Если скобки не совпадают, полное выражение не будет обработано.Это приведет к тому же имени во втором цикле.

Привет, KirK

...