독립 실행형 Durable Functions PowerShell SDK 가이드

독립 실행형 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에는 다음과 같은 최소 버전이 필요합니다.

독립 실행형 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 패키지를 설치하기 위한 두 가지 옵션이 있습니다. 관리되는 종속성(대부분의 앱에 권장)을 사용하거나 특정 버전을 고정해야 하거나 배포가 관리되는 종속성을 지원하지 않는 경우 모듈을 앱 콘텐츠와 번들로 묶습니다. 하나의 옵션만 필요합니다.

SDK를 관리되는 종속성으로 설치하려면 관리되는 종속성 지침을 따릅니다. 먼저 host.jsonmanagedDependency 섹션이 포함되어 있고 enabledtrue로 설정되어 있는지 확인하십시오.

{
  "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-DurableRetryOptionsNew-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 리포지토리 버그 및 기능 요청을 보고합니다.

다음 단계