Шаблон рука: объединить каждый элемент массива с постоянным значением
Можно ли при создании шаблона arm соединять каждый элемент массива с постоянной строкой? Ниже мой созданный параметр и ресурс, который я пытаюсь создать.
"parameters": {
"servicesNames": {
"type": "array",
"defaultValue": [
"test-api-content",
"test-svc-content"
]
}
}
{
"apiVersion": "2016-03-30",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat(parameters('servicesNames'),'pip')]",
"location": "[resourceGroup().location]",
"copy": {
"name": "PIPaddresscopy",
"count": "[length(parameters('servicesNames'))]"
},
"tags": {
"displayName": "PublicIPAddress"
}
}
Я хотел бы, чтобы вывод имени ресурса был создан с
"Тест-апи-contentpip"
Как только я получаю следующую ошибку
Предоставленные параметры для языковой функции 'concat' недействительны. Все или ни один из параметров не должен быть массивом
Пожалуйста, предложите, как я могу объединить каждое значение элемента
2 ответа
Просто чтобы добавить к существующему ответу (поскольку это немного неясно на мой взгляд).
То, что вы пытаетесь сделать со своим кодом - объединить массив со строкой, и вам нужно объединить каждый элемент массива со строкой.
Есть copyIndex()
функция, которая представляет текущую итерацию цикла. и вы можете использовать array[number]
для доступа к конкретному члену массива. так
parameters('servicesNames')[copyIndex()]
средства parameters('servicesNames')[0]
а также parameters('servicesNames')[1]
в твоем случае. Это фактически означает, что вы перебрали этот массив.
Вы можете объединить каждое значение элемента, изменив свойство name для ресурса publicIpAddress, как показано ниже.
"name": "[concat(parameters('servicesNames')[copyIndex()], 'pip')]",
Эта функция всегда используется с объектом копирования.
Если для смещения не указано значение, возвращается текущее значение итерации. Значение итерации начинается с нуля.