いくつかの配列に基づいていくつかのリソースを作成しようとしています。これらのリソースの 1 つは、いくつかのストレージ アカウントです。入れ子になった配列にこれらのストレージ アカウントの名前があります。
"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 などです。
ただし、展開しようとすると、次のエラーが表示されます。
'テンプレート リソース '[variables('storageAccountArray')[0][copyIndex()]]' が無効です: テンプレート言語式プロパティ 'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Expressions.TemplateFunctionExpression' を評価できません.
次のような質問によると:アクセス/プロセス (ネストされた) オブジェクト、配列、または JSON json は通常、この方法で評価できます。アームがテンプレートを評価する方法によって、これを行うことができなくなりますか?
これらのディスクを VM の OS ディスクとして使用しようとすると、これも多くの VM を作成するためにループされますが、ネストされたアレイにアクセスする必要があるため、それらを追加できません。
"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...
また、ネストされた配列を多数に分割しようとしましたが、独自のストレージ アカウントを必要とする VM をループしているため、1 つの数値をインクリメントする必要があり、ループ内で VM を作成できないことが要求されるようです。
リソースを分割して、ネストされたテンプレートにループさせることもできます。すべてが同じ外部テンプレートを指す多くの "Microsoft.Resources/deployments" リソースを作成し、毎回異なる番号をパラメーターとして渡して、そのように番号をインクリメントすることはできますか?
何か案は?お時間をいただきありがとうございます