Создание и запуск кода из рабочих процессов в Azure Logic Apps с помощью Функций Azure

Область применения: Azure Logic Apps (Потребление + Стандартный)

Если вам нужно запустить код, выполняющий определенное задание в рабочем процессе приложения логики, можно создать соответствующую функцию с помощью Функций Azure. Эта служба позволяет создавать функции, написанные на языках Node.js, C# и F#, поэтому вам не нужно создавать целое приложение или инфраструктуру для выполнения кода. Служба "Функции Azure" обеспечивает бессерверные вычисления в облаке и является полезной при выполнении задач, приведенных ниже.

  • Расширение режимов работы приложений логики с помощью функций в Node.js или C#.
  • Выполнение вычислений в рабочем процессе приложения логики.
  • Применение расширенного форматирования или вычисления полей в рабочих процессах приложений логики.

В этом руководстве показано, как вызвать функцию Azure из рабочего процесса приложения логики. Инструкции по выполнению фрагментов кода без использования Функций Azure см. в разделе Добавление и запуск встроенного кода. Для вызова и активации рабочего процесса приложения логики из функции рабочий процесс должен начинаться с триггера, который предоставляет вызываемую конечную точку. Например, можно начать рабочий процесс с триггера HTTP, Запрос, Очереди Azure или Сетка событий. Внутри функции отправьте HTTP-запрос POST на URL-адрес триггера и включите полезные данные, которые должен обработать рабочий процесс. Дополнительные сведения см. в разделе Вызов, активация и вложение рабочих процессов приложений логики.

Ограничения

  • Вы можете создать функцию непосредственно из рабочего процесса приложения логики потребления, но не из рабочего процесса приложения логики уровня "Стандартный". Однако вы можете создавать функции другими способами. Дополнительные сведения см. в разделе "Создание функций из рабочих процессов приложения логики".

  • Только рабочие процессы потребления поддерживают проверку подлинности вызовов функций Azure с помощью управляемого удостоверения с проверкой подлинности Microsoft Entra. Стандартные рабочие процессы в настоящее время не поддерживаются в разделе о том, как включить проверку подлинности для вызовов функций.

  • Azure Logic Apps не поддерживает использование Функций Azure с включенными слотами развертывания. Хотя этот сценарий иногда может работать, это поведение является непредсказуемым и может привести к проблемам с авторизацией, когда рабочий процесс попытается вызвать функцию Azure.

Необходимые компоненты

  • Учетная запись и подписка Azure. Если у вас нет ее, вы можете зарегистрироваться для получения бесплатной учетной записи Azure.

  • Ресурс приложения-функции Azure, являющийся контейнером для функции, которую можно создать с помощью Функций Azure, а также функции, которую необходимо использовать.

    При отсутствии приложения-функции создайте его. Затем можно создать функцию вне рабочего процесса приложения логики с помощью Функции Azure в портал Azure или в рабочем процессе приложения логики в конструкторе.

  • При работе с ресурсами приложений логики к приложениям-функциям и функциям применяются одинаковые требования, независимо от того, являются ли они существующими или новыми.

    • Ресурс приложения-функции и ресурс приложения логики должны находиться в одной подписке Azure.

    • Новые приложения функции должны использовать .NET или JavaScript в качестве стека среды выполнения. При добавлении новой функции в существующие приложения-функции можно выбрать C# или JavaScript.

    • Функция использует шаблон триггера HTTP.

      Этот шаблон триггера HTTP поддерживает содержимое рабочего процесса приложения логики с типом application/json. При добавлении функции в рабочий процесс в конструкторе отображаются пользовательские функции, созданные из этого шаблона в вашей подписке Azure.

    • Ваша функция не использует настраиваемые маршруты, если отсутствует определение OpenAPI (файл Swagger).

    • Если оно присутствует, конструктор рабочего процесса предоставляет более широкие возможности для работы с параметрами функции. Прежде чем рабочий процесс приложения логики сможет найти и получить доступ к функциям с определениями OpenAPI, необходимо настроить приложение-функцию, выполнив следующие действия.

  • Чтобы следовать примеру в этом руководстве, вам потребуется ресурс приложения логики потребления и рабочий процесс с триггером в качестве первого шага. Хотя вы можете использовать любой триггер для вашего сценария, в этом примере используется триггер Outlook Office 365 с именем "При поступлении нового сообщения".

