독립 실행형 Durable Functions PowerShell SDK(AzureFunctions.PowerShell.Durable.SDK)는 PowerShell을 사용하여 Durable Functions 앱을 작성하는 데 권장되는 방법입니다. 기본 제공 SDK를 더 빠른 재생 논리(C# 격리 SDK와 동일한 엔진), 독립적인 버전 관리 및 향상된 예외 처리, null 값 처리 및 serialization으로 바꿉니다. 기본 제공 SDK는 PowerShell 7.4 및 이전 버전에서 계속 사용할 수 있지만 향후 PowerShell 작업자의 주요 릴리스에서 제거될 예정입니다.
마이그레이션 검사 목록
다음 검사 목록을 사용하여 각 마이그레이션 단계를 통해 진행 상황을 추적합니다.
| Step | 섹션 |
|---|---|
| 1. 필수 구성 요소 확인 | 사전 요구 사항 |
| 2. 독립 실행형 SDK 사용 | 독립 실행형 SDK 사용 |
| 3. SDK 패키지 설치 | SDK 패키지 설치 |
| 4. SDK 가져오기 | SDK 가져오기 |
| 5. 앱 실행 | 앱 실행 |
| 6. 인터페이스 및 동작 변경 내용 검토 | 기본 제공 SDK에서 마이그레이션 |
독립 실행형 SDK 설치
다음 단계에 따라 기존 앱에서 독립 실행형 SDK를 설치하고 사용하도록 설정합니다.
필수 구성 요소 확인
독립 실행형 PowerShell SDK에는 다음과 같은 최소 버전이 필요합니다.
- Azure Functions 런타임 v4.16+
- Azure Functions Core Tools v4.0.5095+(로컬로 실행되는 경우)
- PowerShell 7.4 이상용 Azure Functions PowerShell 앱
독립 실행형 SDK 사용
독립 실행형 PowerShell SDK를 실행하려면 다음 애플리케이션 설정이 필요합니다.
- 이름:
ExternalDurablePowerShellSDK - 값:
"true"
이 애플리케이션 설정은 PowerShell 버전 7.4 이상에 대한 기본 제공 Durable SDK를 사용하지 않도록 설정하여 작업자가 외부 SDK를 사용하도록 강제합니다.
Azure Functions 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 섹션이 포함되어 있고 enabled가 true로 설정되어 있는지 확인하십시오.
{
"version": "2.0",
"managedDependency": {
"enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
그런 다음 파일에서 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.*'
}
옵션 2: 앱 콘텐츠에 SDK 모듈 포함
SDK를 앱과 번들하려면 앱 루트의 디렉터리 내에 ".\Modules" SDK 패키지를 배치합니다. 자세한 내용은 앱 콘텐츠에 모듈 포함을 참조하세요.
애플리케이션 루트에서 디렉터리를 만들고 SDK를 다운로드합니다.
Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"
SDK 가져오기
콜드 시작 시 SDK를 가져오려면 파일에 다음 줄을 추가합니다 profile.ps1 .
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
앱 실행
func host start으로 앱을 시작하세요. 독립 실행형 SDK가 활성화되었습니다.
기본 제공 SDK에서 마이그레이션
기본 제공 SDK에서 기존 앱을 마이그레이션하는 경우 다음 인터페이스 및 동작 변경 내용을 검토합니다.
새로운 cmdlet들
| Cmdlet (커맨드렛) | Description |
|---|---|
Invoke-DurableSubOrchestrator |
오케스트레이터 워크플로 내에서 하위 오케스트레이터를 호출합니다. |
Suspend-DurableOrchestration |
실행 중인 오케스트레이션 인스턴스를 일시 중단합니다. |
Resume-DurableOrchestration |
이전에 일시 중단된 오케스트레이션 인스턴스를 다시 시작합니다. |
수정된 cmdlet
| Change | 세부 정보 |
|---|---|
Get-DurableTaskResult |
이제 작업 목록 대신 단일 Task 을 인수로 허용합니다. |
New-DurableRetryOptions → New-DurableRetryPolicy |
이름이 변경됨 이전 이름의 별칭은 이전 버전과의 호환성을 위해 제공됩니다. |
동작 변경
예외 처리 Wait-DurableTask에서
Wait-DurableTask(팬아웃/팬인 패턴)를 통해 예약된 작업에서 발생하는 예외가 더 이상 무시되지 않고 처리됩니다. 이제 cmdlet은 코드에서 처리할 수 있도록 예외를 오케스트레이터에 전파합니다.
기본 제공 SDK - 예외가 조용히 무시되었습니다.
# 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
독립 실행형 SDK - 예외가 오케스트레이터에 전파됩니다.
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: $_"
}
Wait-DurableTask null 값이 결과에 보존됨
Null 값은 더 이상 (WhenAll) 호출의 Wait-DurableTask 결과 목록에서 삭제되지 않습니다. 플래그가 없는 -Any 성공적인 호출은 이제 null을 반환한 활동에 대한 항목을 포함하여 $null 예약된 작업 수와 동일한 크기의 배열을 반환합니다.
기본 제공 SDK - null 결과가 삭제되었습니다.
# 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
독립 실행형 SDK - null 결과가 유지됩니다.
# 3 tasks scheduled, results always has 3 items
$results = Wait-DurableTask -Task $tasks
$results.Count # Always 3, with $null for activities that returned null
SDK에 대한 참조
전체 cmdlet 참조는 AzureFunctions.PowerShell.Durable.SDK Module 참조하세요. 모듈을 가져온 후 실행 Get-Help *-Durable* 하여 사용 가능한 모든 cmdlet 또는 Get-Help <cmdlet-name> -Full 자세한 사용을 나열할 수도 있습니다.
지원 받기
SDK의 GitHub 리포지토리 버그 및 기능 요청을 보고합니다.