#json #azure #azure-resource-manager #arm-template
#json #azure #azure-resource-manager #arm-шаблон
Вопрос:
Кто-нибудь может сказать мне, в чем разница между этими двумя и какой из них следует использовать в разделе ресурсов в шаблоне Azure ARM JSON
"dependsOn": [
[concat('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]"
"dependsOn": [
[resourceid('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]"
Ответ №1:
resourceId — это просто удобный способ сгенерировать resourceId, а не «поддельный», потому что показанный вами пример будет работать только в свойстве dependsOn, если вы попытаетесь использовать свой пример объединения с любой функцией свойством ресурса, которая ожидает resourceId, он завершится неудачей.
В принципе, dependsOn допускает пару ярлыков при анализе входных данных, поэтому вы можете сделать что-то вроде этого:
dependsOn: [
"resourceName"
]
и если это имя уникально — это нормально. но это не настоящий идентификатор ресурса, как вы, вероятно, поняли.
объединение: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-array#concat
resourceId: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource#resourceid
Ответ №2:
Функция «concat»:
- Объединяет несколько массивов в один массив
или - Объединяет несколько строк в одну строку
Смотрите эту ссылку для получения более подробной информации.
В то время как функция «resourceId»:
- Он предоставляет уникальный идентификатор ресурса, для которого он вызывается. смотрите эту ссылку для получения более подробной информации.
Теперь по вашему вопросу: «какой из них следует использовать в разделе ресурсов в шаблоне Azure ARM JSON». Далее я использовал в своих шаблонах ARM, и это работает для меня:
"availabilitySet": { "id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySetName'))]" }
}