Create your first durable function in JavaScript (Создание устойчивой функции: JavaScript).

Устойчивые функции — это расширение Функций Azure, которое позволяет писать функции с отслеживанием состояния в беcсерверной среде. Расширение автоматически управляет состоянием, создает контрольные точки и перезагружается.

В этой статье описано, как использовать расширение Функций Azure в Visual Studio Code, чтобы локально создать и тестировать устойчивую функцию hello world. Эта функция будет организовывать и объединять в цепочку вызовы других функций. Затем вы опубликуете код функции в Azure.

Внимание

Содержимое этой статьи изменяется на основе выбранной модели программирования Node.js в селекторе в верхней части страницы. Модель версии 4 общедоступна и предназначена для более гибкого и интуитивно понятного интерфейса для разработчиков JavaScript и TypeScript. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.

Снимок экрана: окно Edge. В окне показаны выходные данные вызова простой устойчивой функции в Azure.

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

Для работы с этим руководством:

  • Для работы Устойчивых функций требуется учетная запись хранения Azure. Вам требуется подписка Azure.
  • Убедитесь, что установлена версия 16.x+ Node.js .
  • Убедитесь, что установлена версия 18.x+ Node.js .

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Создание локального проекта

В этом разделе вы используете Visual Studio Code. чтобы создать локальный проект Функций Azure.

  1. В Visual Studio Code нажмите клавишу F1 (или CTRL/CMD+SHIFT+P), чтобы открыть палитру команд. В палитре команд найдите и щелкните Azure Functions: Create New Project....

    Снимок экрана: палитра команд Visual Studio Code. Команда под названием

  2. Выберите расположение пустой папки для проекта и нажмите кнопку Выбрать.

  1. Следуя инструкциям, введите следующие сведения:

    Prompt значение Описание
    Select a language for your function app project (Выберите язык для проекта приложения-функции) JavaScript Создание локального проекта службы "Функции" для Node.js
    Выбор модели программирования JavaScript Модель версии 3 Выберите модель программирования версии 3.
    Выбор версии Функции Azure версии 4 Этот параметр отображается, только если вы еще не установили Core Tools. В этом случае Core Tools устанавливается при первом запуске приложения.
    Выбор шаблона для первой функции проекта Пока пропустить
    Выбор способа открытия проекта Открыть в текущем окне Повторно открывает VS Code в выбранной папке.
  1. Следуя инструкциям, введите следующие сведения:

    Prompt значение Описание
    Select a language for your function app project (Выберите язык для проекта приложения-функции) JavaScript Создание локального проекта службы "Функции" для Node.js
    Выбор модели программирования JavaScript Модель V4 Выберите модель программирования версии 4.
    Выбор версии Функции Azure версии 4 Этот параметр отображается, только если вы еще не установили Core Tools. В этом случае Core Tools устанавливается при первом запуске приложения.
    Выбор шаблона для первой функции проекта Пока пропустить
    Выбор способа открытия проекта Открыть в текущем окне Повторно открывает VS Code в выбранной папке.

При необходимости Visual Studio Code устанавливает Azure Functions Core Tools. Кроме того, создается проект приложения-функции в папке. Проект будет содержать файлы конфигурации host.json и local.settings.json.

Файл package.json также создается в корневой папке.

Установка пакета npm для расширения "Устойчивые функции"

Для работы с Устойчивыми функциями в приложении-функции Node.js используется библиотека с именем durable-functions.

Чтобы использовать модель программирования версии 4, необходимо установить предварительную v3.x версию durable-functions.

  1. Используйте меню "Вид" или CTRL+SHIFT+ ", чтобы открыть новый терминал в VS Code.
  1. Установите пакет npm durable-functions, выполнив команду npm install durable-functions в корневом каталоге приложения-функции.
  1. Установите предварительную durable-functions версию пакета npm, выполнив в npm install durable-functions@preview корневом каталоге приложения-функции.

Создание функций

В самом простом приложении Устойчивых функций есть три функции:

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

Функция оркестратора

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

  1. В палитре команд найдите и щелкните Azure Functions: Create Function....

  2. Следуя инструкциям, введите следующие сведения:

    Prompt значение Описание
    Выбор шаблона для функции Оркестратор Устойчивых функций Создание оркестрации Устойчивых функций
    Выберите устойчивый тип хранилища. служба хранилища Azure (по умолчанию) Выберите серверную часть хранилища, используемую для Устойчивые функции.
    Provide a function name (Укажите имя функции) HelloOrchestrator Имя устойчивой функции

Итак, вы добавили оркестратор для координации функций действия. Откройте файл HelloOrchestrator/index.js и изучите функцию оркестратора. Каждый вызов context.df.callActivity приводит к вызову функции действия с именем Hello.

