Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью шаблонов Azure Resource Manager (шаблоны ARM) можно развертывать в группах ресурсов, подписках, группах управления или арендаторах. Как правило, функции шаблона ARM работают одинаково для всех областей. В этой статье описываются различия, которые существуют для некоторых функций и как эти различия зависят от области.
Поддерживаемые функции
При развертывании в разных областях следует учитывать следующее:
Функция
resourceGroup()поддерживается для развертываний групп ресурсов.Эта
subscription()функция поддерживается для развертываний на уровне группы ресурсов и подписок.reference(), а также функция list()поддерживаются для всех областей.Используйте
resourceId()для получения идентификатора для ресурса, развернутого в группе ресурсов."subnet": { "id": "[resourceId(parameters('virtualNetworkResourceGroup'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnet1Name'))]" }Используйте функцию
subscriptionResourceId(), чтобы получить идентификатор ресурса, развернутого в рамках подписки.Например, чтобы получить идентификатор ресурса для определения политики, развернутого в подписке, используйте следующее:
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"Используйте функцию
extensionResourceId()для ресурсов, являющихся расширениями группы управления. Определения настраиваемой политики, развернутые в группе управления, являются расширениями группы управления.Чтобы получить идентификатор ресурса для определения пользовательской политики на уровне группы управления, используйте следующую команду:
"policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"Используйте функцию
tenantResourceId(), чтобы получить идентификатор для ресурса, развернутого у арендатора. Встроенные определения политик — это ресурсы на уровне клиента. При назначении встроенной политики на уровне группы управления используйте функциюtenantResourceId.Чтобы получить идентификатор ресурса для встроенного определения политики, используйте следующую команду:
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
Разрешение функций в областях
При развертывании в нескольких областях функции resourceGroup() и subscription() обрабатываются по-разному в зависимости от того, как вы задаете шаблон. При связывании с внешним шаблоном функции всегда применяются к области этого шаблона. При вложении шаблона в родительский шаблон используйте свойство expressionEvaluationOptions, чтобы указать, относятся ли функции к группе ресурсов и подписке родительского шаблона или вложенного шаблона. Установите свойство в inner, чтобы оно соответствовало области вложенного шаблона. Установите свойство в значение outer, чтобы определить область родительского шаблона.
В следующей таблице показано, к родительской или вложенной группе ресурсов и подписке относятся функции.
| Тип шаблона | Область действия | Резолюция |
|---|---|---|
| вложенный | внешний (по умолчанию) | Родительская группа ресурсов |
| вложенный | внутренний | Подгруппа ресурсов |
| Связан | Не применимо | Подгруппа ресурсов |
В следующем примере шаблона показано следующее:
- Вложенный шаблон с областью по умолчанию (
outer). - Вложенный шаблон с областью действия
inner. - Связанный шаблон.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "defaultScopeTemplate",
"resourceGroup": "inlineGroup",
"properties": {
"mode": "Incremental",
"parameters": {},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"resourceGroupOutput": {
"type": "string",
"value": "[resourceGroup().name]"
}
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "innerScopeTemplate",
"resourceGroup": "inlineGroup",
"properties": {
"expressionEvaluationOptions": {
"scope": "inner"
},
"mode": "Incremental",
"parameters": {},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"resourceGroupOutput": {
"type": "string",
"value": "[resourceGroup().name]"
}
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "linkedTemplate",
"resourceGroup": "linkedGroup",
"properties": {
"mode": "Incremental",
"parameters": {},
"templateLink": {
"contentVersion": "1.0.0.0",
"uri": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/resourcegroupname.json"
}
}
}
],
"outputs": {
"parentRG": {
"type": "string",
"value": "[format('Parent resource group is {0}', resourceGroup().name)]"
},
"defaultScopeRG": {
"type": "string",
"value": "[format('Default scope resource group is {0}', reference('defaultScopeTemplate').outputs.resourceGroupOutput.value)]"
},
"innerScopeRG": {
"type": "string",
"value": "[format('Inner scope resource group is {0}', reference('innerScopeTemplate').outputs.resourceGroupOutput.value)]"
},
"linkedRG": {
"type": "string",
"value": "[format('Linked resource group is {0}', reference('linkedTemplate').outputs.resourceGroupOutput.value)]"
}
}
}
Чтобы протестировать предыдущий шаблон и просмотреть результаты, используйте PowerShell или Azure CLI.
New-AzResourceGroup -Name parentGroup -Location southcentralus
New-AzResourceGroup -Name inlineGroup -Location southcentralus
New-AzResourceGroup -Name linkedGroup -Location southcentralus
New-AzResourceGroupDeployment `
-ResourceGroupName parentGroup `
-TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crossresourcegroupproperties.json
Выходные данные из предыдущего примера:
Name Type Value
=============== ========================= ==========
parentRG String Parent resource group is parentGroup
defaultScopeRG String Default scope resource group is parentGroup
innerScopeRG String Inner scope resource group is inlineGroup
linkedRG String Linked resource group is linkedgroup
Дальнейшие шаги
- Дополнительные сведения об определении параметров в шаблоне см. в структуре и синтаксисе шаблонов ARM.
- Советы по устранению распространенных ошибок развертывания см. в статье об устранении распространенных ошибок развертывания Azure с помощью Azure Resource Manager.
- Сведения о развертывании шаблона, требующего маркера SAS, см. в статье о развертывании частного шаблона ARM с маркером SAS.