Aracılığıyla paylaş


Tek başına Dayanıklı İşlevler PowerShell SDK kılavuzu

Dayanıklı İşlevler (DF) PowerShell SDK'sı artık önizleme aşamasında, PowerShell Galerisi tek başına paket olarak kullanılabilir: AzureFunctions.PowerShell.Durable.SDK. Bu SDK paketi GA olduğunda, PowerShell ile Dayanıklı İşlevler uygulama yazmanın önerilen araçları olacaktır. Bu makalede, bu değişikliğin avantajlarını ve bu yeni paketi benimserken karşılaşabileceğiniz değişiklikleri açıklayacağız.

Not

Bu paket şu anda önizleme aşamasındadır .

Tek başına SDK'nın arkasındaki motivasyon

Önceki DF SDK' sı PowerShell dil çalışanını temel alır. Bu yaklaşım, Dayanıklı İşlevler uygulamaların Azure İşlevleri PowerShell kullanıcıları için kullanıma hazır olarak yazılması avantajıyla birlikte geldi. Bununla birlikte, çeşitli eksikliklerle birlikte geldi:

  • Yeni özellikler, hata düzeltmeleri ve diğer değişiklikler PowerShell çalışanının sürüm temposunun bağımlı olduğu anlamına gelir.
  • PowerShell çalışanının otomatik yükseltme özelliği nedeniyle, herhangi bir davranış değişikliği hataya neden olabileceğinden DF SDK'sının hataları düzeltme konusunda muhafazakar olması gerekiyordu.
  • Yerleşik DF SDK'sı tarafından kullanılan yeniden yürütme algoritması eskidi: diğer DF SDK'ları zaten daha hızlı ve daha güvenilir bir uygulama kullandı.

Tek başına bir DF PowerShell SDK paketi oluşturarak bu eksikliklerin üstesinden gelebiliriz. Bu yeni tek başına SDK paketini kullanmanın avantajları şunlardır:

  • Bu SDK, daha iyi özel durum ve null değer işleme ve serileştirme düzeltmeleri gibi çok sayıda yüksek talep edilen geliştirme içerir.
  • Paketin sürümü PowerShell çalışandan bağımsız olarak oluşturulur. Bu, kullanıcıların yeni özellikleri ve düzeltmeleri kullanıma sunuldukları anda eklemesine olanak tanırken, otomatik yükseltmelerdeki hataya neden olan değişiklikleri de önler.
  • Yeniden yürütme mantığı daha hızlı ve daha güvenilirdir: C# için DF yalıtılmış SDK ile aynı yeniden yürütme altyapısını kullanır.

Yerleşik DF PowerShell SDK'sı için kullanımdan kaldırma planı

PowerShell çalışanının yerleşik DF SDK'sı PowerShell 7.4, 7.2 ve önceki sürümlerde kullanılabilir durumda kalır.

Sonunda yerleşik SDK'sı olmadan PowerShell çalışanının yeni bir ana sürümünü yayınlamayı planlıyoruz. Bu noktada kullanıcıların bu tek başına paketi kullanarak SDK'yı ayrı olarak yüklemeleri gerekir; yükleme adımları aşağıda açıklanmıştır.

SDK'yı yükleme ve etkinleştirme

Mevcut uygulamanıza yeni tek başına SDK'yı yüklemeyi ve etkinleştirmeyi öğrenmek için bu bölüme bakın.

Önkoşullar

Tek başına PowerShell SDK'sı aşağıdaki en düşük sürümleri gerektirir:

Tek başına DF SDK'sını kabul etme

Tek başına PowerShell SDK'sını çalıştırmak için aşağıdaki uygulama ayarı gereklidir:

  • Ad: ExternalDurablePowerShellSDK
  • Değer: "true"

Bu uygulama ayarı, PowerShell 7.2 ve üzeri sürümleri için yerleşik Dayanıklı SDK'yı devre dışı bırakır ve çalışanı dış SDK'yı kullanmaya zorlar.

Azure İşlevleri Core Tools'u kullanarak yerel olarak çalıştırıyorsanız bu ayarı dosyanıza local.settings.json eklemeniz gerekir. Azure'da çalıştırıyorsanız, istediğiniz araçla şu adımları izleyin:

