Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Azure Logic Apps (потребление)
Когда вы будете готовы к автоматизации создания и развертывания своего приложения логики, его определение базового рабочего процесса можно расширить в шаблон Azure Resource Manager. Этот шаблон определяет инфраструктуру, ресурсы, параметры и другую информацию для подготовки и развертывания приложения логики. Определяя параметры для значений, изменяющихся при развертывании, то есть выполняя параметризацию, вы можете многократно и последовательно развертывать приложения логики в соответствии с различными потребностями развертывания.
Например, если вы развертываете приложение в средах разработки, тестирования и производства, то, скорее всего, используете разные строки подключения для каждой среды. Вы можете объявить параметры шаблонов, которые принимают разные строки подключения, которые затем будут храниться в отдельном файле параметров. Так эти значения можно изменять без обновления и повторного развертывания шаблона. В сценариях, где у вас есть значения параметров, содержащие конфиденциальные данные или требующие защиты, например пароли и секреты, вы можете хранить эти значения в Azure Key Vault, а файл параметров сможет извлекать их оттуда. Однако в этих сценариях потребуется повторно выполнить развертывание, чтобы получить текущие значения.
В этом обзоре описываются атрибуты в шаблоне Resource Manager, который включает определение рабочего процесса приложения логики. Шаблон и определение рабочего процесса используют синтаксис JSON. Однако в них есть и отличия, потому что определение рабочего процесса также соответствует схеме языка определения рабочего процесса. Например, выражения шаблона и определения рабочего процесса отличаются способом ссылки на параметры и значения, которые они могут принимать.
Совет
Шаблоны приложений логики можно создать с помощью Azure PowerShell с модулем LogicAppTemplate.
В этой статье пример приложения логики использует триггер Office 365 Outlook, который срабатывает при поступлении нового электронного письма, а также действие Хранилища BLOB-объектов Azure, которое создает BLOB-объект для текста сообщения и отправляет его в контейнер хранилища Azure. В примерах также показано, как параметризовать значения, которые зависят от развертывания.
Дополнительные сведения о шаблонах Resource Manager см. в перечисленных ниже статьях.
- Структура и синтаксис шаблона Azure Resource Manager
- Рекомендации по работе с шаблонами Azure Resource Manager
- Разработка шаблонов Azure Resource Manager для обеспечения согласованности с облаком
Сведения о ресурсах шаблона, относящиеся к приложениям логики, учетным записям интеграции и артефактам учетной записи интеграции, см. в разделе "Типы ресурсов Microsoft.Logic".
Примеры шаблонов приложений логики
- Полный шаблон для примеров этой статьи.
- Пример шаблона быстрого запуска для приложения логики в GitHub
Для REST API Azure Logic Apps начните с обзора REST API Azure Logic Apps.
Структура шаблона
На верхнем уровне шаблон Resource Manager соответствует приведенной ниже структуре, которая полностью описана в разделе Структура и синтаксис шаблона Azure Resource Manager.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"functions": [],
"resources": [],
"outputs": {}
}
Для шаблона приложения логики вы в основном работаете со следующими объектами шаблона:
| Атрибут | Описание |
|---|---|
parameters |
Объявляет параметры шаблона для приема значений, которые используются при создании и настройке ресурсов для развертывания в Azure. Например, эти параметры принимают значения для названия и расположения приложения логики, подключений и других ресурсов, необходимых для развертывания. Эти значения параметров можно хранить в файле параметров, который описывается далее в статье. Общие сведения см. в разделе "Параметры" статьи "Структура и синтаксис шаблона Resource Manager". |
resources |
Определяет ресурсы для создания или обновления и развертывания в группе ресурсов Azure, например приложение логики, подключения, учетные записи хранения Azure и т. д. Общие сведения см. в разделе "Ресурсы" статьи "Структура и синтаксис шаблона Resource Manager". |
В шаблоне приложения логики используется следующий формат имени файла:
< logic-app-name>.json
Внимание
Синтаксис шаблона чувствителен к регистру, поэтому обязательно придерживайтесь единообразного использования прописных и строчных букв.
Параметры шаблона
Шаблон приложения логики имеет несколько объектов parameters, которые существуют на разных уровнях и выполняют разные функции. Например, на верхнем уровне можно объявить параметры шаблона для значений, которые будут приниматься и использоваться при создании и развертывании ресурсов в Azure. Пример:
Ваше приложение логики.
Подключения, используемые приложением логики для доступа к другим службам и системам с помощью управляемых соединителей.
Другие ресурсы, необходимые приложению логики для развертывания.
Например, если приложение логики использует учетную запись интеграции для сценариев B2B, то объект верхнего уровня шаблона
parametersобъявляет параметр, который принимает идентификатор ресурса для этой учетной записи интеграции.
Ниже приведена общая структура и синтаксис для определения параметра, который полностью описан в разделе "Параметры" статьи "Структура и синтаксис шаблона Resource Manager".
"<parameter-name>": {
"type": "<parameter-type>",
"defaultValue": <default-parameter-value>,
<other-parameter-attributes>,
"metadata": {
"description": "<parameter-description>"
}
},
В примере ниже показаны параметры шаблона только для значений, используемых для создания и развертывания следующих ресурсов в Azure:
- Имя и расположение приложения логики
- Идентификатор для использования с учетной записью интеграции, привязанной к приложению логики.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
// Template parameters
"parameters": {
"LogicAppName": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"defaultValue": "MyLogicApp",
"metadata": {
"description": "The resource name for the logic app"
}
},
"LogicAppLocation": {
"type": "string",
"minLength": 1,
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The resource location for the logic app"
}
},
"LogicAppIntegrationAccount": {
"type":"string",
"minLength": 1,
"defaultValue": "/subscriptions/<Azure-subscription-ID>/resourceGroups/fabrikam-integration-account-rg/providers/Microsoft.Logic/integrationAccounts/fabrikam-integration-account",
"metadata": {
"description": "The ID to use for the integration account"
}
}
},
"variables": {},
"functions": [],
"resources": [],
"outputs": {}
}
За исключением параметров, обрабатывающих конфиденциальные или защищенные значения, например имена пользователей, пароли и секреты, все эти параметры включают атрибуты defaultValue, хотя в некоторых случаях значения по умолчанию пустые. Значения развертывания, используемые для этих параметров шаблона, предоставляются в примере файла параметров, описанном далее в статье.
Дополнительные сведения о защите параметров шаблонов см. в следующих разделах:
- Рекомендации по безопасности параметров шаблона
- Повышение безопасности параметров шаблона
- Передача защищенных значений параметров с помощью Azure Key Vault
Другие объекты шаблона часто ссылаются на параметры шаблона, чтобы использовать значения, передаваемые через параметры шаблона, например:
Объект ресурсов шаблона, описанный далее в статье, определяет каждый ресурс в Azure, который требуется создать и развернуть, например определение ресурса приложения логики. Эти ресурсы часто используют значения параметров шаблона, например название и расположение приложения логики, а также сведения о подключении.
На более глубоком уровне определения ресурса приложения логики объект параметров определения рабочего процесса объявляет параметры для значений, используемых в среде выполнения приложения логики. Например, вы можете объявить параметры определения рабочего процесса для имени пользователя и пароля, которые триггер HTTP использует для аутентификации. Чтобы указать значения для параметров определения рабочего процесса, используйте объект
parameters, находящийся вне определения рабочего процесса, но по-прежнему внутри определения ресурса приложения логики. В этом внешнем объектеparametersможно ссылаться на ранее объявленные параметры шаблона, которые могут принимать значения при развертывании из файла параметров.
В случае ссылки на параметры выражения и функции шаблона используют другой синтаксис и ведут себя не так, как выражения и функции определения рабочего процесса. Дополнительные сведения об этих различиях см. в разделе Ссылки на параметры.
Рекомендации по использованию параметров шаблона
Ниже приведены рекомендации по определению параметров.
Объявляйте параметры только для значений, которые различаются в зависимости от потребностей развертывания. Не объявляйте параметры для значений, которые не меняются при разных требованиях к развертыванию.
Включайте атрибут
defaultValue, который может указывать пустые значения, во все параметры, кроме конфиденциальных или защищенных значений. Всегда используйте защищенные параметры для имен пользователей, паролей и секретов. Чтобы скрыть или защитить конфиденциальные значения параметров, следуйте указаниям в следующих разделах.Чтобы отличать названия параметров шаблона от названий параметров определения рабочего процесса, можно использовать описательный подход, например
TemplateFabrikamPassword.
Дополнительные рекомендации по использованию шаблонов см. в разделе Рекомендации по использованию параметров шаблона.
Файл параметров шаблона
Чтобы предоставлять значения для параметров шаблона, сохраните их в файле параметров. Можно использовать разные файлы параметров в зависимости от потребностей развертывания. Вот формат имени файла, который следует использовать:
- Имя файла шаблона приложения логики: <logic-app-name>.json
- Имя файла параметров: <logic-app-name>.parameters.json
Ниже приведена структура файла параметров, которая включает ссылку на хранилище ключей для передачи защищенного значения параметра с помощью Azure Key Vault.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
// Template parameter values
"parameters": {
"<parameter-name-1>": {
"value": "<parameter-value>"
},
"<parameter-name-2>": {
"value": "<parameter-value>"
},
"<secured-parameter-name>": {
"reference": {
"keyVault": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/<key-vault-name>"
},
"secretName": "<secret-name>"
}
},
<other-parameter-values>
}
}
В следующем файле параметров указаны значения для параметров шаблона, объявленных ранее в статье.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
// Template parameter values
"parameters": {
"LogicAppName": {
"value": "Email-Processor-Logic-App"
},
"LogicAppLocation": {
"value": "westeurope"
}
}
}
Ресурсы для шаблонов
В шаблоне есть объект resources в виде массива, содержащего определения каждого ресурса для создания и развертывания в Azure, например определение ресурса приложения логики, определение ресурса подключения и другие ресурсы, которые нужны для развертывания приложения логики.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {<template-parameters>},
"variables": {},
"functions": [],
"resources": [
{
<logic-app-resource-definition>
},
// Start connection resource definitions
{
<connection-resource-definition-1>
},
{
<connection-resource-definition-2>
}
],
"outputs": {}
}
Примечание.
Шаблоны могут включать определения ресурсов для нескольких приложений логики, поэтому убедитесь, что все ресурсы приложения логики используют одну и ту же группу ресурсов Azure.
Определение ресурсов приложения логики
Определение ресурсов рабочего процесса приложения логики в шаблоне начинается с объекта properties, который содержит следующие сведения.
- Состояние приложения логики при развертывании
- Идентификатор любой учетной записи интеграции, используемой вашим приложением логики.
- Определение рабочего процесса приложения логики.
- Объект
parameters, который задает значения для использования во время выполнения. - Другие сведения о ресурсах приложения логики, например его название, тип, расположение, параметры конфигурации среды выполнения и т. д.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {<template-parameters>},
"variables": {},
"functions": [],
"resources": [
{
// Start logic app resource definition
"properties": {
"state": "<Enabled or Disabled>",
"integrationAccount": {
"id": "[parameters('LogicAppIntegrationAccount')]" // Template parameter reference
},
"definition": {<workflow-definition>},
"parameters": {<workflow-definition-parameter-values>},
"accessControl": {},
"runtimeConfiguration": {}
},
"name": "[parameters('LogicAppName')]", // Template parameter reference
"type": "Microsoft.Logic/workflows",
"location": "[parameters('LogicAppLocation')]", // Template parameter reference
"tags": {
"displayName": "LogicApp"
},
"apiVersion": "2019-05-01",
"dependsOn": [
]
}
// End logic app resource definition
],
"outputs": {}
}
Ниже приведены атрибуты, характерные для определения ресурса приложения логики:
| Атрибут | Обязательное поле | Тип | Описание |
|---|---|---|---|
state |
Да | Строка | Состояние приложения логики при развертывании. Enabled означает, что приложение логики запущено, Disabled — что приложение логики неактивно. Если вы не готовы запускать приложение логики, но хотите развернуть черновую версию, используйте параметр Disabled. |
integrationAccount |
Нет | Объект | Если приложение логики использует учетную запись интеграции, которая хранит артефакты для сценариев B2B, этот объект включает атрибут id, содержащий идентификатор учетной записи интеграции. |
definition |
Да | Объект | Определение базового рабочего процесса приложения логики. Этот объект также появляется в представлении кода и полностью описан в статье Справочник по схемам языка определения рабочего процесса. В этом определении рабочего процесса объект parameters объявляет параметры для значений, используемых в среде выполнения приложения логики. См. дополнительные сведения об Определении и параметрах рабочего процесса. Чтобы просмотреть атрибуты в определении рабочего процесса приложения логики, перейдите из представления конструктора в представление кода в портал Azure или с помощью средства, например Azure Resource Explorer. |
parameters |
Нет | Объект |
Значения параметров определения рабочего процесса, используемые во время выполнения приложения логики. Определения параметров для этих значений отображаются в объекте параметров определения рабочего процесса. Кроме того, если приложение логики использует управляемые соединители для доступа к другим службам и системам, этот объект включает объект $connections, который задает значения подключения на время выполнения. |
accessControl |
Нет | Объект | Используется для указания атрибутов безопасности приложения логики, например ограниченного доступа по протоколу IP к триггерам запросов или входным и выходным данным журнала выполнения. Дополнительные сведения см. в статье Безопасный доступ к приложениям логики. |
runtimeConfiguration |
Нет | Объект | Позволяет указывать свойства operationOptions для контроля поведения логики приложения во время выполнения. Например, приложение логики можно запустить в режиме высокой пропускной способности. |
Дополнительные сведения об определениях ресурсов для этих объектов Azure Logic Apps см. в следующих типах ресурсов Microsoft.Logic:
Артефакты учетной записи интеграции
Определение и параметры рабочего процесса
Определение рабочего процесса приложения логики отображается в объекте definition, который находится в объекте properties внутри определения ресурсов приложения логики. Объект definition также появляется в представлении кода и подробно описан в Справочнике по схемам языка определения рабочего процесса. Определение рабочего процесса включает внутренний объект объявления parameters, в котором можно определить новые или изменить существующие параметры для значений, используемых определением рабочего процесса во время выполнения. Затем можно сослаться на эти параметры внутри триггера или действий в рабочем процессе. По умолчанию объект parameters пуст, если приложение логики не создает подключения к другим службам и системам через управляемые соединители.
Чтобы указать значения для параметров определения рабочего процесса, используйте объект parameters, находящийся вне определения рабочего процесса, но внутри определения ресурса приложения логики. В этом внешнем объекте parameters можно ссылаться на ранее объявленные параметры шаблона, которые могут принимать значения при развертывании из файла параметров.
Совет
Рекомендуется не ссылаться непосредственно на параметры шаблона, которые оцениваются при развертывании, из определения рабочего процесса. Вместо этого объявите параметр определения рабочего процесса, который затем можно задать в объекте parameters, находящемся вне определения рабочего процесса, но по-прежнему внутри определения ресурса приложения логики. Дополнительную информацию см. в разделе Ссылки на параметры.
Приведенный ниже синтаксис показывает, где можно объявить параметры на уровнях определения шаблона и рабочего процесса, а также где можно задать значения этих параметров, ссылаясь на параметры определения шаблона и рабочего процесса.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
// Template parameters
"parameters": {
"<template-parameter-name>": {
"type": "<parameter-type>",
"defaultValue": "<parameter-default-value>",
"metadata": {
"description": "<parameter-description>"
}
}
},
"variables": {},
"functions": [],
"resources": [
{
// Start logic app resource definition
"properties": {
<other-logic-app-resource-properties>,
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {<action-definitions>},
// Workflow definition parameters
"parameters": {
"<workflow-definition-parameter-name>": {
"type": "<parameter-type>",
"defaultValue": "<parameter-default-value>",
"metadata": {
"description": "<parameter-description>"
}
}
},
"triggers": {
"<trigger-name>": {
"type": "<trigger-type>",
"inputs": {
// Workflow definition parameter reference
"<attribute-name>": "@parameters('<workflow-definition-parameter-name>')"
}
}
},
<...>
},
// Workflow definition parameter value
"parameters": {
"<workflow-definition-parameter-name>": {
"value": "[parameters('<template-parameter-name>')]"
}
},
"accessControl": {}
},
<other-logic-app-resource-definition-attributes>
}
// End logic app resource definition
],
"outputs": {}
}
Защищенные параметры определения рабочего процесса
Объявляйте и редактируйте параметр, обрабатывающий конфиденциальную информацию, например пароли, ключи доступа или секреты, во время выполнения, с помощью типа securestring или secureobject. Вы можете ссылаться на этот параметр по всему определению рабочего процесса и внутри него. На верхнем уровне шаблона объявите параметр того же типа для обработки этих данных при развертывании.
Чтобы задать значение для параметра определения рабочего процесса, используйте объект parameters, находящийся вне определения рабочего процесса, но внутри определения ресурса приложения логики, для ссылки на параметр шаблона. Наконец, чтобы передать значение в параметр шаблона во время развертывания, сохраните это значение в Azure Key Vault и укажите Key Vault в файле параметров, который шаблон использует во время развертывания.
В следующем примере шаблона показано, как можно выполнять подобные задачи с помощью определения защищенных параметров, чтобы хранить их значения в Azure Key Vault:
- Объявите защищенные параметры для значений, используемых для аутентификации.
- Используйте эти значения на уровнях определения шаблона и рабочего процесса.
- Указывайте эти значения в файле параметров.
Шаблон
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
<previously-defined-template-parameters>,
// Additional template parameters for passing values to use in workflow definition
"TemplateAuthenticationType": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The type of authentication used for the Fabrikam portal"
}
},
"TemplateFabrikamPassword": {
"type": "securestring",
"metadata": {
"description": "The password for the Fabrikam portal"
}
},
"TemplateFabrikamUserName": {
"type": "securestring",
"metadata": {
"description": "The username for the Fabrikam portal"
}
}
},
"variables": {},
"functions": [],
"resources": [
{
// Start logic app resource definition
"properties": {
<other-logic-app-resource-properties>,
// Start workflow definition
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {<action-definitions>},
// Workflow definition parameters
"parameters": {
"authenticationType": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The type of authentication used for the Fabrikam portal"
}
},
"fabrikamPassword": {
"type": "securestring",
"metadata": {
"description": "The password for the Fabrikam portal"
}
},
"fabrikamUserName": {
"type": "securestring",
"metadata": {
"description": "The username for the Fabrikam portal"
}
}
},
"triggers": {
"HTTP": {
"inputs": {
"authentication": {
// Reference workflow definition parameters
"password": "@parameters('fabrikamPassword')",
"type": "@parameters('authenticationType')",
"username": "@parameters('fabrikamUserName')"
}
},
"recurrence": {<...>},
"type": "Http"
}
},
<...>
},
// End workflow definition
// Start workflow definition parameter values
"parameters": {
"authenticationType": {
"value": "[parameters('TemplateAuthenticationType')]" // Template parameter reference
},
"fabrikamPassword": {
"value": "[parameters('TemplateFabrikamPassword')]" // Template parameter reference
},
"fabrikamUserName": {
"value": "[parameters('TemplateFabrikamUserName')]" // Template parameter reference
}
},
"accessControl": {}
},
<other-logic-app-resource-attributes>
}
// End logic app resource definition
],
"outputs": {}
}
Файл параметров
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
// Template parameter values
"parameters": {
<previously-defined-template-parameter-values>,
"TemplateAuthenticationType": {
"value": "Basic"
},
"TemplateFabrikamPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/fabrikam-key-vault"
},
"secretName": "FabrikamPassword"
}
},
"TemplateFabrikamUserName": {
"reference": {
"keyVault": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/fabrikam-key-vault"
},
"secretName": "FabrikamUserName"
}
}
}
}
Рекомендации для параметров определения рабочего процесса
Чтобы обеспечить правильное отображение параметров определения рабочего процесса в конструкторе приложений логики, следуйте приведенным ниже рекомендациям.
Включайте атрибут
defaultValue, который может указывать пустые значения, во все параметры, кроме конфиденциальных или защищенных значений.Всегда используйте защищенные параметры для имен пользователей, паролей и секретов. Чтобы скрыть или защитить конфиденциальные значения параметров, следуйте указаниям в следующих разделах.
Дополнительные сведения о параметрах определения рабочего процесса см. в разделе "Параметры" статьи "Язык определения рабочего процесса".
Определения ресурсов подключения
Когда приложение логики создает и использует подключения к другим службам и системам с помощью управляемых соединителей, объект шаблона resources содержит определения ресурсов для этих подключений. Несмотря на то, что подключения создаются в приложении логики, они представляют собой отдельные ресурсы Azure с собственными определениями. Кроме того, если подключение использует локальный ресурс шлюза данных, это определение ресурса существует отдельно от определения ресурса соединителя. Дополнительные сведения см. в определениях ресурсов локального шлюза данных и Microsoft.Web connectionGateways.
В следующем примере показано, где можно найти определения ресурсов подключения:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {<template-parameters>},
"variables": {},
"functions": [],
"resources": [
{
<logic-app-resource-definition>
},
// Start connection resource definitions
{
<connection-resource-definition-1>
},
{
<connection-resource-definition-2>
}
],
"outputs": {}
}
Определения ресурсов подключения ссылаются на параметры шаблона верхнего уровня, чтобы эти значения можно было указать при развертывании с помощью файла параметров. Убедитесь, что подключения используют ту же группу ресурсов и расположение в Azure, что и приложение логики.
Ниже приведен пример определения ресурсов для подключения Office 365 Outlook и соответствующих параметров шаблона.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
// Template parameters
"parameters": {
"LogicAppName": {<parameter-definition>},
"LogicAppLocation": {<parameter-definition>},
"office365_1_Connection_Name": {
"type": "string",
"defaultValue": "office365",
"metadata": {
"description": "The resource name for the Office 365 Outlook connection"
}
},
"office365_1_Connection_DisplayName": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The display name for the Office 365 Outlook connection"
}
}
},
"variables": {},
"functions": [],
"resources": [
{
<logic-app-resource-definition>
},
// Office 365 Outlook API connection resource definition
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
// Template parameter reference for connection name
"name": "[parameters('office365_1_Connection_Name')]",
// Template parameter reference for connection resource location. Must match logic app location.
"location": "[parameters('LogicAppLocation')]",
"properties": {
"api": {
// Connector ID
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]"
},
// Template parameter reference for connection display name
"displayName": "[parameters('office365_1_Connection_DisplayName')]"
}
}
],
"outputs": {}
}
Определение ресурса вашего приложения логики также работает с определениями ресурсов подключения следующим образом:
Внутри определения рабочего процесса объект
parametersобъявляет параметр$connectionsдля значений подключения, которые используются во время выполнения приложения логики. Кроме того, триггер или действие, которые создают подключение, используют соответствующие значения, передаваемые через параметр$connections.Вне определения рабочего процесса, но внутри определения ресурса приложения логики другой объект
parametersзадает значения, которые будут использоваться во время выполнения для параметра$connections, ссылаясь на соответствующие параметры шаблона. Эти значения используют выражения шаблона, чтобы ссылаться на ресурсы, которые безопасно хранят метаданные для подключений в приложении логики.Например, метаданные могут содержать строки подключения и маркеры доступа, которые можно хранить в Azure Key Vault. Чтобы передать эти значения в параметры шаблона, нужно сослаться на это хранилище ключей в файле параметров, который используется шаблоном во время развертывания. Дополнительные сведения о различиях между ссылочными параметрами см. в разделе Ссылки на параметры в этой статье.
Когда вы открываете определение рабочего процесса приложения логики в режиме просмотра кода через портал Azure, объект
$connectionsотображается вне определения рабочего процесса, но на одном и том же уровне. Следующий порядок в представлении кода упрощает ссылку параметров во время обновления определения рабочего процесса вручную.{ "$connections": {<workflow-definition-parameter-connection-values-runtime}, "definition": {<workflow-definition>} }Определение ресурсов приложения логики содержит объект
dependsOn, указывающий зависимости от подключений, используемых приложением логики.
Каждое создаваемое подключение имеет уникальное название в Azure. При создании нескольких подключений к одной и той же службе или системе к их названию добавляется число, которое увеличивается каждый раз. Пример: office365, office365-1 и т. д.
В примере ниже показано взаимодействие между определением ресурсов приложения логики и определением ресурсов подключения для Office 365 Outlook.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
// Template parameters
"parameters": {
"LogicAppName": {<parameter-definition>},
"LogicAppLocation": {<parameter-definition>},
"office365_1_Connection_Name": {<parameter-definition>},
"office365_1_Connection_DisplayName": {<parameter-definition>}
},
"variables": {},
"functions": [],
"resources": [
{
// Start logic app resource definition
"properties": {
<...>,
"definition": {
<...>,
"parameters": {
// Workflow definition "$connections" parameter
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
<...>
},
"parameters": {
// Workflow definition "$connections" parameter values to use at runtime
"$connections": {
"value": {
"office365": {
// Template parameter references
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]",
"connectionName": "[parameters('office365_1_Connection_Name')]"
}
}
}
}
},
<other-logic-app-resource-information>,
"dependsOn": [
"[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]"
]
// End logic app resource definition
},
// Office 365 Outlook API connection resource definition
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
// Template parameter reference for connection name
"name": "[parameters('office365_1_Connection_Name')]",
// Template parameter reference for connection resource location. Must match logic app location.
"location": "[parameters('LogicAppLocation')]",
"properties": {
"api": {
// Connector ID
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]"
},
// Template parameter reference for connection display name
"displayName": "[parameters('office365_1_Connection_DisplayName')]"
}
}
],
"outputs": {}
}
Определения ресурсов локального шлюза данных
Если подключение использует локальный ресурс шлюза данных, это определение ресурса существует отдельно от определения ресурса соединителя. Чтобы просмотреть определение ресурса шлюза данных, выполните следующие действия.
В портале Azure найдите и просмотрите ресурс Azure для вашего локального шлюза данных.
В меню ресурсов в разделе "Автоматизация" выберите "Экспорт шаблона".
После того как Azure создаст шаблон, в окне кода появится определение ресурса шлюза.
Дополнительные сведения см. в разделе Microsoft.Web connectionGateways.
Защищенные параметры подключения
Определение ресурсов подключения для параметров, которые содержат конфиденциальную информацию, например пароли, ключи доступа и секреты, содержит объект parameterValues, в котором указаны эти значения в формате пары "имя-значение". Чтобы скрыть эти сведения, можно объявить или изменить параметры шаблона для этих значений с помощью типов параметра securestring или secureobject. Затем эти сведения можно сохранить в Azure Key Vault. Чтобы передать эти значения в параметры шаблона, нужно сослаться на это хранилище ключей в файле параметров, который используется шаблоном во время развертывания.
Ниже приведен пример, в котором указаны название учетной записи и ключ доступа для подключения к Хранилищу BLOB-объектов Azure.
Файл параметров
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
// Template parameter values
"parameters": {
"LogicAppName": {
"value": "Email-Processor-Logic-App"
},
"LogicAppLocation": {
"value": "westeurope"
},
"azureblob_1_Connection_Name": {
"value": "Fabrikam-Azure-Blob-Storage-Connection"
},
"azureblob_1_Connection_DisplayName": {
"value": "Fabrikam-Storage"
},
"azureblob_1_accountName": {
"value": "Fabrikam-Storage-Account"
},
"azureblob_1_accessKey": {
"reference": {
"keyVault": {
"id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/fabrikam-key-vault"
},
"secretName": "FabrikamStorageKey"
}
}
}
}
Шаблон
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
// Template parameters
"parameters": {
"LogicAppName": {<parameter-definition>},
"LogicAppLocation": {<parameter-definition>},
"azureblob_1_Connection_Name": {<parameter-definition>},
"azureblob_1_Connection_DisplayName": {<parameter-definition>},
"azureblob_1_accountName": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "Name of the storage account the connector should use."
}
},
"azureblob_1_accessKey": {
"type": "secureobject",
"metadata": {
"description": "Specify a valid primary/secondary storage account access key."
}
}
},
"variables": {},
"functions": [],
"resources": [
{
"properties": {
"state": "Disabled",
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
// Azure Blob Storage action
"Create_blob": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
// Workflow definition parameter reference for values to use at runtime
"name": "@parameters('$connections')['azureblob']['connectionId']"
}
},
},
"method": "post",
"body": "@triggerBody()?['Body']",
"path": "/datasets/default/files",
"queries": {
"folderPath": "/emails",
"name": "@triggerBody()?['Subject']",
"queryParametersSingleEncoded": true
},
"runAfter": {},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
}
},
"parameters": {
// Workflow definition parameter for values to use at runtime
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {<trigger-definition>},
"contentVersion": "1.0.0.0",
"outputs": {}
},
"parameters": {
"$connections": {
"value": {
// Template parameter references for values to use at runtime
"azureblob": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]",
"connectionName": "[parameters('azureblob_1_Connection_Name')]"
}
}
}
},
"name": "[parameters('LogicAppName')]",
"type": "Microsoft.Logic/workflows",
"location": "[parameters('LogicAppLocation')]",
"tags": {
"displayName": "LogicApp"
},
"apiVersion": "2019-05-01",
// Template parameter reference for value to use at deployment
"dependsOn": [
"[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]"
]
}
},
// Azure Blob Storage API connection resource definition
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[parameters('azureblob_1_Connection_Name')]",
"location": "[parameters('LogicAppLocation')]",
"properties": {
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]"
},
"displayName": "[parameters('azureblob_1_Connection_DisplayName')]",
// Template parameter reference for values to use at deployment
"parameterValues": {
"accountName": "[parameters('azureblob_1_accountName')]",
"accessKey": "[parameters('azureblob_1_accessKey')]"
}
}
}
],
"outputs": {}
}
Авторизация подключений
После развертывания приложение логики корректно работает от начала до конца с корректными параметрами. Однако вам всё равно необходимо авторизовать все подключения OAuth, чтобы создать действительные токены доступа для аутентификации с использованием ваших учетных данных. Дополнительные сведения см. в разделе Авторизация подключений OAuth.
Некоторые подключения поддерживают использование субъекта-службы Microsoft Entra для авторизации подключений для приложения логики, зарегистрированного в Microsoft Entra ID. Например, в приведенном ниже определении ресурса подключения к Azure Data Lake показано, как ссылаться на параметры шаблона, содержащие сведения о субъекте-службе, и как шаблон объявляет эти параметры.
Определения ресурсов подключения
{
<other-template-objects>
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[parameters('azuredatalake_1_Connection_Name')]",
"location": "[parameters('LogicAppLocation')]",
"properties": {
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', 'resourceGroup().location', '/managedApis/', 'azuredatalake')]"
},
"displayName": "[parameters('azuredatalake_1_Connection_DisplayName')]",
"parameterValues": {
"token:clientId": "[parameters('azuredatalake_1_token:clientId')]",
"token:clientSecret": "[parameters('azuredatalake_1_token:clientSecret')]",
"token:TenantId": "[parameters('azuredatalake_1_token:TenantId')]",
"token:grantType": "[parameters('azuredatalake_1_token:grantType')]"
}
}
}
| Атрибут | Описание |
|---|---|
token:clientId |
Идентификатор приложения или клиента, связанный с субъектом-службой. |
token:clientSecret |
Значение ключа, связанное с субъектом службы |
token:TenantId |
Идентификатор каталога для клиента Microsoft Entra |
token:grantType |
Запрошенный тип предоставления разрешения, который должен иметь значение client_credentials. Дополнительные сведения см. в статье Платформа удостоверений Майкрософт и поток учетных данных клиента OAuth 2.0. |
Определения параметров шаблона
Пример объявления параметров объектом верхнего уровня шаблона parameters для подключения:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"azuredatalake_1_Connection_Name": {
"type": "string",
"defaultValue": "azuredatalake"
},
"azuredatalake_1_Connection_DisplayName": {
"type": "string",
"defaultValue": "<connection-name>"
},
"azuredatalake_1_token:clientId": {
"type": "securestring",
"metadata": {
"description": "Client (or Application) ID of the Azure Active Directory application."
}
},
"azuredatalake_1_token:clientSecret": {
"type": "securestring",
"metadata": {
"description": "Client secret of the Azure Active Directory application."
}
},
"azuredatalake_1_token:TenantId": {
"type": "securestring",
"metadata": {
"description": "The tenant ID of for the Azure Active Directory application."
}
},
"azuredatalake_1_token:resourceUri": {
"type": "string",
"metadata": {
"description": "The resource you are requesting authorization to use."
}
},
"azuredatalake_1_token:grantType": {
"type": "string",
"metadata": {
"description": "Grant type"
},
"defaultValue": "client_credentials",
"allowedValues": [
"client_credentials"
]
},
// Other template parameters
}
// Other template objects
}
Дополнительные сведения о работе с субъектами-службами см. в следующих разделах:
- Создайте субъект-службу с помощью портала Azure
- Создание субъекта-службы Azure с помощью Azure PowerShell
- Создание субъекта-службы с сертификатом с помощью Azure PowerShell
Ссылки на параметры
Для ссылки на параметры шаблона можно использовать выражения шаблонов с функциями, которые оцениваются во время развертывания. В выражениях шаблона используются квадратные скобки ([]):
"<attribute-name>": "[parameters('<template-parameter-name>')]"
Для ссылки на параметры определения рабочего процесса используются выражения и функции языка определения рабочих процессов, которые оцениваются во время выполнения. Некоторые функции шаблона и функции определения рабочего процесса имеют одинаковые названия. Выражения в определении рабочего процесса начинаются с символа «at» (@):
"<attribute-name>": "@parameters('<workflow-definition-parameter-name>')"
Вы можете передать значения параметров шаблона в определение рабочего процесса, чтобы приложение логики использовало их во время выполнения. При этом не рекомендуется использовать параметры, выражения и синтаксис шаблона в определении рабочего процесса, так как конструктор приложений логики не поддерживает элементы шаблона. Кроме того, синтаксис и выражения шаблона могут усложнить код из-за различий в момент оценки выражений.
Вместо этого следуйте инструкциям о том, как объявлять и ссылаться на параметры определения рабочего процесса во время выполнения, объявлять и ссылаться на параметры шаблона во время развертывания, а также указывать значения, которые будут передаваться во время развертывания с помощью файла параметров. Полные сведения см. в разделе Определение и параметры рабочего процесса выше.
Создайте шаблон и объявите его параметры для значений, которые следует принимать и использовать во время развертывания.
В определении рабочего процесса объявите параметры для значений, которые следует принимать и использовать во время выполнения. Затем вы можете обращаться к этим значениям во всём определении рабочего процесса и внутри него.
В объекте
parameters, который находится вне определения рабочего процесса, но внутри определения ресурсов приложения логики, задайте значения параметров определения рабочего процесса, указав соответствующие параметры шаблона. Таким образом, можно передать значения параметров шаблона в параметры определения рабочего процесса.В файле параметров укажите значения параметров для шаблона, которые будут использоваться при развертывании.
Полный шаблон примера
Ниже приведен пример параметризованного шаблона, который используется в примерах этой статьи.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"LogicAppName": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"defaultValue": "MyLogicApp",
"metadata": {
"description": "The resource name to use for the logic app"
}
},
"LogicAppLocation": {
"type": "string",
"minLength": 1,
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The resource location to use for the logic app"
}
},
"office365_1_Connection_Name": {
"type": "string",
"defaultValue": "office365",
"metadata": {
"description": "The resource name to use for the Office 365 Outlook connection"
}
},
"office365_1_Connection_DisplayName": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The display name to use for the Office 365 Outlook connection"
}
},
"azureblob_1_Connection_Name": {
"type": "string",
"defaultValue": "azureblob",
"metadata": {
"description": "The resource name to use for the Azure Blob storage account connection"
}
},
"azureblob_1_Connection_DisplayName": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "Name of the storage account the connector should use."
}
},
"azureblob_1_accountName": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "Name of the storage account the connector should use."
}
},
"azureblob_1_accessKey": {
"type": "securestring",
"metadata": {
"description": "Specify a valid primary/secondary storage account access key."
}
},
"LogicAppIntegrationAccount": {
"type":"string",
"minLength": 1,
"defaultValue": "/subscriptions/<Azure-subscription-ID>/resourceGroups/fabrikam-integration-account-rg/providers/Microsoft.Logic/integrationAccounts/fabrikam-integration-account",
"metadata": {
"description": "The ID to use for the integration account"
}
}
},
"variables": {},
"resources": [
{
"properties": {
"state": "Disabled",
"integrationAccount": {
"id": "[parameters('LogicAppIntegrationAccount')]"
},
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Create_blob": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['azureblob']['connectionId']"
}
}
},
"method": "post",
"body": "@triggerBody()?['Body']",
"path": "/datasets/default/files",
"queries": {
"folderPath": "/emails",
"name": "@triggerBody()?['Subject']",
"queryParametersSingleEncoded": true
},
"runAfter": {},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
}
}
},
"parameters": {
"$connections": {
"defaultValue": {},
"type": "Object"
}
},
"triggers": {
"When_a_new_email_arrives": {
"type": "ApiConnection",
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['office365']['connectionId']"
}
},
"method": "get",
"path": "/Mail/OnNewEmail",
"queries": {
"folderPath": "Inbox",
"importance": "Any",
"fetchOnlyWithAttachment": false,
"includeAttachments": false
}
},
"recurrence": {
"frequency": "Day",
"interval": 1
},
"splitOn": "@triggerBody()?['value']"
}
},
"contentVersion": "1.0.0.0",
"outputs": {}
},
"parameters": {
"$connections": {
"value": {
"azureblob": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]",
"connectionName": "[parameters('azureblob_1_Connection_Name')]"
},
"office365": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]",
"connectionName": "[parameters('office365_1_Connection_Name')]"
}
}
}
},
"accessControl": {}
},
"name": "[parameters('LogicAppName')]",
"type": "Microsoft.Logic/workflows",
"location": "[parameters('LogicAppLocation')]",
"tags": {
"displayName": "LogicApp"
},
"apiVersion": "2019-05-01",
"dependsOn": [
"[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]",
"[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]"
]
},
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[parameters('office365_1_Connection_Name')]",
"location": "[parameters('LogicAppLocation')]",
"properties": {
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]"
},
"displayName": "[parameters('office365_1_Connection_DisplayName')]"
}
},
{
"type": "Microsoft.Web/connections",
"apiVersion": "2016-06-01",
"name": "[parameters('azureblob_1_Connection_Name')]",
"location": "[parameters('LogicAppLocation')]",
"properties": {
"api": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]"
},
"displayName": "[parameters('azureblob_1_Connection_DisplayName')]",
"parameterValues": {
"accountName": "[parameters('azureblob_1_accountName')]",
"accessKey": "[parameters('azureblob_1_accessKey')]"
}
}
}
],
"outputs": {}
}