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:
- Azure İşlevleri Çalışma Zamanı v4.16+
- Azure İşlevleri Core Tools v4.0.5095+ (yerel olarak çalışıyorsa)
- PowerShell 7.2 veya üzeri için PowerShell uygulamasını Azure İşlevleri
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ış true
bir 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ınWait-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.