Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Пакет 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 требуются следующие минимальные версии:
- среда выполнения Функции Azure версии 4.16+
- Функции Azure Core Tools версии 4.0.5095+ (при локальном запуске)
- Приложение PowerShell для Azure Functions для PowerShell версии 7.4 или новее
Включение автономного пакета 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.