Поиск функций, имеющих описания OpenAPI

Если для функции создать определение OpenAPI или файл Swagger, то можно получить более широкие возможности работы с параметрами функции в конструкторе рабочих процессов. Чтобы настроить приложение-функцию, которое позволит приложению логики находить и использовать функции, которые обладают описанием Swagger, выполните следующие действия:

  1. На портале Azure откройте приложение-функцию. Убедитесь в том, что приложение-функция активно выполняется.

  2. Настройте общий доступ к ресурсам независимо от источника (CORS) для приложения-функции, чтобы использовать все источники, выполнив указанные ниже действия.

    1. В меню ресурса приложения-функции в разделе API выберите CORS.

      Снимок экрана: портал Azure, меню ресурсов приложения-функции с выбранным параметром CORS.

    2. В разделе CORS необходимо добавить подстановочный знак (*) и удалить из списка все другие источники, а затем нажать кнопку Сохранить.

      Снимок экрана: портал Azure, область CORS и дикий карта символ

Доступ к значениям свойств внутри HTTP-запросов

Функции веб-перехватчика могут принимать HTTP-запросы в качестве входных и передавать эти запросы другим функциям. Например, несмотря на то, что служба Azure Logic Apps имеет функции преобразования значений DateTime, в этом базовом примере функции JavaScript показан доступ к свойству внутри запрашиваемого объекта, который передается в функцию и выполняет операции со значением свойства. Чтобы получить доступ к свойствам, которые находятся внутри объекта, в этом примере используется оператор точка (.).

function convertToDateString(request, response){
   var data = request.body;
   response = {
      body: data.date.ToDateString();
   }
}

Ниже приведены процессы, которые выполняются внутри функции.

  1. Функция создает переменную data и присваивает ей объект body, который находится внутри объекта request. Чтобы ссылаться на объект body внутри объекта request, функция использует оператор точку (.).

    var data = request.body;
    
  2. Теперь функция может получить доступ к свойству date через переменную data и изменить значение свойства с типа DateTime на тип DateString с помощью вызова функции ToDateString(). Также в ответе функции она возвращает результат через свойство body.

    body: data.date.ToDateString();
    

Итак, вы завершили создание функции в Azure, и теперь можете добавить существующие функции в приложения логики.

Создание функций из рабочих процессов приложения логики (только для рабочих процессов потребления)

Вы можете создавать функции непосредственно из рабочего процесса потребления с помощью встроенного Функции Azure действия в конструкторе рабочих процессов, но этот метод можно использовать только для функций, написанных на JavaScript. Для других языков функции можно создавать в интерфейсе Функций Azure на портале Azure. Однако перед созданием функции в Azure необходимо иметь готовый ресурс приложения-функции, который является контейнером для ваших функций. При отсутствии приложения-функции создайте его. Дополнительные сведения см. в статье Создание первой функции на портале Azure.

