У меня есть шаблон ARM, в котором я предоставляю несколько веб-приложений.Я хочу добавить ограничения IP на эти веб-приложения, разрешающие доступ только между тезисами.Я могу получить IP-адреса, используя:
reference(resourceId(resourceGroup().name, 'Microsoft.Web/sites', parameters('appName1')),'2015-08-01').PossibleOutboundIpAddresses
Это следующее, что я не знаю, как правильно решить.
Я заменил resourceId(resourceGroup().name, 'Microsoft.Web/sites', parameters('appName1'))
часть с переменной вместо того, чтобы немного ее укоротить.Могу ли я сократить его еще как-нибудь?Это станет еще сложнее, как вы скоро увидите.
Я создал раздел ресурсов для каждого веб-приложения, в котором есть раздел свойств.В этом разделе находится ipSecurityRestrictions.Поскольку возможный выходной адрес возвращает строку, я использую разделение для создания списка и копирования для итерации IP-адресов.Но он не работает для меня и возвращает следующее сообщение об ошибке: The template function 'copyIndex' is not expected at this location. The function can only be used in a resource with copy specified
Раздел выглядит так:
"resources": [
{
"type": "config",
"name": "web",
"apiVersion": "2016-08-01",
"properties": {
"copy": [
{
"name": "ipSecurityRestrictions",
"count": "[length(split(reference(variables('appName1'),'2015-08-01').PossibleOutboundIpAddresses, ','))]",
"input": {
"ipAddress": "[split(reference(variables('appName1'),'2015-08-01').PossibleOutboundIpAddresses, ',')[copyIndex('ipSecurityRestrictions')]]",
"subnetMask": "255.255.255.254"
}
}
],
},
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('appName1'))]"
]
}
]
Я чувствую, что следую всемпримеры, которые я могу найти онлайн точно.Другая проблема с этим - много символов, которые мне придется писать каждый раз, когда я хочу обратиться к списку IP.Что еще хуже, этот список должен быть объединен со всеми предоставленными веб-приложениями.Поэтому, если у меня будет 3 веб-приложения, линия будет невероятно длинной и сложной.
Есть ли лучшее решение для этого?