Создание Устойчивых функций с помощью портала Azure

Расширение устойчивых функций для Функций Azure предоставляется в пакете NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask. Это расширение необходимо установить в приложении-функции. В этой статье показано, как установить этот пакет, чтобы иметь возможность разрабатывать Устойчивые функции на портале Azure.

Примечание.

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

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

  1. На домашней странице или в меню портала Azure выберите Создать ресурс.

  2. На странице Создать щелкните Вычислительные ресурсы>Приложение-функция.

  3. На странице Основные сведения используйте параметры приложения-функции как указано в таблице ниже:

    Параметр Предлагаемое значение Description
    Подписка Ваша подписка Подписка, в которой создается новое приложение-функцию.
    Группа ресурсов myResourceGroup Имя новой группы ресурсов, в которой создается приложение-функция. Необходимо создать новую группу ресурсов, так как при создании приложений-функций в существующей группе ресурсов существуют известные ограничения.
    Имя приложения-функции Глобально уникальное имя Имя, которое идентифицирует ваше новое приложение-функцию. Допустимые символы: a-z (без учета регистра), 0-9 и -.
    Вы хотите развернуть код или образ контейнера? Код Параметр публикации файлов кода или контейнера Docker.
    Стек среды выполнения Предпочитаемый язык Выберите среду выполнения, которая поддерживает нужный функциональный язык программирования. Редактирование на портале доступно только для скрипта JavaScript, PowerShell, Python, TypeScript и C#. Библиотека классов C# и функции Java должны быть разработаны локально.
    Версия Номер версии Выберите версию установленной среды выполнения.
    Регион Предпочтительный регион Выберите регион, ближайший к вам или к другим службам, к которым могут обращаться функции.
    Операционная система Windows Операционная система предварительно выбирается на основе выбора стека среды выполнения, но при необходимости можно изменить этот параметр. Редактирование на портале поддерживается только в Windows. Публикация контейнеров поддерживается только в Linux.
    Варианты размещения и планы Потребление (бессерверный) План размещения, который определяет выделение ресурсов в приложении-функции. В плане потребления по умолчанию ресурсы добавляются динамически в соответствии с потребностями функций. При таком бессерверном размещении вы платите только за время выполнения функций. План "Премиум" также предлагает динамическое масштабирование. Когда выполняется план службы приложений необходимо управлять масштабированием приложения-функции.
  4. Примите параметры по умолчанию для создания новой учетной записи хранения на вкладке служба хранилища и нового экземпляра Application Insights на вкладке "Мониторинг". Вы также можете использовать существующую учетную запись хранения или экземпляр приложения Аналитика.

  5. Выберите "Проверка и создание ", чтобы просмотреть выбранную конфигурацию приложения, а затем выберите "Создать ", чтобы подготовить и развернуть приложение-функцию.

  6. Выберите значок Уведомления в правом верхнем углу портала. Вы должны увидеть сообщение Развертывание выполнено.

  7. Выберите Перейти к ресурсу для просмотра нового приложения-функции. Можно также установить флажок Закрепить на панели мониторинга. Это упростит возвращение к этому ресурсу приложения-функции из панели мониторинга.

    Screenshot of deployment notification.

По умолчанию для приложения-функции используется версия 2.x среды выполнения Функций Azure. Расширение Устойчивых функций работает для обеих версий 1.x и 2.x среды выполнения Функций Azure на C# и версии 2.x на JavaScript. Но шаблоны доступны, только если планируется использовать среду выполнения версии 2.x., независимо от выбранного языка.

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

Если вы создаете Устойчивые функции на JavaScript, необходимо установить пакет npmdurable-functions.

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

    Functions platform features choose Kudu

  2. На странице Дополнительные инструменты выберите Перейти.

  3. В консоли Kudu выберите Консоль отладки, а затем — CMD.

    Kudu debug console

  4. Появится структура каталогов файлов приложения-функции. Перейдите в папку site/wwwroot. Из нее вы можете отправить файл package.json, перетащив его в окно каталогов файлов. Ниже приведен пример файла package.json.

    {
      "dependencies": {
        "durable-functions": "^1.3.1"
      }
    }
    

    Kudu upload package.json

  5. Когда файл package.json будет передан, запустите команду npm install в консоли удаленного выполнения Kudu.

    Kudu run npm install

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

  1. В приложении-функции выберите Функции на левой панели, а затем в верхнем меню выберите Добавить.

  2. В поле поиска на странице Новая функция введите durable, а затем выберите шаблон Начальный объект HTTP устойчивых функций.

    Select Durable Functions HTTP starter

  3. Для имени новой функции введите HttpStart, а затем выберите Создать функцию.

    Созданная функция используется для запуска оркестрации.

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

  5. Создайте третью функцию с именем Hello, используя шаблон Действие устойчивых функций.

Тестирование оркестрации устойчивых функций

  1. Вернитесь к функции HttpStart, выберите Получить URL-адрес функции и щелкните значок Копировать в буфер обмена, чтобы скопировать URL-адрес. С помощью этого URL-адреса можно запустить функцию HelloSequence.

  2. Используя средство HTTP, например Postman или cURL, отправьте запрос POST к скопированному URL-адресу. В следующем примере представлена команда cURL, которая отправляет запрос POST к устойчивой функции:

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
    

    В этом примере {your-function-app-name} — это домен, который является именем вашего приложения-функции, а {functionName} — это функция оркестратора HelloSequence. Ответное сообщение содержит набор конечных точек URI, с помощью которых можно отслеживать и контролировать выполнение. Это выглядит следующим образом:

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. Вызовите URI конечной точки statusQueryGetUri, и вы увидите текущее состояние устойчивой функции, которое может выглядеть следующим образом:

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. Продолжайте вызывать конечную точку statusQueryGetUri, пока состояние не изменится на Завершено, и вы увидите ответ, подобный следующему:

    {
            "runtimeStatus": "Completed",
            "input": null,
            "output": [
                "Hello Tokyo!",
                "Hello Seattle!",
                "Hello London!"
            ],
            "createdTime": "2017-12-01T05:38:22Z",
            "lastUpdatedTime": "2017-12-01T05:38:28Z"
        }
    

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

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