Стандартные рабочие процессы в настоящее время не поддерживают этот параметр для создания функции из рабочего процесса, но вы можете создать функцию следующими способами, а затем вызвать эту функцию из рабочего процесса приложения логики уровня "Стандартный" с помощью операции Функции Azure с именем "Вызов функции Azure".

  1. В портал Azure откройте приложение логики потребления и рабочий процесс в конструкторе.

  2. В конструкторе выполните следующие общие действия, чтобы добавить действие Функции Azure с именем Выбор функции Azure.

  3. В появившемся списке приложений-функций выберите приложение-функцию. В появившемся списке действий выберите действие с именем Create New Function.

    Снимок экрана: средство выбора операций с параметром

  4. Определите функцию в редакторе определения функции.

    1. Введите имя функции в поле Имя функции.

    2. В поле Код добавьте код в шаблон функции, включая ответ и полезные данные, которые необходимо вернуть приложению логики после того, как функция завершит выполнение. По завершении выберите, например, Создать:

    Снимок экрана: редактор разработки функций с определением функции шаблона.

    В коде шаблона объект context относится к сообщению, которое рабочий процесс отправляет через свойство Текст запроса на более позднем этапе. Чтобы получить доступ к свойствам объекта context изнутри вашей функции, используйте следующий синтаксис:

    context.body.<property-name>

    Например, чтобы сослаться на свойство content внутри объекта context, используйте следующий синтаксис:

    context.body.content

    Код шаблона также включает переменную input, которая сохраняет значение из параметра data, чтобы ваша функция могла выполнять с ним операции. Внутри функций JavaScript переменная data также является ярлыком для context.body.

    Примечание.

    Свойство body здесь применяется к объекту context и не совпадает с токеном Текст из выходных данных действия, который вы также можете передать своей функции.

  5. В поле Текст запроса укажите входные данные функции, которые должны быть отформатированы как объект JSON (нотация объектов JavaScript).

    Эти входные данные представляют собой объект контекста или сообщение, которое приложение логики отправляет в функцию. Если щелкнуть поле Текст запроса, откроется список динамического содержимого, что позволит выбрать токены для выходных данных с предыдущих шагов. В этом примере указано, что полезные данные контекста содержат свойство с именем content, которое имеет значение токена От из триггера электронной почты.

    Снимок экрана: функция и свойство Request Body с примером полезных данных объекта контекста.

    Здесь объект контекста не приводится как строка, что позволяет добавить содержимое объекта напрямую в полезные данные JSON. Тем не менее, если объект контекста не является токеном JSON, который передает строку, либо объектом или массивом JSON, появится сообщение об ошибке. Таким образом, если бы в этом примере использовался токен Время получения, вы могли бы привести объект контекста к строке, добавив двойные кавычки, например:

    Снимок экрана: свойство Request Body, которое приводит объект в виде строки.

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

Добавление существующих функций в рабочие процессы приложения логики (потребление и стандартные рабочие процессы)

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

  1. На портале Azure откройте рабочий процесс приложения логики уровня "Потребление" в конструкторе.

  2. В конструкторе выполните следующие общие действия, чтобы добавить действие Функции Azure с именем Выбор функции Azure.

  3. Выберите приложение-функцию из списка приложений-функций. В появившемся списке функций выберите свою функцию.

    Снимок экрана: использование выбранного приложения-функции и функции.

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

    Снимок экрана: использование выбранного приложения-функции, а затем в разделе

  4. В поле Текст запроса укажите входные данные функции, которые должны быть отформатированы как объект JSON (нотация объектов JavaScript).

    Эти входные данные представляют собой объект контекста или сообщение, которое приложение логики отправляет в функцию. Если щелкнуть поле Текст запроса, откроется список динамического содержимого, что позволит выбрать токены для выходных данных с предыдущих шагов. В этом примере указано, что полезные данные контекста содержат свойство с именем content, которое имеет значение токена От из триггера электронной почты.

    Снимок экрана: использование функции с примером

    Здесь объект контекста не приводится как строка, что позволяет добавить содержимое объекта напрямую в полезные данные JSON. Тем не менее, если объект контекста не является токеном JSON, который передает строку, либо объектом или массивом JSON, появится сообщение об ошибке. Таким образом, если в этом примере использовался токен Время получения, вы можете привести объект контекста к состоянию строки, добавив двойные кавычки:

    Снимок экрана: использование функции с примером

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

Включение проверки подлинности для вызовов функций (только рабочие процессы потребления)

Рабочий процесс потребления может проходить проверку подлинности вызовов функций и доступа к ресурсам, защищенным идентификатором Microsoft Entra, с помощью управляемого удостоверения (ранее известного как управляемое удостоверение службы или MSI). Это управляемое удостоверение позволяет проверять подлинность доступа без входа в систему и предоставления учетных данных или секретов. Azure управляет этим удостоверением за вас и помогает защитить учетные данные, потому что вам не нужно предоставлять или сменять секреты. Вы можете настроить назначаемое системой удостоверение или созданное вручную удостоверение, назначаемое пользователем, на уровне ресурса приложения логики. Функция, вызываемая из рабочего процесса, может использовать то же удостоверение для проверки подлинности.

Примечание.

В настоящее время только рабочие процессы потребления поддерживают проверку подлинности для вызовов функций Azure с помощью управляемого удостоверения и проверки подлинности Microsoft Entra. Стандартные рабочие процессы в настоящее время не включают эту поддержку при использовании соединителя Функции Azure.