Теперь нужно добавить функцию действия Hello, на которую ведет эта ссылка.

Функция действия

  1. В палитре команд найдите и щелкните Azure Functions: Create Function....

  2. Следуя инструкциям, введите следующие сведения:

    Prompt значение Описание
    Выбор шаблона для функции Действие Устойчивых функций Создание функции действия
    Provide a function name (Укажите имя функции) Привет Имя функции действия

Теперь вы добавили функцию действия Hello, которая вызывается оркестратором. Откройте файл Hello/index.js и убедитесь, что эта функция принимает имя в качестве входных данных и возвращает приветствие. Функция действия заключается в выполнении "реальной работы" в рабочем процессе: работа, например вызов базы данных или выполнение некоторых недетерминированных вычислений.

Наконец, нужно добавить активируемую вызовом HTTP функцию, которая запускает оркестратор.

Функция клиента (начальный объект HTTP)

  1. В палитре команд найдите и щелкните Azure Functions: Create Function....

  2. Следуя инструкциям, введите следующие сведения:

    Prompt значение Описание
    Выбор шаблона для функции Начальный объект HTTP Устойчивых функций Создание функции начального объекта HTTP
    Provide a function name (Укажите имя функции) DurableFunctionsHttpStart Имя функции действия
    Уровень авторизации Анонимные Для примера разрешите вызывать функцию без проверки подлинности.

Итак, вы добавили активируемую вызовом HTTP функцию, которая запускает оркестратор. Откройте файл DurableFunctionsHttpStart/index.js и убедитесь, что эта функция запускает оркестрацию с помощью client.startNew. После этого она должна вызывать client.createCheckStatusResponse, чтобы вернуть ответ HTTP с URL-адресами, которые позволяют отслеживать новую оркестрацию и управлять ею.

Теперь у вас есть готовое приложение Устойчивых функций, которое можно выполнить локально и развернуть в Azure.

Одним из преимуществ модели программирования версии 4 является гибкость при написании функций. В модели V4 можно использовать один шаблон для создания всех трех функций в одном файле проекта.

  1. В палитре команд найдите и щелкните Azure Functions: Create Function....

  2. Следуя инструкциям, введите следующие сведения:

    Prompt значение Описание
    Выбор шаблона для функции Оркестратор Устойчивых функций Создайте файл с оркестрацией Устойчивые функции, функцией действия и функцией запуска устойчивых клиентов.
    Выбор типа устойчивого хранилища служба хранилища Azure (по умолчанию) Выберите серверную часть хранилища, используемую для Устойчивые функции.
    Provide a function name (Укажите имя функции) hello Имя, используемое для устойчивых функций

Откройте src/functions/hello.js , чтобы просмотреть созданные вами функции.

Вы создали оркестратор, который вызывается helloOrchestrator для координации функций действий. Каждый вызов вызывает context.df.callActivity функцию helloдействия.

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

Наконец, вы также добавили функцию, активированную HTTP, которая запускает оркестрацию. В том же файле видно, что он используется client.startNew для запуска новой оркестрации. После этого она должна вызывать client.createCheckStatusResponse, чтобы вернуть ответ HTTP с URL-адресами, которые позволяют отслеживать новую оркестрацию и управлять ею.

Теперь у вас есть готовое приложение Устойчивых функций, которое можно выполнить локально и развернуть в Azure.

Локальное тестирование функции

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

  1. Чтобы протестировать созданную функцию, установите точку останова в коде функции действия Hello (файл Hello/index.js). Нажмите клавишу F5 или выберите действие Debug: Start Debugging на палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели Terminal (Терминал).
  1. Чтобы проверить функцию, задайте точку останова hello в коде функции действия (src/functions/hello.js). Нажмите клавишу F5 или выберите действие Debug: Start Debugging на палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели Terminal (Терминал).

Примечание.

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

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

    Снимок экрана: окно генерации оповещений Visual Studio Code. В окне говорится:

  2. Следуя инструкциям, укажите следующие сведения, чтобы создать новую учетную запись хранения в Azure.

    Prompt значение Описание
    Выбор подписки имя вашей подписки Выберите подписку Azure.
    Выберите учетную запись хранения Создать учетную запись хранения
    Ввод имени новой учетной записи хранения уникальное имя Имя учетной записи хранения для создания
    Выберите группу ресурсов уникальное имя Имя создаваемой группы ресурсов
    Выбор расположения region Выберите ближайший регион.
  3. На панели Terminal (Терминал) скопируйте URL-адрес конечной точки функции, активируемой HTTP-запросом.

    Снимок экрана: панель терминала кода Visual Studio. В терминале отображаются выходные данные запуска приложения Устойчивые функции локально. Выделены таблицы с заголовком

  1. Отправьте запрос HTTP POST к конечной точке URL-адреса, используя браузер или средства наподобие Postman или cURL. Последний сегмент замените именем функции оркестратора (HelloOrchestrator в нашем примере). URL-адрес должен выглядеть приблизительно так: http://localhost:7071/api/orchestrators/HelloOrchestrator.
  1. Отправьте запрос HTTP POST к конечной точке URL-адреса, используя браузер или средства наподобие Postman или cURL. Последний сегмент замените именем функции оркестратора (helloOrchestrator в нашем примере). URL-адрес должен выглядеть приблизительно так: http://localhost:7071/api/orchestrators/helloOrchestrator.

