Поделиться через


Руководство по автономному Устойчивые функции пакету SDK PowerShell

Пакет SDK PowerShell для устойчивых функций (DF) теперь доступен как автономный модуль в коллекции PowerShell: AzureFunctions.PowerShell.Durable.SDK Этот пакет SDK теперь общедоступен и является рекомендуемым подходом для разработки приложений устойчивых функций с помощью PowerShell. В этой статье мы объясним преимущества этого изменения и какие изменения можно ожидать при внедрении этого нового пакета.

Мотивация автономного пакета SDK

Предыдущий пакет SDK для DF был встроен в рабочую роль языка PowerShell. Этот подход стал преимуществом, которое Устойчивые функции приложения можно создать из поля для Функции Azure пользователей PowerShell. Тем не менее, он также пришел с различными недостатками:

  • Новые функции, исправления ошибок и другие изменения зависят от частоты выпуска рабочей роли PowerShell.
  • Из-за автоматического обновления рабочей роли PowerShell пакет SDK для DF должен быть консервативным в отношении исправления ошибок, так как любые изменения поведения могут представлять собой критическое изменение.
  • Алгоритм воспроизведения, используемый встроенным пакетом SDK для DF, устарел: другие пакеты SDK для DF уже использовали более быструю и надежную реализацию.

Создав автономный пакет пакета SDK для PowerShell для DF, мы можем преодолеть эти недостатки. Это преимущества использования этого нового автономного пакета SDK:

  • Этот пакет SDK включает множество высоко запрошенных улучшений, таких как улучшение обработки исключений и обработка значений NULL, а также исправления сериализации.
  • Пакет является версиями независимо от рабочей роли PowerShell. Это позволяет пользователям включать новые функции и исправления сразу после их доступности, а также избегать критических изменений от автоматических обновлений.
  • Логика воспроизведения быстрее и надежнее: она использует тот же механизм воспроизведения, что и изолированный пакет SDK для C#.

План нерекомендуемого использования встроенного пакета SDK Для PowerShell для DF

Встроенный SDK для DF в рабочем процессе PowerShell останется доступным для PowerShell 7.4 и более ранних версий.

Мы планируем в конечном итоге освободить новую основную версию рабочей роли PowerShell без встроенного пакета SDK. На этом этапе пользователям потребуется установить пакет SDK отдельно с помощью этого автономного пакета; Действия по установке описаны ниже.

Установка и включение пакета SDK

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

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

Для автономного пакета SDK PowerShell требуются следующие минимальные версии:

Включение автономного пакета SDK для DF

Для запуска автономного пакета SDK PowerShell требуется следующий параметр приложения:

  • Имя: ExternalDurablePowerShellSDK
  • Значение: "true"

Этот параметр приложения отключит встроенного пакета Durable SDK для PowerShell версий 7.4 и более поздних, заставляя работника использовать внешний пакет SDK.

Если вы работаете локально с помощью Функции Azure Core Tools, необходимо добавить этот параметр в local.settings.json файл. Если вы работаете в Azure, выполните следующие действия с помощью выбранного средства:

Замените и <FUNCTION_APP_NAME> назовите <RESOURCE_GROUP_NAME> приложение-функцию и группу ресурсов соответственно.

az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"

Установка и импорт пакета SDK

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

Вариант установки 1. Использование управляемых зависимостей

Чтобы установить пакет SDK в качестве управляемой зависимости, необходимо выполнить инструкции по управляемым зависимостям. Дополнительные сведения см. в руководстве. В сводке сначала необходимо убедиться host.json , что в нем содержится managedDependency раздел с заданным свойством enabledtrue. Ниже приведен пример host.json , который удовлетворяет этому требованию:

{
  "version": "2.0",
  "managedDependency": {
    "enabled": true
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[3.*, 4.0.0)"
  },
}

Затем необходимо просто указать запись для пакета SDK для DF в requirements.psd1 файле, как показано в следующем примере:

