Я пытаюсь создать несколько ресурсов на основе нескольких массивов. Один из этих ресурсов - это некоторые учетные записи. У меня есть имена этих учетных записей для хранения в вложенном массиве:Ссылка на объект во вложенном массиве в шаблоне руки
"storageAccountArray": [
"uniqueStringArray0",
[
"[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '0'))]",
"[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '1'))]",
"[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '2'))]",
"[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '3'))]",
"[toLower(concat(parameters('prefix'), 'vhd0', variables('uniqueSuffixID'), '4'))]"
],
"uniqueStringArray1",
[
"[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '0'))]",
"[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '1'))]",
"[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '2'))]",
"[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '3'))]",
"[toLower(concat(parameters('prefix'), 'vhd1', variables('uniqueSuffixID'), '4'))]"
],
"uniqueStringArray2",
[
"[toLower(concat(parameters('prefix'), 'vhd2', variables('uniqueSuffixID'), '0'))]",
"[toLower(concat(parameters('prefix'), 'vhd2', variables('uniqueSuffixID'), '1'))]",
etc....
Я думал, что я мог бы перебирать это так:
{
"apiVersion": "[variables('storageApiVersion')]",
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountArray')[0][copyIndex()]]",
"location": "[variables('computeLocation')]",
"copy": {
"name": "storageLoop0",
"count": "[variables('saCount0')]"
Где я буду иметь некоторые из этих счетов для хранения ресурсов , все с копией, так что имя будет получить взято из 0,0 затем 0,1 0,2 и т.д., а на следующем ресурсе имя:
"name": "[variables('storageAccountArray')[1][copyIndex()]]"
так 1,0 1,1 1, 2 и т.д.
Однако при попытке развернуть я получаю эту ошибку:
'The template resource '[variables('storageAccountArray')[0][copyIndex()]]' is not valid: Template language expression property 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Expressions.TemplateFunctionExpression' can't be evaluated.
По вопросам, как это: Access/process (nested) objects, arrays or JSON JSON обычно может быть оценен следующим образом. Не влияет ли способ, которым манипулятор влияет на шаблон, от этого?
Когда я пытаюсь использовать эти диски как OS диски для моей виртуальной машины, который также получает петельную создать много виртуальных машин, я не может добавить их как мне требуется доступ к вложенному массиву:
"osDisk": {
"vhdContainers": [
"[concat('https://', variables('storageAccountArray')[copyIndex()][0], '.blob.core.windows.net/', parameters('vmStorageAccountContainerNameType0'))]",
"[concat('https://', variables('storageAccountArray')[copyIndex()][1], '.blob.core.windows.net/', parameters('vmStorageAccountContainerNameType0'))]",
"[concat('https://', variables('storageAccountArray')[copyIndex()][2], '.blob.core.windows.net/', parameters('vmStorageAccountContainerNameType0'))]",
etc...
I также попытался разбить вложенный массив на многие, но по мере того, как я зацикливаю виртуальную машину, для которой требуются собственные учетные записи, мне все равно нужно увеличивать одно число, что, по-видимому, потребует, чтобы я не смог создать виртуальную машину в цикле.
Я мог бы также разделить ресурс на цикл во вложенный шаблон. Смогу ли я создать много ресурсов «Microsoft.Resources/deployments», которые все указывают на один и тот же внешний шаблон, а затем каждый раз передают в другое число в качестве параметра, чтобы увеличить число таким образом?
Любые идеи? Спасибо за ваше время
шаблоны рук довольно мелкие на части выражений, я думаю, что это не позволит провести такую сложную оценку, tbh – 4c74356b41