Вызов Функции Azure из рабочих процессов в Azure Logic Apps

Область применения: Azure Logic Apps (Consumption + Standard)

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

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

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

Примечание.

Если вы хотите запустить код без использования функций Azure, см. следующее:

Ограничения

Для правильной работы функций Azure в рабочем процессе применяются следующие ограничения:

  • Ресурсы приложения-функции должны использовать стек среды выполнения .NET или Node.js.

  • Функции должны использовать код C# или JavaScript.

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

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

  • Функции не могут использовать пользовательские маршруты, если они также не имеют соответствующих определений OpenAPI.

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

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

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

  • Azure Logic Apps не поддерживает использование Функций Azure с активированными слотами развертывания.

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

Предварительные условия

  • Учетная запись и подписка Azure. Получите бесплатную учетную запись Azure.

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

    Обязательно используйте ту же Azure-подписку для вашего функционального приложения и логического приложения.

  • Функция Azure для вызова из рабочего процесса.

    • Чтобы создать эту функцию, используйте любой из следующих средств:

    • Код функции должен включать ответ и полезные данные, которые вы хотите вернуть в рабочий процесс после завершения функции.

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

      module.exports = function (context, data) {
      
         var input = data;
      
         // Function processing logic
         // Function response for later use
         context.res = {
            body: {
              content:"Thank you for your feedback: " + input
            }
         };
         context.done();
      }
      

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

      context.body.<property-name>

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

      context.body.content

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

      Примечание.

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

  • Рабочий процесс приложения логики, который может быть в режиме "Потребление" или "Стандартный", начинается с любого триггера.

    В примерах этого руководства используется триггер Outlook Office 365 с именем "При поступлении нового сообщения электронной почты".

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

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

Советы по работе с функциями Azure

Поиск функций с помощью определений OpenAPI

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

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

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

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

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

      Снимок экрана: портал Azure, панель CORS и подстановочный знак *, введенный в разделе

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

Функции на основе веб-перехватчика могут принимать HTTPS-запросы в качестве входных данных и передавать эти запросы другим функциям.

Например, хотя Azure Logic Apps имеет функции, которые преобразуют значения DateTime, в следующем базовом примере функции JavaScript показано, как получить доступ к свойству в объекте запроса, который передает функцию и выполнять операции с этим значением свойства.

Для доступа к свойствам в объектах в этом примере используется оператор dot (.):

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

Ниже описано, что происходит в этой функции:

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

    var data = request.body;
    
  2. Теперь функция может получить доступ к свойству datedata через переменную.

    Функция преобразует значение свойства из типа DateTime в тип DateString путем вызова ToDateString() функции. Функция возвращает результат через body свойство в ответе функции:

    body: data.date.ToDateString();
    
  3. После создания функции в Функциях Azure выполните действия, чтобы добавить функцию Azure в рабочий процесс.

Передача параметров URI функции

Если необходимо передать параметр URI в функцию, можно использовать параметры запроса в URL конечной точки функции.

  1. В конструкторе рабочих процессов с открытой областью сведений о функции в списке дополнительных параметров выберите "Запросы".

    Откроется таблица, в которой можно ввести входные данные параметров в виде пар "ключ-значение".

  2. Введите пару "ключ-значение" для параметра, например:

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

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

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

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

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

  3. В области "Добавить действие" выполните следующие шаги:

    1. В списке функциональных приложений выберите свое функциональное приложение.

    2. Выберите функцию, а затем нажмите кнопку "Добавить действие", например:

      Снимок экрана показывает дизайнер рабочих процессов Consumption с выбранными функциональным приложением и функцией.

  4. После появления поля сведений о функции выполните следующие действия.

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

      {"context": <selected-input> }

      Это полезные данные объекта контекста или сообщение, которое рабочий процесс отправляет в функцию.

      • Чтобы выбрать выходные значения из предыдущих шагов в рабочем процессе, выберите внутри поля "Текст запроса ", а затем выберите параметр, который открывает список динамического содержимого (значок молнии).

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

      В следующем примере указывается объект JSON с content атрибутом и выходным значением From из триггера электронной почты в качестве значения текста запроса :

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

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

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

      Если ввести объект контекста, отличный от маркера JSON, который передает строку, объект JSON или массив JSON, вы получите ошибку. Однако можно привести объект контекста в виде строки, заключив маркер в кавычки (""), например, если вы хотите использовать значение выходных данных "Полученное время ":

      Снимок экрана: рабочий процесс потребления и пример текста запроса, который приводит объект контекста в виде строки.

    2. Чтобы ввести другие сведения, например метод для использования, заголовки запросов, параметры запроса или проверку подлинности, откройте список дополнительных параметров и выберите нужные параметры.

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

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

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

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

