Průvodce samostatnou sadou SDK Durable Functions pro PowerShell

Samostatný Durable Functions PowerShell SDK (AzureFunctions.PowerShell.Durable.SDK) se doporučuje při vytváření aplikací Durable Functions pomocí PowerShellu. Nahrazuje integrovanou sadu SDK rychlejším přehráváním (stejný modul jako izolovaná sada SDK v jazyce C#), nezávislou správou verzí a vylepšeným zpracováním výjimek, zpracováním hodnot null a serializací. Integrovaná sada SDK zůstává k dispozici pro PowerShell 7.4 a starší, ale bude odebrána v budoucí hlavní verzi pracovního procesu PowerShellu.

Kontrolní seznam pro migraci

Pomocí následujícího kontrolního seznamu můžete sledovat průběh jednotlivých kroků migrace:

Krok Oddíl
1. Ověření požadavků Prerequisites
2. Povolení samostatné sady SDK Povolení samostatné sady SDK
3. Instalace balíčku SDK Instalace balíčku SDK
4. Importujte SDK Import SDK
5. Spuštění aplikace Spuštění aplikace
6. Kontrola změn rozhraní a chování Migrace z vestavěného SDK

Instalace samostatné sady SDK

Podle těchto kroků nainstalujte a povolte samostatnou sadu SDK ve stávající aplikaci.

Ověření předpokladů

Samostatná sada PowerShell SDK vyžaduje následující minimální verze:

Povolení samostatné sady SDK

K spuštění samostatné sady PowerShell SDK se vyžaduje následující nastavení aplikace:

  • Název: ExternalDurablePowerShellSDK
  • Hodnota: "true"

Toto nastavení aplikace zakáže integrovanou sadu Durable SDK pro PowerShell verze 7.4 a vyšší, což vynutí pracovní proces používat externí sadu SDK.

Pokud používáte Nástroje Azure Functions Core Tools místně, měli byste do local.settings.json souboru přidat toto nastavení. Pokud používáte v Azure, použijte tento postup s nástrojem podle svého výběru:

Nahraďte <FUNCTION_APP_NAME> názvem vaší funkční aplikace a <RESOURCE_GROUP_NAME> názvem vaší skupiny prostředků.

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

Instalace balíčku SDK

Máte dvě možnosti instalace balíčku sady SDK. Použijte spravované závislosti (doporučeno pro většinu aplikací) nebo zabalte modul s obsahem aplikace, pokud potřebujete přiřadit konkrétní verzi nebo pokud vaše nasazení nepodporuje spravované závislosti. Je potřeba jenom jedna možnost.

Pokud chcete sadu SDK nainstalovat jako spravovanou závislost, postupujte podle pokynů ke spravovaným závislostem. Nejprve se ujistěte, že váš host.json obsahuje managedDependency oddíl s enabled nastaveným na true.

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

Pak v souboru zadejte položku sady SDK 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.*'
}

Možnost 2: Zahrnutí modulu SDK do obsahu aplikace

Pokud chcete sadu SDK spojit s vaší aplikací, umístěte balíček SDK do ".\Modules" adresáře v kořenové složce vaší aplikace. Další informace najdete v tématu Zahrnutí modulů do obsahu aplikace.

Ve vašem kořenovém adresáři aplikace vytvořte adresář a stáhněte SDK.

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

Importujte SDK

Přidejte do profile.ps1 souboru následující řádek pro import sady SDK při každém studeném spuštění:

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

Spuštění aplikace

Spusťte aplikaci pomocí func host start. Samostatná sada SDK je teď aktivní.

Migrace z vestavěné sady SDK

Pokud migrujete existující aplikaci z integrované sady SDK, projděte si následující změny rozhraní a chování.

Nové rutiny

cmdlet Description
Invoke-DurableSubOrchestrator Volání podřízených orchestrátorů zevnitř pracovního postupu orchestrátoru.
Suspend-DurableOrchestration Pozastavte spuštěnou instanci orchestrace.
Resume-DurableOrchestration Obnovte dříve pozastavenou instanci orchestrace.

Upravené rutiny

Change Podrobnosti
Get-DurableTaskResult Nyní přijímá jeden Task argument jako argument místo seznamu úkolů.
New-DurableRetryOptionsNew-DurableRetryPolicy Přejmenován. Pro zpětnou kompatibilitu je k dispozici alias starého názvu.

Změny chování

Zpracování výjimek v Wait-DurableTask

Výjimky vyvolané aktivitami naplánovanými vzorem Wait-DurableTask (model fan-out nebo fan-in) se už bezobslužně ignorují. Cmdlet teď předá výjimku do orchestrátoru, abyste ji mohli zpracovat ve svém kódu.

Vestavěné SDK – výjimky byly tiše pohlceny:

# Exceptions from failed activities were lost
$tasks = @()
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item1" -NoWait
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item2" -NoWait
$results = Wait-DurableTask -Task $tasks
# No error even if an activity failed

Samostatná sada SDK – výjimky se šíří do orchestrátoru:

try {
    $tasks = @()
    $tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item1" -NoWait
    $tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item2" -NoWait
    $results = Wait-DurableTask -Task $tasks
} catch {
    # Handle the activity failure
    Write-Host "An activity failed: $_"
}

Hodnoty null zachované ve Wait-DurableTask výsledcích

Hodnoty Null už nebudou vyřazeny ze seznamu výsledků vyvolání Wait-DurableTask (WhenAll). Úspěšné volání bez příznaku -Any teď vrátí pole se stejnou velikostí jako počet naplánovaných úkolů, včetně $null položek pro aktivity, které vrátily hodnotu null.

Integrovaná sada SDK – výsledky null byly vyřazeny:

# 3 tasks scheduled, but if one returned $null, results had only 2 items
$results = Wait-DurableTask -Task $tasks
$results.Count  # Could be 2 instead of 3

Samostatná sada SDK – výsledky null se zachovají:

# 3 tasks scheduled, results always has 3 items
$results = Wait-DurableTask -Task $tasks
$results.Count  # Always 3, with $null for activities that returned null

Referenční příručka SDK

Kompletní referenci o cmdletech najdete v tématu AzureFunctions.PowerShell.Durable.SDK Module. Po importu modulu můžete také spustit Get-Help *-Durable* pro seznam všech dostupných cmdletů nebo Get-Help <cmdlet-name> -Full pro podrobné použití.

Získání podpory

Nahlašujte chyby a žádosti o funkce v úložišti sady SDK GitHub.

Další kroky