Дополнительные сведения см. в следующей документации:

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

  1. Включите и настройте управляемое удостоверение приложения логики.

  2. Настройте анонимную проверку подлинности для функции.

  3. Найдите необходимые значения для настройки проверки подлинности Microsoft Entra.

  4. Создайте регистрацию приложения для приложения-функции.

Настройка функции для анонимной проверки подлинности (только рабочие процессы потребления)

Чтобы функция использовала управляемое удостоверение приложения логики потребления, необходимо установить уровень проверки подлинности функции на анонимный. В противном случае рабочий процесс выдает ошибку BadRequest .

  1. На портале Azure найдите и выберите требуемое приложение-функцию.

    В следующих шагах используется пример приложения-функции с именем FabrikamFunctionApp.

  2. В меню ресурсов приложения-функции в разделе Средства разработки выберите Дополнительные инструменты>Перейти.

    Снимок экрана: меню приложения-функции с выбранными

  3. После открытия страницы Службы Kudu в строке заголовка веб-сайта Kudu в меню Консоль отладки выберите CMD.

    Снимок экрана: страница

  4. После появления следующей страницы в списке папок выберите сайт>wwwroot>ваша_функция.

    В следующих шагах используется пример функции с именем FabrikamAzureFunction.

    Снимок экрана: список папок с выбранным функцией

  5. Откройте файл function.json для редактирования.

    Снимок экрана: файл

  6. Проверьте, есть ли в объекте bindings свойство authLevel. Если оно имеется, присвойте ему значение anonymous. В противном случае добавьте это свойство и задайте значение.

    Снимок экрана: объект bindings с свойством authLevel, равным

  7. Закончив работу, сохраните параметры. Переходите к следующему разделу.

Найдите необходимые значения для настройки проверки подлинности Microsoft Entra (только рабочие процессы потребления)

Прежде чем настроить приложение-функцию для использования проверки подлинности Microsoft Entra, необходимо найти и сохранить следующие значения, выполнив действия, описанные в этом разделе.

  1. Найдите идентификатор объекта или идентификатор клиента для управляемого удостоверения приложения логики.
  2. Найдите идентификатор клиента для идентификатора Microsoft Entra.

Поиск идентификатора объекта или идентификатора клиента для управляемого удостоверения приложения логики

  1. После включения управляемого удостоверения приложения логики потребления в меню приложения логики в разделе Параметры выберите "Удостоверение", а затем выберите "Назначенная системой" или "Пользователь".

    • Назначено системой

      Для удостоверения, назначаемого системой, скопируйте идентификатор объекта (субъекта) удостоверения, например:

      Снимок экрана: панель

    • Назначенный пользователем

      1. Для удостоверения, назначаемого пользователем, выберите удостоверение, чтобы найти идентификатор клиента, например:

        Снимок экрана: панель

      2. В области обзора управляемого удостоверения скопируйте идентификатор клиента удостоверения, например:

        Снимок экрана: панель

Поиск идентификатора клиента для идентификатора Microsoft Entra

Чтобы найти идентификатор клиента Microsoft Entra, выполните команду PowerShell с именем Get-AzureAccount или в портал Azure, выполните следующие действия:

  1. В портал Azure откройте клиент Microsoft Entra. В качестве примера клиента в этих шагах используется Fabrikam.

  2. В меню клиента Microsoft Entra в разделе "Управление" выберите "Свойства".

  3. Скопируйте идентификатор клиента и сохраните его для последующего использования, например:

    Снимок экрана: область

Создание регистрации приложений для приложения-функции (только рабочие процессы потребления)

