Aracılığıyla paylaş


PowerShell SDK'sını tek başına Dayanıklı İşlevler kılavuzu

Dayanıklı İşlevler (DF) PowerShell SDK'sı artık PowerShell Galerisi'nde tek başına modül olarak kullanılabilir: AzureFunctions.PowerShell.Durable.SDK. Bu SDK genel kullanıma sunuldu (GA) ve PowerShell ile Dayanıklı İşlevler uygulamaları yazmak için önerilen yaklaşımdı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.

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

Önceki DF SDK' sı PowerShell dil çalışanında yerleşik olarak yer alır. Bu yaklaşım, Azure İşlevleri PowerShell kullanıcıları için Dayanıklı İşlevler uygulamaların kutudan çıkarılabilmesi avantajıyla geldi. Bununla birlikte, çeşitli eksikliklerle de 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 yüksek düzeyde istenen birçok iyileştirme içerir.
  • Paket, PowerShell çalışanlarından bağımsız olarak sürümü 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ında yerleşik DF SDK'sı, PowerShell 7.4 ve önceki sürümlerde kullanılabilir durumda kalır.

Sonunda yerleşik SDK 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üklemesi gerekir; yükleme adımları aşağıda açıklanmıştır.

SDK'yı yükleme ve etkinleştirme

Mevcut uygulamanızda 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.4 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 Çekirdek Araçları'nı kullanarak yerel olarak çalıştırıyorsanız, bu ayarı dosyanıza local.settings.json eklemeniz gerekir. Azure'da çalıştırıyorsanız, seçtiğiniz araçla şu adımları izleyin:

ve <FUNCTION_APP_NAME> değerini sırasıyla işlev uygulamanızın ve kaynak grubunuzun adıyla değiştirin<RESOURCE_GROUP_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ıklar kullanılarak yüklenebilir veya uygulama içeriğinizle birlikte paketlenebilir. 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ğinin olarak ayarlandığı host.jsonbir managedDependency bölüm enabled içerdiğinizden true 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 girdi 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' = '2.*'
}

Yükleme seçeneği 2: SDK modülünü uygulama içeriğinize ekleyin

Uygulama içeriğinize tek başına DF SDK'sını eklemek için uygulama içeriğine modül eklemeyle ilgili yönergeleri 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 terminaliniz aracılığıyla func host start uygulamanızı normal şekilde çalıştırın.

SDK referansı

SDK cmdlet'leri ve parametrelerinin tam belgesi için bkz. AzureFunctions.PowerShell.Durable.SDK Modülü.

SDK cmdlet'lerinin ayrıntılı açıklamalarını almak için cmdlet'ini de kullanabilirsiniz Get-Help . Bunu yapmak için, önceki bölümde gösterildiği gibi önce modülü içeri aktarmanız gerekir. Bundan sonra, cmdlet'lerin listesinin tamamını almak için aşağıdaki komutu çalıştırabilirsiniz:

Get-Help *-Durable*

Kullanım örnekleri de dahil olmak üzere belirli bir cmdlet hakkında ayrıntılı yardım almak için şunu çalıştırın:

Get-Help Invoke-DurableOrchestration -Full

Geçiş kılavuzu

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

Yeni cmdlet’ler

  • Invoke-DurableSubOrchestrator, kullanıcıların iş akışlarında alt orkestratörleri kullanmasına olanak tanıyan yeni bir cmdlet'tir.
  • Suspend-DurableOrchestration ve Resume-DurableOrchestration kullanıcıların düzenlemelerini sırasıyla askıya almasını ve sürdürmesini sağlayan yeni cmdlet'lerdir.

Değiştirilmiş cmdlet'ler

  • Get-DurableTaskResult cmdlet artık Görevler listesini kabul etmek yerine yalnızca tek bir Görevi bağımsız değişken olarak kabul eder.
  • New-DurableRetryOptions cmdlet'i, New-DurableRetryPolicy olarak yeniden adlandırıldı (geriye dönük uyumluluk için eski ad olarak diğer adı sağlanır).

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 düzenleyiciye 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 alın ve geribildirim sağlayın

Lütfen SDK'nın GitHub deposuna geri bildirimlerinizi ve önerilerinizi bildirin.