Functions for use with Azure Blueprints

Important

Azure Blueprints (Preview) будет выведен из эксплуатации 31 января 2027 года, а поэтапный вывод начнётся с 31 июля 2026 года. Перенесите существующие определения и назначения чертежей в Deployment Stacks (рекомендую) и Template Specs. Артефакты чертежей преобразуются в шаблоны ARM JSON или файлы Bicep, используемые для определения стеков развертывания. Для полной поэтапной хронологии, влияния и часто задаваемых вопросов см. Azure Blueprints retirement или https://aka.ms/AzureBlueprintsRetirement. Сведения о том, как создать артефакт в качестве ресурса ARM, см. в статье:

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

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

artifacts

artifacts(artifactName)

Возвращает объект свойств, заполненный артефактами этого чертежа.

Note

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

Параметры

Parameter Required Тип Description
artifactName Yes string Название артефакта чертежа.

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

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

{
  "outputs": {collectionOfOutputProperties}
}

Артефакт присвоения политики

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

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

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

Артефакт присвоения ролей

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

Example

Артефакт шаблона ARM с ID myTemplateArtifact , содержащий следующее свойство выхода образца:

{
    "$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 :

Expression Тип Ценность
[artifacts("myTemplateArtifact").outputs.myArray] Массив [«первый», «второй»]
[artifacts("myTemplateArtifact").outputs.myArray[0]] String «Первый»
[artifacts("myTemplateArtifact").outputs.myString] String «Моя струнная стоимость»
[artifacts("myTemplateArtifact").outputs.myObject] Object { "myproperty": "my value", "anotherProperty": true }
[artifacts("myTemplateArtifact").outputs.myObject.myProperty] String «Моя ценность»
[artifacts("myTemplateArtifact").outputs.myObject.anotherProperty] Булево True

concat

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

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

Параметры

Parameter Required Тип Description
строка1 Yes string Первое значение для конкатенации.
дополнительные аргументы Нет string Дополнительные значения в последовательном порядке для конкатенации

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

Цепочка объединённых значений.

Remarks

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

Example

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

parameters

parameters(parameterName)

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

Параметры

Parameter Required Тип Description
parameterName Yes string Имя параметра, который требуется вернуть.

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

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

Remarks

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

Example

Определите параметры 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() функции — создание ресурсов в том же месте, что и артефакт группы ресурсов.

Example

Чтобы использовать местоположение группы ресурсов, установленное либо в определении чертежа, либо во время присвоения, в качестве локации для другого артефакта, объявьте объект заполняющей группы ресурсов в определении чертежа. В этом примере 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(), который требует контекста артефакта, эта функция используется для получения свойств конкретной группы ресурсов, когда не в контексте этой группы ресурсов.

Параметры

Parameter Required Тип Description
ЗаполнительИмя Yes string Заполнительное название артефакта группы ресурсов для возврата.

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

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

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

Example

Чтобы использовать местоположение группы ресурсов, установленное либо в определении чертежа, либо во время присвоения, в качестве локации для другого артефакта, объявьте объект заполняющей группы ресурсов в определении чертежа. В этом примере 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

subscription()

Возвращает информацию о подписке на текущее задание чертежа.

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

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

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

Example

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

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

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