Поделиться через


Функции, доступные для использования с Azure Blueprints

Важно!

11 июля 2026 г. схемы (предварительная версия) будут объявлены нерекомендуемыми. Перенос существующих определений и назначений схем в спецификации шаблонов и стеки развертывания. Артефакты схемы необходимо преобразовать в шаблоны JSON ARM или файлы Bicep, используемые для определения стеков развертывания. Чтобы узнать, как создать артефакт в качестве ресурса ARM, см. следующие статьи:

Azure Blueprints предоставляют функции, которые делают определение схемы более динамичным. Эти функции предназначены для использования с определениями и артефактами схем. Артефакт шаблона ARM полностью поддерживает использование функций Resource Manager, а также получение динамических значений с помощью параметра схемы.

Поддерживаются следующие функции:

artifacts

artifacts(artifactName)

Возвращает объект свойств, заполненных выходными данными выбранных артефактов схемы.

Примечание

Функцию artifacts() нельзя использовать из шаблона ARM. Эту функцию можно использовать только в JSON определения схемы или артефакта для управления схемой с помощью Azure PowerShell или REST API в режиме схема как код.

Параметры

Параметр Обязательно Тип Описание
artifactName Да строка Имя артефакта схемы.

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

Объект выходных свойств. Свойства outputs зависят от типа артефакта схемы, на который указывает ссылка. Все типы соблюдают следующий формат:

{
  "outputs": {collectionOfOutputProperties}
}

Артефакт назначения политики

{
    "outputs": {
        "policyAssignmentId": "{resourceId-of-policy-assignment}",
        "policyAssignmentName": "{name-of-policy-assignment}",
        "policyDefinitionId": "{resourceId-of-policy-definition}",
    }
}

Артефакт шаблона ARM

Свойства outputs для возвращаемого объекта определяются в шаблоне ARM и возвращаются развертыванием.

Артефакт назначения ролей

{
    "outputs": {
        "roleAssignmentId": "{resourceId-of-role-assignment}",
        "roleDefinitionId": "{resourceId-of-role-definition}",
        "principalId": "{principalId-role-is-being-assigned-to}",
    }
}

Пример

Артефакт шаблона ARM с идентификатором myTemplateArtifact, который содержит следующий пример свойства output:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    ...
    "outputs": {
        "myArray": {
            "type": "array",
            "value": ["first", "second"]
        },
        "myString": {
            "type": "string",
            "value": "my string value"
        },
        "myObject": {
            "type": "object",
            "value": {
                "myProperty": "my value",
                "anotherProperty": true
            }
        }
    }
}

Ниже приводятся несколько примеров получения данных из примера myTemplateArtifact.

Выражение Тип Значение
[artifacts("myTemplateArtifact").outputs.myArray] Array ["first", "second"]
[artifacts("myTemplateArtifact").outputs.myArray[0]] Строка "first"
[artifacts("myTemplateArtifact").outputs.myString] Строка "my string value"
[artifacts("myTemplateArtifact").outputs.myObject] Объект { "myproperty": "my value", "anotherProperty": true }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] Строка "my value"
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] Bool True

concat

concat(string1, string2, string3, ...)

Объединяет несколько строковых значений и возвращает результирующую строку.

Параметры

Параметр Обязательно Тип Описание
строка1 Да строка Первое значение для сцепки.
дополнительные аргументы Нет строка Упорядоченные в последовательность дополнительные значения для объединения

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

Строка объединенных значений.

Remarks

Функция Azure Blueprints отличается от функции шаблона ARM тем, что она работает только со строками.

Пример

concat(parameters('organizationName'), '-vm')

параметры

parameters(parameterName)

Возвращает значение параметра схемы. Указанное имя параметра должно быть определено в разделе определении схемы или в артефактах схемы.

Параметры

Параметр Обязательно Тип Описание
parameterName Да строка Имя параметра, который требуется вернуть.

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

Значение указанного параметра схемы или артефакта схемы.

Remarks

Функция Azure Blueprints отличается от функции шаблона ARM тем, что она работает только с параметрами схемы.

Пример

Определите параметр principalIds в определении схемы:

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "parameters": {
            "principalIds": {
                "type": "array",
                "metadata": {
                    "displayName": "Principal IDs",
                    "description": "This is a blueprint parameter that any artifact can reference. We'll display these descriptions for you in the info bubble. Supply principal IDs for the users,groups, or service principals for the Azure role assignment.",
                    "strongType": "PrincipalId"
                }
            }
        },
        ...
    }
}