После поиска идентификатора объекта или идентификатора клиента для управляемого удостоверения приложения логики потребления и идентификатора клиента для идентификатора Microsoft Entra можно настроить приложение-функцию для использования проверки подлинности Microsoft Entra, создав регистрацию приложения.

  1. На портале Azure откройте приложение-функцию.

  2. В меню приложения-функции в разделе Параметры выберите Проверка подлинности, а затем — Добавить поставщик удостоверений.

    Снимок экрана: меню приложения-функции с панелью

  3. На панели Добавление поставщика удостоверений в разделе Основное в списке Поставщик удостоверений выберите Microsoft.

  4. В разделе Регистрация приложения для параметра Тип регистрации приложения выберите Укажите сведения о существующей регистрации приложения и введите ранее сохраненные значения.

    Свойство Обязательное поле значение Описание
    Application (client) ID (Идентификатор приложения (клиент)) Да <object-or-client-ID> Уникальный идентификатор, используемый для регистрации приложения. В этом сценарии используйте идентификатор объекта управляемого удостоверения (назначаемый системой) или идентификатор клиента (назначаемый пользователем).
    Секрет клиента Необязательно, но рекомендуется <секрет-клиента> Значение секрета, которое приложение использует для подтверждения идентификации при запросе токена. Секрет клиента создается и сохраняется в конфигурации приложения как прикрепленный параметр приложения с именем MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Если вместо этого вы хотите управлять секретом в Azure Key Vault, впоследствии этот параметр можно обновить, чтобы использовать ссылки Key Vault.

    — Если вы предоставляете значение секрета клиента, операции входа используют гибридный поток, возвращающий как маркеры доступа, так и маркеры обновления.

    — Если секрет клиента не предоставлен, операции входа используют поток неявного предоставления разрешения OAuth 2.0, возвращающий только токен идентификации.

    Эти маркеры отправляются поставщиком и хранятся в хранилище маркеров EasyAuth.
    Url-адрес издателя No <URL-адрес_конечной_точки_проверки_подлинности>/<идентификатор_клиента_Azure_AD>/v2.0 Этот URL-адрес перенаправляет пользователей в правильный клиент Microsoft Entra и скачивает соответствующие метаданные, чтобы определить соответствующие ключи подписи маркеров и значение утверждения издателя маркеров. Для приложений, использующих Azure AD версии 1, исключите /v2.0 из URL-адреса.

    Для данного сценария используйте следующий URL-адрес: https://sts.windows.net/<идентификатор_клиента_Azure_AD>
    Разрешенные аудитории токенов No <URI_идентификатора_приложения> URI идентификатора приложения (идентификатор ресурса) для приложения-функции. Если это облачное или серверное приложение и вы хотите разрешить использовать токены проверки подлинности из веб-приложения, добавьте URI идентификатора приложения для веб-приложения. Настроенный идентификатор клиента всегда косвенно считается разрешенной аудиторией.

    В данном сценарии установлено значение https://management.azure.com. Позже можно будет использовать тот же код URI в свойстве Аудитория при настройке действия функции в рабочем процессе для использования управляемого удостоверения.

    Важно. URI идентификатора приложения (идентификатор ресурса) должен точно соответствовать значению, которое ожидает идентификатор Microsoft Entra, включая все необходимые конечные косые черты.

    На этом этапе версия будет выглядеть примерно так.

    Снимок экрана: регистрация приложения логики и поставщика удостоверений для приложения-функции.

    Если вы впервые настраиваете приложение-функцию с поставщиком удостоверений, также отображается раздел параметров проверки подлинности для Службы приложений. Эти параметры определяют реакцию приложения-функции на запросы без проверки подлинности. При выборе значений по умолчанию все запросы перенаправляются для входа с помощью нового поставщика удостоверений. Вы можете изменить это поведение сейчас или настроить параметры позже на главной странице Проверка подлинности, нажав кнопку Изменить рядом с элементом Параметры проверки подлинности. Дополнительные сведения об этих параметрах см. в статье Поток проверки подлинности — проверка подлинности и авторизация в Службе приложений Azure и Функциях Azure.

    В противном случае перейдите к следующему шагу.

  5. Чтобы завершить создание регистрации приложения, нажмите кнопку Добавить.

    Когда все будет готово, на странице Проверка подлинности будет указан поставщик удостоверений и идентификатор приложения (идентификатор клиента) для регистрации приложения. Теперь приложение-функция может использовать эту регистрацию приложения для проверки подлинности.

  6. Скопируйте идентификатор приложения (идентификатор клиента) для функции, который будет использоваться позже в рабочем процессе в свойстве Аудитория.

  7. Вернитесь в конструктор и выполните инструкции по проверке подлинности доступа с помощью управляемого удостоверения, используя встроенное действие Функций Azure.

Следующие шаги