Create your first durable function in JavaScript (Создание устойчивой функции: JavaScript).
Устойчивые функции — это расширение Функций Azure, которое позволяет писать функции с отслеживанием состояния в беcсерверной среде. Расширение автоматически управляет состоянием, создает контрольные точки и перезагружается.
В этой статье описано, как использовать расширение Функций Azure в Visual Studio Code, чтобы локально создать и тестировать устойчивую функцию hello world. Эта функция будет организовывать и объединять в цепочку вызовы других функций. Затем вы опубликуете код функции в Azure.
Внимание
Содержимое этой статьи изменяется на основе выбранной модели программирования Node.js в селекторе в верхней части страницы. Модель версии 4 общедоступна и предназначена для более гибкого и интуитивно понятного интерфейса для разработчиков JavaScript и TypeScript. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.
Необходимые компоненты
Для работы с этим руководством:
- Установка Visual Studio Code.
- Установите расширение Функции Azure для VS Code.
- Установите версию
1.10.4
расширения VS Code Функции Azure или более поздней.
- Убедитесь, что используется последняя версия Azure Functions Core Tools.
- Убедитесь, что у вас есть Функции Azure версия
v4.0.5382
Core Tools или более поздней.
- Для работы Устойчивых функций требуется учетная запись хранения Azure. Вам требуется подписка Azure.
- Убедитесь, что установлена версия 16.x+ Node.js .
- Убедитесь, что установлена версия 18.x+ Node.js .
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Создание локального проекта
В этом разделе вы используете Visual Studio Code. чтобы создать локальный проект Функций Azure.
В Visual Studio Code нажмите клавишу F1 (или CTRL/CMD+SHIFT+P), чтобы открыть палитру команд. В палитре команд найдите и щелкните
Azure Functions: Create New Project...
.Выберите расположение пустой папки для проекта и нажмите кнопку Выбрать.
Следуя инструкциям, введите следующие сведения:
Prompt значение Описание Select a language for your function app project (Выберите язык для проекта приложения-функции) JavaScript Создание локального проекта службы "Функции" для Node.js Выбор модели программирования JavaScript Модель версии 3 Выберите модель программирования версии 3. Выбор версии Функции Azure версии 4 Этот параметр отображается, только если вы еще не установили Core Tools. В этом случае Core Tools устанавливается при первом запуске приложения. Выбор шаблона для первой функции проекта Пока пропустить Выбор способа открытия проекта Открыть в текущем окне Повторно открывает VS Code в выбранной папке.
Следуя инструкциям, введите следующие сведения:
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
.
- Используйте меню "Вид" или CTRL+SHIFT+ ", чтобы открыть новый терминал в VS Code.
- Установите пакет npm
durable-functions
, выполнив командуnpm install durable-functions
в корневом каталоге приложения-функции.
- Установите предварительную
durable-functions
версию пакета npm, выполнив вnpm install durable-functions@preview
корневом каталоге приложения-функции.
Создание функций
В самом простом приложении Устойчивых функций есть три функции:
- функция оркестратора — описывает рабочий процесс и координирует другие функции;
- функция действия — вызывается функцией оркестратора, выполняет работу и при необходимости возвращает значение;
- функция клиента — обычная функция Azure, которая запускает функцию оркестратора. В этом примере используется функция, активируемая по HTTP.
Функция оркестратора
Для создания кода устойчивой функции в проекте используется шаблон.
В палитре команд найдите и щелкните
Azure Functions: Create Function...
.Следуя инструкциям, введите следующие сведения:
Prompt значение Описание Выбор шаблона для функции Оркестратор Устойчивых функций Создание оркестрации Устойчивых функций Выберите устойчивый тип хранилища. служба хранилища Azure (по умолчанию) Выберите серверную часть хранилища, используемую для Устойчивые функции. Provide a function name (Укажите имя функции) HelloOrchestrator Имя устойчивой функции
Итак, вы добавили оркестратор для координации функций действия. Откройте файл HelloOrchestrator/index.js и изучите функцию оркестратора. Каждый вызов context.df.callActivity
приводит к вызову функции действия с именем Hello
.
Теперь нужно добавить функцию действия Hello
, на которую ведет эта ссылка.
Функция действия
В палитре команд найдите и щелкните
Azure Functions: Create Function...
.Следуя инструкциям, введите следующие сведения:
Prompt значение Описание Выбор шаблона для функции Действие Устойчивых функций Создание функции действия Provide a function name (Укажите имя функции) Привет Имя функции действия
Теперь вы добавили функцию действия Hello
, которая вызывается оркестратором. Откройте файл Hello/index.js и убедитесь, что эта функция принимает имя в качестве входных данных и возвращает приветствие. Функция действия заключается в выполнении "реальной работы" в рабочем процессе: работа, например вызов базы данных или выполнение некоторых недетерминированных вычислений.
Наконец, нужно добавить активируемую вызовом HTTP функцию, которая запускает оркестратор.
Функция клиента (начальный объект HTTP)
В палитре команд найдите и щелкните
Azure Functions: Create Function...
.Следуя инструкциям, введите следующие сведения:
Prompt значение Описание Выбор шаблона для функции Начальный объект HTTP Устойчивых функций Создание функции начального объекта HTTP Provide a function name (Укажите имя функции) DurableFunctionsHttpStart Имя функции действия Уровень авторизации Анонимные Для примера разрешите вызывать функцию без проверки подлинности.
Итак, вы добавили активируемую вызовом HTTP функцию, которая запускает оркестратор. Откройте файл DurableFunctionsHttpStart/index.js и убедитесь, что эта функция запускает оркестрацию с помощью client.startNew
. После этого она должна вызывать client.createCheckStatusResponse
, чтобы вернуть ответ HTTP с URL-адресами, которые позволяют отслеживать новую оркестрацию и управлять ею.
Теперь у вас есть готовое приложение Устойчивых функций, которое можно выполнить локально и развернуть в Azure.
Одним из преимуществ модели программирования версии 4 является гибкость при написании функций. В модели V4 можно использовать один шаблон для создания всех трех функций в одном файле проекта.
В палитре команд найдите и щелкните
Azure Functions: Create Function...
.Следуя инструкциям, введите следующие сведения:
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.
- Чтобы протестировать созданную функцию, установите точку останова в коде функции действия
Hello
(файл Hello/index.js). Нажмите клавишу F5 или выберите действиеDebug: Start Debugging
на палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели Terminal (Терминал).
- Чтобы проверить функцию, задайте точку останова
hello
в коде функции действия (src/functions/hello.js). Нажмите клавишу F5 или выберите действиеDebug: Start Debugging
на палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели Terminal (Терминал).
Примечание.
См. сведения об отладке в руководстве по диагностике Устойчивых функций.
Для выполнения Устойчивых функций требуется учетная запись хранения Azure. Когда VS Code предложит выбрать учетную запись хранения, щелкните Выбрать учетную запись хранения.
Следуя инструкциям, укажите следующие сведения, чтобы создать новую учетную запись хранения в Azure.
Prompt значение Описание Выбор подписки имя вашей подписки Выберите подписку Azure. Выберите учетную запись хранения Создать учетную запись хранения Ввод имени новой учетной записи хранения уникальное имя Имя учетной записи хранения для создания Выберите группу ресурсов уникальное имя Имя создаваемой группы ресурсов Выбор расположения region Выберите ближайший регион. На панели Terminal (Терминал) скопируйте URL-адрес конечной точки функции, активируемой HTTP-запросом.
- Отправьте запрос HTTP POST к конечной точке URL-адреса, используя браузер или средства наподобие Postman или cURL. Последний сегмент замените именем функции оркестратора (
HelloOrchestrator
в нашем примере). URL-адрес должен выглядеть приблизительно так:http://localhost:7071/api/orchestrators/HelloOrchestrator
.
- Отправьте запрос HTTP POST к конечной точке URL-адреса, используя браузер или средства наподобие Postman или cURL. Последний сегмент замените именем функции оркестратора (
helloOrchestrator
в нашем примере). URL-адрес должен выглядеть приблизительно так:http://localhost:7071/api/orchestrators/helloOrchestrator
.
Полученный ответ является начальным результатом функции HTTP, который сообщает об успешном начале работы устойчивой оркестрации. Он еще не конечный результат оркестрации. Ответ включает несколько полезных URL-адреса. Теперь запросите состояние оркестрации.
Скопируйте значение 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" }
В VS Code нажмите клавиши Shift + F5, чтобы остановить отладку.
Убедившись, что функция выполняется правильно на локальном компьютере, опубликуйте проект в Azure.
Вход в Azure
Прежде чем создавать ресурсы Azure или публиковать приложение, необходимо войти в Azure.
Если вы не выполнили вход, щелкните значок Azure на панели действий. Затем в области Ресурсы выберите Вход в Azure….
Если вы уже выполнили вход и видите существующие подписки, перейдите к следующему разделу. Если у вас еще нет учетной записи Azure, нажмите кнопку "Создать учетную запись Azure...". Учащиеся могут выбрать создание учетной записи Azure для учащихся....
В ответ на запрос в браузере выберите учетную запись Azure и войдите в нее с учетными данными Azure. Если вы создаете новую учетную запись, вы можете выполнить вход после ее создания.
Выполнив вход, можно закрыть новое окно браузера. Подписки, принадлежащие учетной записи Azure, отображаются на боковой панели.
Создание приложения-функции в Azure
В этом разделе показано, как создать приложение-функцию и связанные ресурсы в подписке Azure.
Щелкните значок Azure на панели действий. Затем в области Ресурсы щелкните значок + и выберите вариант Создать приложение-функцию в Azure.
Введите следующие сведения по соответствующим запросам:
Prompt Выбор Выбор подписки Выберите подписку, которую нужно использовать. Эта подсказка не отобразится, если в области Ресурсы отображается только одна подписка. Ввод глобально уникального имени для приложения-функции Введите имя, допустимое в пути URL-адреса. Имя, которое вы вводите, проверяется, чтобы убедиться, что оно уникально в функциях Azure. Выберите стек сред выполнения Выберите версию языка, которая запускалась локально. Выбор расположения для новых ресурсов Для повышения производительности выберите регион рядом с вами. Расширение показывает на панели Azure: журнал действий состояние отдельных ресурсов по мере их создания в Azure.
После завершения создания в вашей подписке будут созданы приведенные ниже ресурсы Azure. Имена ресурсов основаны на имени приложения-функции.
- группу ресурсов — логический контейнер связанных ресурсов;
- Учетная запись хранения Azure уровня "Стандартный" для сохранения состояния и других сведений о проектах.
- Приложение-функция, которое предоставляет окружение для выполнения кода вашей функции. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими в рамках единого плана размещения.
- План службы приложений, который определяет базовый узел для приложения-функции.
- Экземпляр Application Insights, подключенный к приложению-функции, который отслеживает использование функций в приложении.
После создания приложения-функции и применения пакета развертывания отобразится уведомление.
Совет
По умолчанию ресурсы Azure, необходимые для приложения функции, создаются на основе указанного имени приложения функции. По умолчанию они также создаются в той же новой группе ресурсов, что и приложение-функция. Если необходимо настроить имена этих ресурсов или повторно использовать существующие ресурсы, вам нужно опубликовать проект с дополнительными параметрами создания.
Развертывание проекта в Azure
Внимание
Развертывание в существующем приложении-функции всегда перезаписывает содержимое этого приложения в Azure.
В области ресурсов действия Azure найдите только что созданный ресурс приложения-функции, щелкните ресурс правой кнопкой мыши и выберите "Развернуть в приложении-функции...".
При появлении запроса на перезапись предыдущих развертываний выберите "Развернуть ", чтобы развернуть код функции в новом ресурсе приложения-функции.
После завершения развертывания выберите Просмотреть выходные данные, чтобы просмотреть результаты создания и развертывания, включая созданные ресурсы Azure. Если вы пропустили уведомление, щелкните значок колокольчика в правом нижнем углу, чтобы снова просмотреть его.
Тестирование функции в Azure
Примечание.
Чтобы использовать модель программирования узлов версии 4, убедитесь, что приложение работает по крайней мере в версии 4.25 среды выполнения Функции Azure.
- Скопируйте URL-адрес HTTP-триггера на панели Output (Выходные данные). URL-адрес для вызова функции, активируемой HTTP-запросом, должен быть указан в таком формате:
https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
- Скопируйте URL-адрес HTTP-триггера на панели Output (Выходные данные). URL-адрес для вызова функции, активируемой HTTP-запросом, должен быть указан в таком формате:
https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
- Вставьте этот URL-адрес HTTP-запроса в адресную строку браузера. При использовании опубликованного приложения ответ состояния должен быть таким же, как и ранее.
Следующие шаги
Вы создали и опубликовали приложение устойчивой функции JavaScript с помощью Visual Studio Code.