Функции области действия для шаблонов ARM

Resource Manager предоставляет следующие функции для получения значений области развертывания в шаблоне Azure Resource Manager (шаблон ARM).

Получение значений параметров, переменных или текущего развертывания описано в разделе Функции для параметров развертывания.

Совет

Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в описании функций scope.

managementGroup

managementGroup()

Возвращает объект со свойствами из группы управления в текущем развертывании.

В Bicep используйте функцию области managementGroup.

Remarks

managementGroup() можно использовать только для развертываний группы управления. Эта функция возвращает текущую группу управления для операции развертывания. Используется для получения свойств текущей группы управления.

Возвращаемое значение

Объект со свойствами для текущей группы управления.

Пример группы управления

Следующий пример возвращает свойства текущей группы управления.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "mgInfo": "[managementGroup()]"
  },
  "resources": [],
  "outputs": {
    "mgResult": {
      "type": "object",
      "value": "[variables('mgInfo')]"
    }
  }
}

Возвращается следующее:

"mgResult": {
  "type": "Object",
  "value": {
    "id": "/providers/Microsoft.Management/managementGroups/examplemg1",
    "name": "examplemg1",
    "properties": {
      "details": {
        "parent": {
          "displayName": "Tenant Root Group",
          "id": "/providers/Microsoft.Management/managementGroups/00000000-0000-0000-0000-000000000000",
          "name": "00000000-0000-0000-0000-000000000000"
        },
        "updatedBy": "00000000-0000-0000-0000-000000000000",
        "updatedTime": "2020-07-23T21:05:52.661306Z",
        "version": "1"
      },
      "displayName": "Example MG 1",
      "tenantId": "00000000-0000-0000-0000-000000000000"
    },
    "type": "/providers/Microsoft.Management/managementGroups"
  }
}

Следующий пример создает новую группу управления и применяет эту функцию для настройки родительской группы управления.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "mgName": {
      "type": "string",
      "defaultValue": "[format('mg-{0}', uniqueString(newGuid()))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Management/managementGroups",
      "apiVersion": "2020-05-01",
      "scope": "/",
      "name": "[parameters('mgName')]",
      "properties": {
        "details": {
          "parent": {
            "id": "[managementGroup().id]"
          }
        }
      }
    }
  ],
  "outputs": {
    "newManagementGroup": {
      "type": "string",
      "value": "[parameters('mgName')]"
    }
  }
}

resourceGroup

resourceGroup()

Возвращает объект, который представляет текущую группу ресурсов.

В Bicep используйте функцию области resourceGroup.

Возвращаемое значение

Возвращаемый объект имеет следующий формат:

{
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "name": "{resourceGroupName}",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "{resourceGroupLocation}",
  "managedBy": "{identifier-of-managing-resource}",
  "tags": {
  },
  "properties": {
    "provisioningState": "{status}"
  }
}

Свойство managedBy возвращается только для групп ресурсов, которые содержат ресурсы, управляемые другой службой. Для управляемых приложений, Databricks и AKS значением этого свойства является идентификатор управляющего ресурса.

Remarks

Функцию resourceGroup() нельзя использовать в шаблоне, который развернут на уровне подписки. Ее можно использовать только в шаблонах, развернутых в группе ресурсов. Функцию resourceGroup() можно использовать в связанном или вложенном шаблоне (с внутренней областью), предназначенном для группы ресурсов, даже если родительский шаблон развертывается в подписке. В этом сценарии связанный или вложенный шаблон развертывается на уровне группы ресурсов. Дополнительные сведения о нацеливании на группу ресурсов в развертывании уровня подписки см. в разделе Развертывание ресурсов Azure в нескольких подписках или группах ресурсов.

Как правило, функция resourceGroup используется для создания ресурсов в одном расположении с группой ресурсов. В следующем примере расположение группы ресурсов используется в качестве значения параметра по умолчанию.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
}

Кроме того, функцию resourceGroup можно использовать для применения к ресурсу тегов из группы ресурсов. Дополнительные сведения см. в разделе Применение тегов из группы ресурсов.

При использовании вложенных шаблонов для развертывания в нескольких группах ресурсов можно указать область для вычисления функции resourceGroup. Дополнительные сведения см. в разделе Развертывание ресурсов Azure в нескольких подписках или группах ресурсов.

Пример группы ресурсов

Следующий пример возвращает свойства группы ресурсов.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "resourceGroupOutput": {
      "type": "object",
      "value": "[resourceGroup()]"
    }
  }
}

В предыдущем примере возвращается объект в следующем формате:

{
  "id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
  "name": "examplegroup",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "southcentralus",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

Подписка

subscription()

Возвращает сведения о подписке для текущего развертывания.

В Bicep используйте функцию области subscription.

Возвращаемое значение

Функция возвращает значение в следующем формате:

{
  "id": "/subscriptions/{subscription-id}",
  "subscriptionId": "{subscription-id}",
  "tenantId": "{tenant-id}",
  "displayName": "{name-of-subscription}"
}

Remarks

При использовании вложенных шаблонов для развертывания в нескольких подписках можно указать область для вычисления функции subscription. Дополнительные сведения см. в разделе Развертывание ресурсов Azure в нескольких подписках или группах ресурсов.

Пример подписки

В следующем примере показана функция subscription, вызываемая в разделе выходных данных.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "subscriptionOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

tenant

tenant()

Возвращает клиент пользователя.

В Bicep используйте функцию области subscription.

Remarks

tenant() может использоваться для любой области развертывания. Свойство всегда возвращает текущий клиент. Эта функция используется для получения свойств текущего арендатора.

При настройке области для связанного шаблона или ресурса расширения используйте следующий синтаксис: "scope": "/".

Возвращаемое значение

Объект со свойствами текущего клиента.

Пример клиента

Следующий пример возвращает свойства арендатора.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "tenantInfo": "[tenant()]"
  },
  "resources": [],
  "outputs": {
    "tenantResult": {
      "type": "object",
      "value": "[variables('tenantInfo')]"
    }
  }
}

Возвращается следующее:

"tenantResult": {
  "type": "Object",
  "value": {
    "countryCode": "US",
    "displayName": "Contoso",
    "id": "/tenants/00000000-0000-0000-0000-000000000000",
    "tenantId": "00000000-0000-0000-0000-000000000000"
  }
}

Дальнейшие действия