Расширение того, что 4c74356b41 отправлено first - этот шаблон ARM будет работать с нулевым или большим количеством электронных писем:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"emailAddresses": {
"type": "string",
"defaultValue": "one@email.com, two@email.com",
"metadata": {
"description": "Comma-separated list of email recipients."
}
}
},
"variables": {
"emailArray": "[if(equals(length(parameters('emailAddresses')), 0), json('[]'), split(parameters('emailAddresses'),','))]",
"copy": [
{
"name": "emailReceivers",
"count": "[if(equals(length(variables('emailArray')), 0), 1, length(variables('emailArray')))]",
"input": {
"name": "[concat('Email ', if(equals(length(variables('emailArray')), 0),'',variables('emailArray')[copyIndex('emailReceivers')]) )]",
"emailAddress": "[if(equals(length(variables('emailArray')), 0),'',variables('emailArray')[copyIndex('emailReceivers')])]"
}
}
]
},
"resources": [],
"outputs": {
"return": {
"type": "array",
"value": "[variables('emailReceivers')]"
}
}
}
Использование файла параметров, например, такого:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"emailAddresses": {
"value": "testEmail@mail.com"
}
}
}
или это
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"emailAddresses": {
"value": ""
}
}
}
Принять ответ от 4c74356b41 - форматирование будет лучше, чем у комментариев.
Примечание -В моем тестировании выяснилось, что это не работает с ресурсами:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"DataDisks": {
"type": "array",
"metadata": {
"description": "Combined DataDisk and DataDiskResource array"
},
"defaultValue": [
{
"lun": 0,
"createOption": "attach",
"caching": "None",
"writeAcceleratorEnabled": false,
"id": null,
"name": "cgltest01_DataDisk_0",
"storageAccountType": null,
"diskSizeGB": 31,
"sku": "StandardSSD_LRS",
"creationData": {
"createOption": "empty"
}
}
]
}
},
"variables": {
"Disks": "[parameters('DataDisks')]"
},
"resources": [
{
"name": "[if(equals(length(parameters('DataDisks')),0) ,'BogusName', parameters('DataDisks')[copyIndex()].name)]",
"type": "Microsoft.Compute/disks",
"condition": "[greater(length(parameters('DataDisks')), 0)]",
"apiVersion": "2018-06-01",
"location": "centralus",
"properties": {
"diskSizeGB": "[if(equals(length(parameters('DataDisks')),0) ,'123', parameters('DataDisks')[copyIndex()].diskSizeGB)]",
"creationData": "[if(equals(length(parameters('DataDisks')),0) , json('null'), parameters('DataDisks')[copyIndex()].creationData)]"
},
"sku": {
"name": "[parameters('DataDisks')[copyIndex()].sku]"
},
"copy": {
"name": "managedDiskResources",
"count": "[if(equals(length(parameters('DataDisks')),0), 1 , length(parameters('DataDisks')))]"
}
}
],
"outputs": {
"return": {
"type": "array",
"value": "[variables('Disks')]"
}
}
}
Сбой с той же ошибкой массива вне границ:
Code : InvalidTemplate
Message : Deployment template validation failed: 'The template resource 'BogusName' at line '34' and column '9' is not valid: The language expression
property array index '0' is out of bounds.. Please see https://aka.ms/arm-template-expressions for usage details.'.
Details :