Дополнительные сведения можно найти здесь

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

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

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

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

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

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

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

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

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

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

    Снимок экрана показывает меню функции приложения с отмеченными параметрами

  3. Чтобы убедиться, что вы хотите оставить портал Azure и перейти по URL-адресу веб-сайта для приложения-функции, нажмите кнопку "Продолжить".

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

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

  5. На следующей странице в списке папок выберите сайт>wwwroot>your-function.

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

    Снимок экрана: список папок с открытыми папками для сайта, wwwroot и вашей функции.

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

    Снимок экрана: файл function.json с выбранной командой редактирования.

  7. Убедитесь, существует ли свойство authLevel в объекте bindings.

    Если свойство существует, присвойте свойству значение anonymous. В противном случае добавьте свойство и задайте значение.

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

  8. По завершении на панели инструментов редактора нажмите кнопку "Сохранить". Переходите к следующему разделу.

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

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

  1. Найдите идентификатор арендатора для Microsoft Entra.

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

  3. Найдите идентификатор приложения для Enterprise-приложения, связанного с вашей управляемой идентичностью.

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

Выполните команду PowerShell с именем Get-AzContext или на портале Azure, выполнив следующие действия.

  1. В портал Azure откройте клиент Microsoft Entra.

    В этом руководстве в качестве примера арендатора используется Fabrikam .

  2. На боковой панели клиента выберите "Обзор".

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

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

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

После того как вы настроите назначаемое пользователем управляемое удостоверение для ресурса "логического приложения потребления", найдите идентификатор объекта для этого удостоверения. Этот идентификатор будет использоваться для поиска связанного приложения Enterprise в клиенте Microsoft Entra.

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

  2. На вкладке Назначено пользователем выберите управляемое удостоверение:

    Снимок экрана показывает страницу Identity приложения логики потребления с выбранной вкладкой, названной 'Назначенный пользователем'.

  3. Скопируйте ID субъекта:

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

Найдите идентификатор приложения для корпоративного приложения Azure, связанного с вашим управляемым удостоверением.

После включения управляемого удостоверения для ресурса приложения логики потребления Azure автоматически создает связанное приложение Azure Enterprise с тем же именем.

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

  1. В портал Azure откройте клиент Microsoft Entra.

  2. На боковой панели клиента в разделе "Управление" выберите корпоративные приложения.

  3. На странице "Все приложения" в поле поиска введите ID объекта для управляемого идентификатора. В результатах найдите соответствующее корпоративное приложение и скопируйте идентификатор приложения:

    Снимок экрана: страница клиента Microsoft Entra с именем

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

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

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

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

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

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

  3. На странице "Добавление поставщика удостоверений " на вкладке "Основные сведения" в списке поставщиков удостоверений выберите Майкрософт.

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

    Параметр Обязательное поле значение Описание
    Application (client) ID (Идентификатор приложения (клиент)) Да < идентификатор приложения> Уникальный идентификатор, используемый для регистрации приложения. В этом примере используйте идентификатор приложения, скопированный для корпоративного приложения, связанного с управляемым удостоверением.
    Url-адрес издателя Нет < authentication-endpoint-URL>/<Microsoft-Entra-tenant-ID>/v2.0 Этот URL-адрес перенаправляет пользователей к правильному арендатору Microsoft Entra и скачивает соответствующие метаданные, чтобы определить соответствующие ключи подписи токенов и значение атрибута издателя токенов. Для приложений, использующих Azure AD версии 1, исключите /v2.0 из URL-адреса.

    Для этого сценария используйте следующий URL-адрес:

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

    Для этого сценария значение — следующий URI:

    https://management.azure.com

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

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

    Ваша версия теперь выглядит как следующий пример:

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

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

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

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

    На странице аутентификации перечислены поставщики удостоверений и идентификатор приложения регистрации (клиента). Теперь функциональное приложение может использовать эту регистрацию приложения для аутентификации.

  6. Скопируйте и сохраните идентификатор приложения (клиента).

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

    Этот идентификатор будет использоваться в действии "Функции Azure", добавляемом в рабочий процесс.

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

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