# This file enables modules to be automatically managed by the Functions service.
# See https://aka.ms/functionsmanageddependency for additional information.
#
@{
    # For latest supported version, go to 'https://www.powershellgallery.com/packages/AzureFunctions.PowerShell.Durable.SDK/'.
    'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}

Вариант установки 2. Включение модуля SDK в содержимое приложения

Чтобы включить автономный пакет SDK для DF в содержимое приложения, необходимо следовать инструкциям по включению модулей в содержимое приложения. Обязательно ознакомьтесь с приведенными выше документами. В итоге необходимо поместить пакет SDK в ".\Modules" каталог, расположенный в корне приложения.

Например, из корневого каталога приложения и после создания ".\Modules" каталога можно скачать автономный пакет SDK в каталог модулей следующим образом:

Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"

Импорт пакета SDK

Последний шаг — импорт пакета SDK в сеанс кода. Для этого импортируйте пакет SDK PowerShell через Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stopprofile.ps1 файл. Например, если приложение было шаблонным с помощью шаблонов, ваш profile.ps1 файл может в конечном итоге выглядеть следующим образом:

# Azure Functions profile.ps1
#
# This profile.ps1 will get executed every "cold start" of your Function App.
# "cold start" occurs when:
#
# * A Function App starts up for the very first time
# * A Function App starts up after being de-allocated due to inactivity
#
# You can define helper functions, run commands, or specify environment variables
# NOTE: any variables defined that are not environment variables will get reset after the first execution

# Authenticate with Azure PowerShell using MSI.
# Remove this if you are not planning on using MSI or Azure PowerShell.
if ($env:MSI_SECRET) {
    Disable-AzContextAutosave -Scope Process | Out-Null
    Connect-AzAccount -Identity
}

# Uncomment the next line to enable legacy AzureRm alias in Azure PowerShell.
# Enable-AzureRmAlias

# You can also define functions or aliases that can be referenced in any of your PowerShell functions.

# Import standalone PowerShell SDK
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop

Это все действия, необходимые для использования следующего пакета SDK PowerShell. Запустите приложение как обычно, используя func host start терминал, чтобы начать работу с пакетом SDK.

Справочник по SDK

См. модуль AzureFunctions.PowerShell.Durable.SDK для полного справочника командлетов SDK и их параметров.

Вы также можете использовать командлет Get-Help для получения подробных описаний командлетов модуля SDK. Для этого необходимо сначала импортировать модуль, как показано в предыдущем разделе. После этого можно выполнить следующую команду, чтобы получить полный список командлетов.

Get-Help *-Durable*

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

Get-Help Invoke-DurableOrchestration -Full

Руководство по миграции

В этом разделе описаны изменения интерфейса и поведения, которые можно ожидать при использовании нового пакета SDK.

Новые командлеты

  • Invoke-DurableSubOrchestrator — это новый командлет, позволяющий пользователям использовать суборкестраторы в их рабочих процессах.
  • Suspend-DurableOrchestration и Resume-DurableOrchestration — это новые командлеты, которые позволяют пользователям соответственно приостанавливать и возобновлять оркестрации.

Измененные командлеты

  • Командлет Get-DurableTaskResult теперь принимает только одну задачу в качестве аргумента, а не принимает список задач.
  • Командлет New-DurableRetryOptions переименован в New-DurableRetryPolicy (предоставлен псевдоним для старого имени для обратной совместимости).

Изменение поведения

  • Исключения, создаваемые действиями, Wait-DurableTask запланированными (как и в шаблоне Fan-Out/Fan-In), больше не игнорируются автоматически. Вместо этого командлет передает это исключение оркестратору, чтобы оно могло обрабатываться пользовательским кодом.
  • Значения NULL больше не удаляются из списка Wait-DurableTask результатов вызова (например, WhenAll). Это означает, что успешный вызов Wait-DurableTask без флага -Any должен возвращать массив того же размера, что и количество запланированных задач.

Получите поддержку и оставьте отзыв

Сообщите о любых отзывах и предложениях в репозитории GitHub пакета SDK.