Функции, доступные для использования с 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"
}
Дальнейшие действия
- Ознакомьтесь со сведениями о жизненном цикле схем.
- Узнайте, как использовать статические и динамические параметры.
- Научитесь настраивать последовательность схемы.
- Узнайте, как применять блокировку ресурсов схемы.
- Узнайте, как обновлять существующие назначения.
- Устраняйте проблемы, возникающие во время назначения схемы, с помощью общих инструкций по устранению неполадок.