Затем укажите principalIds в качестве аргумента для parameters() в артефакте схемы:

{
    "type": "Microsoft.Blueprint/blueprints/artifacts",
    "kind": "roleAssignment",
    ...
    "properties": {
        "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
        "principalIds": "[parameters('principalIds')]",
        ...
    }
}

resourceGroup

resourceGroup()

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

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

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

{
  "name": "{resourceGroupName}",
  "location": "{resourceGroupLocation}",
}

Remarks

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

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

Пример

Чтобы указать расположение группы ресурсов, заданное в определении схемы или во время назначения, как расположение для другого артефакта, объявите в определении схемы объект-заполнитель для группы ресурсов. В этом примере используется заполнитель группы ресурсов NetworkingPlaceholder.

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "resourceGroups": {
            "NetworkingPlaceholder": {
                "location": "eastus"
            }
        }
    }
}

Теперь примените функцию resourceGroup() в контексте артефакта схемы, который предназначен для объекта-заполнителя группы ресурсов. Наш пример развертывает артефакт шаблона в группе ресурсов NetworkingPlaceholder и предоставляет параметр resourceLocation, который динамически заполняется расположением группы ресурсов NetworkingPlaceholder для шаблона. Расположение группы ресурсов NetworkingPlaceholder в такой ситуации можно определять статически в определении схемы или динамически во время назначения. В любом случае артефакт шаблона получает эту информацию в виде параметра и применяет ее для развертывания ресурсов в правильном расположении.

{
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "kind": "template",
  "properties": {
      "template": {
        ...
      },
      "resourceGroup": "NetworkingPlaceholder",
      ...
      "parameters": {
        "resourceLocation": {
          "value": "[resourceGroup().location]"
        }
      }
  }
}

resourceGroups

resourceGroups(placeholderName)

Возвращает объект, который представляет артефакт для указанной группы ресурсов. В отличие от функции resourceGroup(), для которой требуется контекст артефакта, эта функция позволяет получить свойства определенного объекта-заполнителя группы ресурсов не из контекста этой группы ресурсов.

Параметры

Параметр Обязательно Тип Описание
placeholderName Да строка Имя заполнителя для возвращаемого артефакта группы ресурсов.

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

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

{
  "name": "{resourceGroupName}",
  "location": "{resourceGroupLocation}",
}

Пример

Чтобы указать расположение группы ресурсов, заданное в определении схемы или во время назначения, как расположение для другого артефакта, объявите в определении схемы объект-заполнитель для группы ресурсов. В этом примере используется заполнитель группы ресурсов NetworkingPlaceholder.

{
    "type": "Microsoft.Blueprint/blueprints",
    "properties": {
        ...
        "resourceGroups": {
            "NetworkingPlaceholder": {
                "location": "eastus"
            }
        }
    }
}

Теперь примените функцию resourceGroups() в контексте любого артефакта схемы, чтобы получить ссылку на объект-заполнитель указанной группы ресурсов. Наш пример развертывает артефакт шаблона вне группы ресурсов NetworkingPlaceholder и предоставляет параметр artifactLocation, который динамически заполняется расположением группы ресурсов NetworkingPlaceholder для шаблона. Расположение группы ресурсов NetworkingPlaceholder в такой ситуации можно определять статически в определении схемы или динамически во время назначения. В любом случае артефакт шаблона получает эту информацию в виде параметра и применяет ее для развертывания ресурсов в правильном расположении.

{
  "kind": "template",
  "properties": {
      "template": {
          ...
      },
      ...
      "parameters": {
        "artifactLocation": {
          "value": "[resourceGroups('NetworkingPlaceholder').location]"
        }
      }
  },
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "name": "myTemplate"
}

Подписка

subscription()

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

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

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

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

Пример

Используйте отображаемое имя подписки и функцию concat(), чтобы создать соглашение об именовании, которое передается в качестве параметра resourceName в артефакт шаблона.

{
  "kind": "template",
  "properties": {
      "template": {
          ...
      },
      ...
      "parameters": {
        "resourceName": {
          "value": "[concat(subscription().displayName, '-vm')]"
        }
      }
  },
  "type": "Microsoft.Blueprint/blueprints/artifacts",
  "name": "myTemplate"
}

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