Создание устойчивой функции в PowerShell

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

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

Выполнение устойчивых функций в Azure

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

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

  • Установка Visual Studio Code.

  • Установите расширение Функции Azure для VS Code.

  • Убедитесь, что используется последняя версия Azure Functions Core Tools.

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

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

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

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

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

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

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

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

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

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

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

Настройка приложения функции для использования PowerShell 7

Откройте файл local.settings.json и убедитесь, что для параметра с именем FUNCTIONS_WORKER_RUNTIME_VERSION задано значение ~7. Если он отсутствует или отличается, обновите содержимое файла.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "~7"
  }
}

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

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

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

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

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

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

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

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

Итак, вы добавили оркестратор для координации функций действия. Откройте файл HelloOrchestrator/run.ps1, чтобы ознакомиться с функцией оркестратора. Каждый вызов командлета Invoke-ActivityFunction приводит к вызову функции действия с именем Hello.

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

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

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

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

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

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

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

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

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

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

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

Итак, вы добавили активируемую вызовом HTTP функцию, которая запускает оркестратор. Откройте HttpStart/run.ps1 и убедитесь, что для запуска новой операции оркестрации в нем используется командлет Start-NewOrchestration. Затем он использует командлет New-OrchestrationCheckStatusResponse, чтобы вернуть ответ HTTP с URL-адресами, которые позволяют отслеживать новую оркестрацию и управлять ею.

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

Примечание.

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

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

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

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

    Примечание.

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

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

    Создание учетной записи хранения

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

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

    Локальные выходные данные в Azure

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

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

  6. Скопируйте значение 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"
    }
    
  7. В 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

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

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

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

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