Быстрый старт: Создание приложения Устойчивые функции на TypeScript

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

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

Это важно

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

Подсказка

Модель программирования v4 является текущим значением по умолчанию для Node.js Функции Azure и рекомендуется для новых проектов. Модель версии 3 доступна для существующих приложений, которые еще не перенесены.

Скриншот окна Edge. В окне показан результат выполнения простого приложения Устойчивые функции в Azure.

Необходимые условия

Чтобы завершить это краткое начальное руководство, вам требуется:

  • Для Visual Studio Code установлено расширение Функции Azure версии 1.10.4 или более поздней.
  • Средство тестирования HTTP, которое обеспечивает безопасность данных. Дополнительные сведения см. в статье Инструменты тестирования HTTP.

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

  • установлен Node.js версии 16.x+ .
  • установлен Node.js версии 18.x+ .

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

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

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

  1. В Visual Studio Code выберите F1 (или нажмите клавиши CTRL/CMD+SHIFT+P), чтобы открыть палитру команд. В командной строке (>) введите и выберите Функции Azure: создание нового проекта.

    Скриншот, показывающий палитру команд Visual Studio Code с выделенной функцией Функции Azure Create New Project.

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

  1. В подсказках укажите следующие сведения:

    Подсказка Действие Описание
    Выбор языка для проекта приложения-функции Выберите TypeScript. Создает локальный проект функций Node.js с помощью TypeScript.
    Выбор модели программирования JavaScript Выберите модель версии 3. Задает модель программирования версии 3.
    Выбор версии Выберите Функции Azure версии 4. Этот параметр отображается только в том случае, если основные инструменты еще не установлены. В этом случае Core Tools устанавливается при первом запуске приложения.
    Выбор шаблона для первой функции проекта выберите Пока пропустить.
    Выбор способа открытия проекта Выберите "Открыть" в текущем окне. Открывает Visual Studio Code в выбранной папке.
  1. В подсказках укажите следующие сведения:

    Подсказка Действие Описание
    Выбор языка для проекта приложения-функции Выберите TypeScript. Создает локальный проект функций Node.js с помощью TypeScript.
    Выбор модели программирования JavaScript Выберите модель версии 4. Задает модель программирования версии 4.
    Выбор версии Выберите Функции Azure версии 4. Этот параметр отображается только в том случае, если основные инструменты еще не установлены. В этом случае Core Tools устанавливается при первом запуске приложения.
    Выбор шаблона для первой функции проекта выберите Пока пропустить.
    Выбор способа открытия проекта Выберите "Открыть" в текущем окне. Открывает Visual Studio Code в выбранной папке.

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

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

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

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

  1. Используйте меню View или нажмите клавиши CTRL+SHIFT+' для открытия нового терминала в Visual Studio Code.

  2. Установите пакет в корневом каталоге функционального приложения, выполнив npm install durable-functions.

Замечание

При этом устанавливается durable-functions пакет версии 3.x, которая является версией, поддерживающей модель программирования версии 4. Основная версия пакета npm не соответствует версии модели программирования Node.js.

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

Самое базовое приложение Устойчивые функции имеет три функции:

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

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

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

  1. В палитре команд введите и выберите Функции Azure: Create Function.

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

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

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

Теперь добавьте указанную функцию активности Hello.

Функция активности

  1. В палитре команд введите и выберите Функции Azure: Create Function.

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

    Подсказка Действие Описание
    Выбор шаблона для функции Выберите действие Устойчивые функции. Создает функцию активности.
    Укажите имя функции Введите Hello. Имя функции активности.

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

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