ve <RESOURCE_GROUP_NAME> öğesini sırasıyla işlev uygulamanızın ve kaynak grubunuzun adıyla değiştirin<FUNCTION_APP_NAME>.

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

SDK'yi yükleme ve içeri aktarma

SDK paketini yüklemek için iki seçeneğiniz vardır: yönetilen bağımlılık olarak veya özel bir modül olarak yüklenebilir. Bu bölümde her iki seçenek de açıklanmaktadır ancak bunlardan yalnızca biri gereklidir.

Yükleme seçeneği 1: Yönetilen bağımlılıkları kullanma

SDK'yı yönetilen bağımlılık olarak yüklemek için yönetilen bağımlılıklar kılavuzunu izlemeniz gerekir. Ayrıntılar için lütfen kılavuzu gözden geçirin. Özetle, öncelikle özelliği olarak ayarlanmış truebir managedDependency bölüm enabled içerdiğinizden host.json emin olmanız gerekir. Bu gereksinimi karşılayan bir örnek host.json aşağıda verilmiştir:

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

Ardından, aşağıdaki örnekte olduğu gibi dosyanızda requirements.psd1 DF SDK'sı için bir giriş belirtmeniz yeterlidir:

# 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.*'
}

Yükleme seçeneği 2: Özel modülleri kullanma

Tek başına DF SDK'yı özel bir modül olarak yüklemek için uygulama düzeyinde modüller klasörü oluşturma yönergelerini izlemeniz gerekir. Ayrıntılar için yukarıda belirtilen belgeleri gözden geçirmeyi unutmayın. Özetle, SDK paketini uygulamanızın kökünde bulunan bir ".\Modules" dizine yerleştirmeniz gerekir.

Örneğin, uygulamanızın kökünden ve bir ".\Modules" dizin oluşturduktan sonra tek başına SDK'yı modüller dizinine şu şekilde indirebilirsiniz:

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

SDK'yi içeri aktarma

Son adım, SDK'yi kodunuzun oturumuna aktarmaktır. Bunu yapmak için Dosyanızda aracılığıyla Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop PowerShell SDK'sını içeri aktarın profile.ps1 . Örneğin, uygulamanız şablonlar aracılığıyla iskelesi oluşturulmuşsa dosyanız profile.ps1 şu şekilde görünebilir:

# 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

Bunlar, sonraki PowerShell SDK'sını kullanmak için gereken tüm adımlardır. SDK'yı kullanmaya başlamak için terminalinizde aracılığıyla func host start uygulamanızı normal şekilde çalıştırın.

Geçiş kılavuzu

Bu bölümde, yeni SDK'yı kullanırken karşılaşabileceğiniz arabirim ve davranışsal değişiklikleri açıklayacağız.

Yeni CmdLet'ler

  • Invoke-DurableSubOrchestrator -FunctionName <Name> -Input <Input> , kullanıcıların iş akışlarında alt oluşturucuları kullanmasına olanak tanıyan yeni bir CmdLet'tir.

Değiştirilmiş CmdLet'ler

  • CmdLet Get-DurableTaskResult -Task <task> artık bir Görev listesi kabul etmek yerine bağımsız değişken olarak yalnızca tek bir Görevi kabul eder.

Davranış değişiklikleri

  • ile Wait-DurableTask zamanlanan etkinlikler tarafından (Fan-Out/Fan-In düzeninde olduğu gibi) oluşan özel durumlar artık sessizce yoksayılır. Bunun yerine, bir özel durumda, CmdLet bu özel durumu orchestrator'a yayarak kullanıcı kodu tarafından işlenebilmesini sağlar.
  • Null değerler artık ( Wait-DurableTask yani WhenAll) çağrısının sonuç listesinden bırakılamaz. Bu, bayrağı olmadan başarılı bir çağrının Wait-DurableTask-Any zamanlandığı görev sayısıyla aynı boyutta bir dizi döndürmesi gerektiği anlamına gelir.

Destek alma, geri bildirim sağlama ve değişiklik önerme

Bu sürümün önizleme aşamasında, tek başına SDK birkaç değişiklik daha yapabilir. Bu değişiklikler topluluk tarafından etkilenebilir, bu nedenle SDK'nın yeni GitHub deposuna tüm geri bildirimleri ve önerileri bildirin.