Полученный ответ является начальным результатом функции HTTP, который сообщает об успешном начале работы устойчивой оркестрации. Он еще не конечный результат оркестрации. Ответ включает несколько полезных URL-адреса. Теперь запросите состояние оркестрации.

  1. Скопируйте значение URL-адреса для statusQueryGetUri, вставьте его в адресную строку панели браузера и выполните запрос. Кроме того, вы можете воспользоваться Postman для выдачи запроса GET.

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

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
    {
        "name": "helloOrchestrator",
        "instanceId": "6ba3f77933b1461ea1a3828c013c9d56",
        "runtimeStatus": "Completed",
        "input": "",
        "customStatus": null,
        "output": [
            "Hello, Tokyo",
            "Hello, Seattle",
            "Hello, Cairo"
        ],
        "createdTime": "2023-02-13T23:02:21Z",
        "lastUpdatedTime": "2023-02-13T23:02:25Z"
    }
    
  2. В VS Code нажмите клавиши Shift + F5, чтобы остановить отладку.

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

Вход в Azure

Прежде чем создавать ресурсы Azure или публиковать приложение, необходимо войти в Azure.

  1. Если вы не выполнили вход, щелкните значок Azure на панели действий. Затем в области Ресурсы выберите Вход в Azure….

    Снимок экрана с окном входа в Azure в VS Code.

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

  2. В ответ на запрос в браузере выберите учетную запись Azure и войдите в нее с учетными данными Azure. Если вы создаете новую учетную запись, вы можете выполнить вход после ее создания.

  3. Выполнив вход, можно закрыть новое окно браузера. Подписки, принадлежащие учетной записи Azure, отображаются на боковой панели.

Создание приложения-функции в Azure

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

  1. Щелкните значок Azure на панели действий. Затем в области Ресурсы щелкните значок + и выберите вариант Создать приложение-функцию в Azure.

    Создание ресурса в подписке Azure

  2. Введите следующие сведения по соответствующим запросам:

    Prompt Выбор
    Выбор подписки Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка.
    Ввод глобально уникального имени для приложения-функции Введите имя, допустимое в пути URL-адреса. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно уникально в функциях Azure.
    Выберите стек сред выполнения Выберите версию языка, которая запускалась локально.
    Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами.

    Расширение показывает на панели Azure: журнал действий состояние отдельных ресурсов по мере их создания в Azure.

    Журнал создания ресурсов Azure

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

    • группу ресурсов — логический контейнер связанных ресурсов;
    • Учетная запись хранения Azure уровня "Стандартный" для сохранения состояния и других сведений о проектах.
    • Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
    • План службы приложений, который определяет базовый узел для приложения-функции.
    • Экземпляр Application Insights, подключенный к приложению-функции, который отслеживает использование функций в приложении.

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

    Совет

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

Развертывание проекта в Azure

Внимание

Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.

  1. В области ресурсов действия Azure найдите только что созданный ресурс приложения-функции, щелкните ресурс правой кнопкой мыши и выберите "Развернуть в приложении-функции...".

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

  3. После завершения развертывания выберите Просмотреть выходные данные, чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, щелкните значок колокольчика в правом нижнем углу, чтобы снова просмотреть его.

    Снимок экрана с окном

Тестирование функции в Azure

Примечание.

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

  1. Скопируйте URL-адрес HTTP-триггера на панели Output (Выходные данные). URL-адрес для вызова функции, активируемой HTTP-запросом, должен быть указан в таком формате: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Скопируйте URL-адрес HTTP-триггера на панели Output (Выходные данные). URL-адрес для вызова функции, активируемой HTTP-запросом, должен быть указан в таком формате: https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. Вставьте этот URL-адрес HTTP-запроса в адресную строку браузера. При использовании опубликованного приложения ответ состояния должен быть таким же, как и ранее.

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

Вы создали и опубликовали приложение устойчивой функции JavaScript с помощью Visual Studio Code.