Клиентская функция (инициатор HTTP)

  1. В палитре команд введите и выберите Функции Azure: Create Function.

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

    Подсказка Действие Описание
    Выбор шаблона для функции Выберите Устойчивые функции HTTP стартер. Создает начальную функцию HTTP.
    Укажите имя функции Выберите DurableFunctionsHttpStart. Название функции активности.
    Уровень авторизации Выберите "Анонимный". Для демонстрационных целей это значение позволяет вызывать функцию без использования проверки подлинности.

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

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

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

  1. В палитре команд введите и выберите Функции Azure: Create Function.

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

    Подсказка Действие Описание
    Выбор шаблона для функции Выберите Устойчивые функции orchestrator. Создает файл с оркестрацией приложения Устойчивые функции, функцией активности и функцией запуска клиента Durable.
    Выбор типа устойчивого хранилища Выберите служба хранилища Azure (по умолчанию). Задает бэкенд хранилища для использования в вашей Durable Functions.
    Укажите имя функции Введите Hello. Имя для вашей надежной функции.

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

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

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

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

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

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

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

Замечание

При первом запуске приложения Visual Studio Code запрашивает выбор или создание учетной записи служба хранилища Azure. Устойчивые функции требуется учетная запись хранения для сохранения состояния оркестрации.

  1. Чтобы проверить функцию, установите точку останова Hello в коде функции действия (в Hello/index.ts). Выберите F5 или выберите "Отладка " в палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели терминала.

    Замечание

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

  1. Чтобы проверить функцию, установите точку останова hello в коде функции действия (в src/functions/hello.ts). Выберите F5 или выберите "Отладка " в палитре команд, чтобы запустить проект приложения-функции. Выходные данные основных инструментов отображаются на панели терминала.

    Замечание

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

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

    Скриншот окна оповещения Visual Studio Code. Выделен аккаунт хранилища.

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

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

    Скриншот, показывающий панель терминала Visual Studio Code. На нём выделен URL-адрес начальной функции HTTP.

  1. Используйте браузер или средство тестирования HTTP для отправки HTTP-запроса POST в конечную точку URL-адреса.

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

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

  1. Используйте браузер или средство тестирования HTTP для отправки HTTP-запроса POST в конечную точку URL-адреса.

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

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

  1. Скопируйте значение statusQueryGetUriURL-адреса, вставьте его в адресную строку браузера и выполните запрос. Вы также можете продолжать использовать средство тестирования HTTP для выдачи запроса 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"
    }
    
  1. Скопируйте значение statusQueryGetUriURL-адреса, вставьте его в адресную строку браузера и выполните запрос. Вы также можете продолжать использовать средство тестирования HTTP для выдачи запроса GET.

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

    {
        "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"
    }
    
  1. Чтобы остановить отладку, в Visual Studio Code выберите SHIFT+F5.

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

Вход в Azure

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

  1. Если вы еще не вошли, в строке Активность выберите значок Azure. Затем в разделе Resources выберите Sign in to Azure.

    Скриншот окна входа в Azure в Visual Studio Code.

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

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

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

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

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

  1. В Visual Studio Code выберите F1, чтобы открыть палитру команд. В командной строке (>) введите и выберите Функции Azure: создание приложения-функции в Azure.

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

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

    На панели "Журнал действий" расширение Azure отображает состояние отдельных ресурсов, созданных в Azure.

    Скриншот, отображающий журнал создания ресурсов Azure.

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

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

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

    Подсказка

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

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

Это важно

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

  1. В панели команд введите и выберите Функции Azure: развертывание в приложении функций.

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

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

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

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

Это важно

Чтобы использовать модель программирования версии 4 Node.js, убедитесь, что приложение-функция работает по крайней мере в версии 4.25 среды выполнения Функции Azure. Версию на портале Azure можно проверить в разделе Configuration>Function runtime settings или проверить параметр приложения FUNCTIONS_EXTENSION_VERSION.

  1. Скопируйте URL-адрес триггера HTTP из выходной панели. URL-адрес, вызывающий функцию, активируемую HTTP, должен иметь следующий формат:

    https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  1. Скопируйте URL-адрес триггера HTTP из выходной панели. URL-адрес, вызывающий функцию, активируемую HTTP, должен иметь следующий формат:

    https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator

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

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

Очистите ресурсы

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