いくつかの配列に基づいていくつかのリソースを作成しようとしています。これらのリソースの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等
私が展開しようとしたときしかし、私はこのエラーが表示されます。
'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は、通常、この方法で評価することができます。腕がテンプレートを評価する方法は私にこれをさせないようにしていますか?
私も多くの仮想マシンを作成するために、ループなっている私のVMの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...
をネストされた配列を多くのものに分割しようとしましたが、独自のストレージアカウントを必要とするVMをループしているため、1つの数値を増やす必要があります。これはループでVMを作成できないように思われます。
また、ネストされたテンプレートにループするようにリソースを分割することもできます。私は、同じ外部テンプレートを指すすべての "Microsoft.Resources/deployments"リソースを作成して、毎回別の番号をパラメータとして渡してその数を増やすことができますか?
アイデア?
"m": [
[ "a", "b", "c" ],
[ "1", "2", "3" ]
]
IOW、ある配列要素を作成していますあなたの宣言のあなたの「uniqueStringArray0」の部分を、削除します。私はあなたの変数宣言でこれを試してみてください、あなたの配列の構文が間違っていると思う、あなたの時間
アームのテンプレートは表現の部分がかなり浅いので、そのような複雑な評価ができないと思います。 – 4c74356b41