Руководство по автономному Устойчивые функции пакету 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, 7.2 и предыдущих выпусков.
Мы планируем в конечном итоге освободить новую основную версию рабочей роли PowerShell без встроенного пакета SDK. На этом этапе пользователям потребуется установить пакет SDK отдельно с помощью этого автономного пакета; Действия по установке описаны ниже.
Установка и включение пакета SDK
См. этот раздел, чтобы узнать, как установить и включить новый автономный пакет SDK в существующем приложении.
Необходимые компоненты
Для автономного пакета SDK PowerShell требуются следующие минимальные версии:
- среда выполнения Функции Azure версии 4.16+
- Функции Azure Core Tools версии 4.0.5095+ (при локальном запуске)
- Функции Azure приложение PowerShell для PowerShell 7.2 или более поздней версии
Включение автономного пакета SDK для DF
Для запуска автономного пакета SDK PowerShell требуется следующий параметр приложения:
- Имя:
ExternalDurablePowerShellSDK
- Значение:
"true"
Этот параметр приложения отключит встроенный устойчивый пакет SDK для PowerShell версии 7.2 и выше, заставляя рабочую роль использовать внешний пакет SDK.
Если вы работаете локально с помощью Функции Azure Core Tools, необходимо добавить этот параметр в local.settings.json
файл. Если вы работаете в Azure, выполните следующие действия с помощью выбранного средства:
Замените и <RESOURCE_GROUP_NAME>
назовите <FUNCTION_APP_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
раздел с заданным свойством enabled
true
. Ниже приведен пример 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' = '1.*'
}
Вариант установки 2. Использование пользовательских модулей
Чтобы установить автономный пакет 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 Stop
profile.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.
Новые cmdLets
Invoke-DurableSubOrchestrator -FunctionName <Name> -Input <Input>
— это новый cmdLet, позволяющий пользователям использовать подстраховщики в рабочих процессах.
Измененные cmdLets
- CmdLet
Get-DurableTaskResult -Task <task>
теперь принимает только одну задачу в качестве аргумента вместо принятия списка задач.
Изменение поведения
- Исключения, создаваемые действиями,
Wait-DurableTask
запланированными (как и в шаблоне Fan-Out/Fan-In), больше не игнорируются автоматически. Вместо этого cmdLet распространяет это исключение в оркестратор, чтобы его можно было обрабатывать с помощью пользовательского кода. - Значения NULL больше не удаляются из списка
Wait-DurableTask
результатов вызова (например, WhenAll). Это означает, что успешный вызовWait-DurableTask
без флага-Any
должен возвращать массив того же размера, что и количество запланированных задач.
Где получить поддержку, предоставить отзыв и предложить изменения
На этапе предварительной версии этого выпуска автономный пакет SDK может ввести несколько дополнительных изменений. Эти изменения могут повлиять на сообщество, чтобы сообщить о любых отзывах и предложениях в новом репозитории GitHub пакета SDK.