Jak cílit na verze modulu runtime Azure Functions

Aplikace funkcí běží na konkrétní verzi modulu runtime Azure Functions. Ve výchozím nastavení vytvoříte aplikace funkcí v nejnovější verzi modulu runtime Functions 4.x. Vaše aplikace funkcí se podporují jenom v případech, kdy běží na podporované hlavní verzi. Tento článek vysvětluje, jak nakonfigurovat aplikaci funkcí v Azure tak, aby v případě potřeby cílila nebo připnula na konkrétní verzi modulu runtime Functions.

Úvahy

Při cílení na konkrétní verzi modulu runtime mějte na paměti tyto aspekty:

  • Plán Flex Consumption běží pouze na verzi 4.x modulu runtime. Vzhledem k tomu, že plán Flex Consumption nepodporuje nastavení aplikace FUNCTIONS_EXTENSION_VERSION, nemůže vaše aplikace při běhu v tomto plánu cílit na konkrétní verzi runtime.
  • Způsob, jakým cílíte na konkrétní verzi, závisí na tom, jestli používáte Windows nebo Linux.
  • Tento článek je specifický pro Windows nebo Linux. V horní části článku vyberte svůj operační systém.
  • Pokud je to možné, vždy spusťte aplikaci na nejnovější podporované verzi modulu runtime. Připněte aplikaci na konkrétní verzi jenom v případě, že máte pokyn, abyste to udělali kvůli problému s nejnovější verzí. Vždy přejděte až k nejnovější verzi modulu runtime, jakmile vaše funkce můžou běžet správně.
  • Během místního vývoje musí nainstalovaná verze nástrojů Azure Functions Core Tools odpovídat hlavní verzi modulu runtime používané aplikací funkcí v Azure. Další informace najdete v tématu Verze nástrojů Core Tools.

Aktualizace verze modulu runtime

Pokud je to možné, vždy spouštět aplikace funkcí na nejnovější podporované verzi modulu runtime Azure Functions. Pokud je vaše aplikace funkcí aktuálně spuštěná ve starší verzi modulu runtime, migrujte aplikaci na verzi 4.x.

Pokud má vaše aplikace existující funkce, musíte před přechodem na novější hlavní verzi modulu runtime provést preventivní opatření. Následující články popisují zásadní změny mezi hlavními verzemi, včetně zásadních změn specifických pro jednotlivé jazyky. Poskytují také podrobné pokyny pro úspěšnou migraci vaší stávající aplikace funkcí.

Pokud chcete zjistit aktuální verzi modulu runtime, přečtěte si téma Zobrazení aktuální verze modulu runtime.

Zobrazení aktuální verze modulu runtime

Aktuálně používanou verzi modulu runtime vaší aplikace funkcí můžete zobrazit některým z těchto způsobů:

Pokud chcete zobrazit a aktualizovat verzi modulu runtime, kterou aktuálně používá aplikace funkcí, postupujte takto:

  1. Na webu Azure Portal přejděte do aplikace funkcí.

  2. Rozbalte nastavení a pak vyberte Konfigurace.

  3. Na kartě Nastavení modulu runtime funkce si poznamenejte Verzi modulu runtime. V tomto příkladu je verze nastavena na ~4.

    Snímek obrazovky znázorňující, jak zobrazit verzi modulu runtime

Připnout ke konkrétní verzi

Azure Functions umožňuje použít nastavení aplikace FUNCTIONS_EXTENSION_VERSION k určení verze běhového prostředí používané konkrétní aplikací funkcí. Pokud zadáte jenom hlavní verzi (~4), aplikace funkcí se automaticky aktualizuje na nové podverze modulu runtime, jakmile budou dostupné. Aktualizace podverzí jsou automatické, protože nové podverze pravděpodobně nezavádějí změny, které by přerušily vaše funkce.

Aplikace pro Linux používají linuxFxVersion nastavení webu spolu s FUNCTIONS_EXTENSION_VERSION určením správné základní image Linuxu, ve které se mají spouštět funkce. Při vytváření nové aplikace funkcí v Linuxu modul runtime automaticky zvolí správnou základní image na základě verze modulu runtime vašeho zásobníku jazyků.

Připnutí na konkrétní verzi modulu runtime restartuje vaši funkci aplikace.

Když zadáte konkrétní podverzi (například 4.0.12345) v FUNCTIONS_EXTENSION_VERSION, připnete aplikaci funkcí na tuto konkrétní verzi modulu runtime, dokud se explicitně nerozhodnete přejít zpět na automatické aktualizace verzí. Připněte si určitou podverzi pouze na nezbytně dlouhou dobu, abyste vyřešili všechny problémy s vaší aplikací funkcí, které vám brání v cílení na hlavní verzi. Starší vedlejší verze jsou z produkčního prostředí pravidelně odstraňovány. Když je vaše funkční aplikace připnutá k podverzi, která se později odebere, běží na nejbližší dostupnou verzi místo verze, která byla původně nastavena v FUNCTIONS_EXTENSION_VERSION. Oznámení služby App Service oznamují odebrání menší verze.

Poznámka:

Když se pokusíte publikovat ze sady Visual Studio do aplikace, která je připnutá ke konkrétní podverzi modulu runtime, zobrazí se dialogové okno s výzvou k aktualizaci na nejnovější verzi nebo zrušení publikování. Pokud se chcete této kontrole vyhnout a musíte použít konkrétní dílčí verzi, přidejte vlastnost <DisableFunctionExtensionVersionUpdate>true</DisableFunctionExtensionVersionUpdate> do souboru .csproj.

K dočasnému připnutí aplikace na konkrétní verzi modulu runtime použijte jednu z těchto metod:

Pokud chcete zobrazit a aktualizovat verzi modulu runtime, kterou aktuálně používá aplikace funkcí, postupujte takto:

  1. Na webu Azure Portal přejděte do aplikace funkcí.

  2. Rozbalte nastavení a pak vyberte Konfigurace.

  3. Na kartě Nastavení modulu runtime funkce si poznamenejte Verzi modulu runtime. V tomto příkladu je verze nastavena na ~4.

    Snímek obrazovky znázorňující, jak zobrazit verzi modulu runtime

  1. Pokud chcete aplikaci připnout ke konkrétní podverzi, rozbalte v levém podokně možnost Nastavení a potom vyberte Proměnné prostředí.

  2. Na kartě Nastavení aplikace vyberte FUNCTIONS_EXTENSION_VERSION, změňte hodnotu na požadovanou podverzi a pak vyberte Použít.

  3. Vyberte Použít a pak vyberte Potvrdit , aby se změny použily, a restartujte aplikaci.

Aplikace funkcí se restartuje po provedení změny nastavení aplikace.

Pokud chcete aplikaci funkcí připnout na konkrétní verzi modulu runtime v Linuxu, nastavte adresu URL základní image specifickou pro verzi v linuxFxVersion nastavení webu ve formátu DOCKER|<PINNED_VERSION_IMAGE_URI>.

Důležité

Aplikace funkcí v Linuxu připnuté ke konkrétní verzi nedostávají pravidelné aktualizace zabezpečení ani aktualizace funkcí hostitele. Pokud ji nedoporučuje pracovník podpory, použijte FUNCTIONS_EXTENSION_VERSION nastavení a standardní linuxFxVersion hodnotu pro váš jazyk a verzi, například Python|3.12. Platné hodnoty najdete v referenčním linuxFxVersion článku.

Připnutí na konkrétní modul runtime se v současné době nepodporuje pro aplikace funkcí linuxu spuštěné v plánu Consumption.

Následující příklad ukazuje hodnotu linuxFxVersion, která je potřebná k připnutí aplikace funkcí pro Node.js 22 ke konkrétní verzi modulu runtime 4.14.0.3:

DOCKER|mcr.microsoft.com/azure-functions/node:4.14.0.3-node22

V případě potřeby vám může pracovník podpory poskytnout platný identifikátor URI základní image pro vaši aplikaci.

Pomocí následujících příkazů Azure CLI zobrazte a nastavte linuxFxVersion. Aktuálně nemůžete nastavit linuxFxVersion na portálu nebo pomocí Azure PowerShellu:

  • Pokud chcete zobrazit aktuální verzi modulu runtime, použijte příkaz az functionapp config show :

    az functionapp config show --name <function_app> \
    --resource-group <my_resource_group> --query 'linuxFxVersion' -o tsv
    

    V tomto kódu nahraďte <function_app> názvem vaší aplikace funkcí. Také nahraďte <my_resource_group> názvem skupiny prostředků pro vaši aplikaci funkcí. Vrátí se aktuální hodnota linuxFxVersion .

  • Pokud chcete aktualizovat nastavení linuxFxVersion ve funkční aplikaci, použijte příkaz az functionapp config set:

    az functionapp config set --name <FUNCTION_APP> \
    --resource-group <RESOURCE_GROUP> \
    --linux-fx-version <LINUX_FX_VERSION>
    

    Nahraďte <FUNCTION_APP> názvem vaší Function App. Také nahraďte <RESOURCE_GROUP> názvem skupiny prostředků pro vaši aplikaci funkcí. Nakonec nahraďte <LINUX_FX_VERSION> hodnotou konkrétního obrázku poskytnutého pracovníkem podpory.

Tyto příkazy můžete spustit z Azure Cloud Shellutak, že v předchozích příkladech kódu zvolíte Open Cloud Shell. Tento příkaz můžete spustit také místně pomocí Azure CLI po spuštění az login a přihlásit se.

Aplikace funkcí se restartuje po provedení změny konfigurace webu.

Aktualizujte spravovaný obraz Linuxu

Tato sekce se vztahuje pouze na existující aplikace Python 3.11 a Java 8, 11 nebo 17 na plánech Linux Elastic Premium nebo Dedicated (App Service), které používají spravovaný obraz Debian Bullseye. Pokud vaše aplikace nesplňuje všechny tyto podmínky, nemusíte se tímto postupem řídit.

Novější spravovaný obraz poskytuje dočasnou cestu, jak může postižená aplikace zůstat na své aktuální jazykové verzi a zároveň přejít na podporovanou linuxovou distribuci. Tento postup se nevztahuje na Flex Consumption ani na aplikace s vlastními kontejnery. Pro aplikaci na plánu Linux Consumption přejděte na tarif Flex Consumption.

Tato aktualizace vybírá linuxovou distribuci pro stávající jazykovou verzi pomocí tříčlenné hodnoty linuxFxVersion . Nepřipíná hostitele Functions ke konkrétnímu DOCKER|<IMAGE_URI> obrázku.

Vyberte hodnotu „Bookworm“ nebo „Noble“ linuxFxVersion

Nejprve zjistěte, zda můžete aktualizovat jazykovou verzi, nebo je potřeba zachovat současnou jazykovou verzi a vybrat novější linuxovou distribuci.

  1. Zvažte aktualizaci aplikace na novější podporovanou jazykovou verzi. Po jazykové aktualizaci aplikace používá aktuální výchozí spravovaný obraz pro danou jazykovou verzi.

  2. Pokud musí aplikace zůstat na aktuální jazykové verzi, zvolte odpovídající hodnotu novějšího obrázku:

    Jazyková verze Hodnota Debianu Bullseye Novější distribuce Novější hodnota obrazu
    Python 3.11 Python\|3.11\|2.0 Debian Bookworm Python\|3.11\|3.0
    Java 8 Java\|8\|2.0 Ubuntu Noble Java\|8\|4.0
    Java 11 Java\|11\|2.0 Ubuntu Noble Java\|11\|4.0
    Java 17 Java\|17\|2.0 Ubuntu Noble Java\|17\|4.0

    Tyto třísložkové hodnoty výslovně určují spravovaný obraz systému Linux pro tyto obrazy z éry Bullseye. Nevrací je příkaz az functionapp list-runtimes.

Otestujte novější spravovaný obraz Linuxu

Před aktualizací produkční aplikace otestujte svou aplikaci a její závislosti na novějším obrazu.

  1. Vytvořte samostatnou testovací aplikaci nebo vytvořte slot pro nasazení.

  2. Nasazujte stejný kód a konfiguraci, jakou používá vaše produkční aplikace, do testovací aplikace nebo slotu.

  3. Nastavte hodnotu novějšího obrázku podle kroků v Aktualizovat hodnotu obrázku. Když používáte slot, uveďte --slot <SLOT_NAME> v každém příkazu Azure CLI.

  4. Vyvolejte každou funkci a ověřte, že aplikace se úspěšně spustí, spouštěče běží podle očekávání a že nativní nebo operační systémy závislosti se správně načítají.

Aktualizujte hodnotu obrazu

Změna hodnoty obrázku restartuje aplikaci Function. Aktualizovat produkci během okna údržby, nebo použít slot pro nasazení.

  1. Zobrazit aktuální linuxFxVersion hodnotu:

    az functionapp config show --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --query linuxFxVersion --output tsv
    

    Tento příkaz vrací hodnotu uloženou v konfiguraci site. Vrácená hodnota může obsahovat pouze jazykovou a jazykovou verzi, například Python|3.11, místo třídílné hodnoty, která identifikuje distribuci Linuxu. Pokud hodnota neobsahuje verzi obrázku, postupujte podle kroků v sekci Ověřit distribuci Linuxu , abyste potvrdili, že aplikace aktuálně používá Debian Bullseye.

  2. Nastavte linuxFxVersion na novou hodnotu obrazu:

    az functionapp config set --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --linux-fx-version "<LANGUAGE|VERSION|IMAGE_VERSION>"
    

    Pro Python 3.11 na Debian Bookworm použijte Python|3.11|3.0. Pro Java na Ubuntu Noble použijte Java|8|4.0, Java|11|4.0, nebo Java|17|4.0.

  3. Počkej, až se aplikace restartuje.

Ověřte distribuci Linuxu

Ověřte jak nastavenou hodnotu, tak i linuxovou distribuci, která vaše aplikaci spouští.

  1. Potvrďte aktualizovanou linuxFxVersion hodnotu:

    az functionapp config show --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --query linuxFxVersion --output tsv
    

    Protože explicitně nastavíte hodnotu ze tří částí, tento příkaz vrátí přesně tu hodnotu Bookworm nebo Noble, kterou jste vybrali.

  2. Otevřete web Kudu aplikace na adrese https://<APP_NAME>.scm.azurewebsites.net.

  3. Vyberte Prostředí a zkontrolujteKUDU_ENV, nebo otevřete SSH relaci a spusťte:

    cat /etc/os-release
    
  4. Potvrďte, že výstup identifikuje Debian Bookworm pro Python 3.11 nebo Ubuntu Noble pro Java 8, 11 nebo 17.

  5. Spusťte každou funkci a ověřte, že spouštěče a závislosti nadále fungují podle očekávání.

Vrátit zpět aktualizaci spravovaného linuxového obrazu

Pokud aktualizovaný obraz způsobí problém s kompatibilitou, dočasně obnovte předchozí linuxFxVersion hodnotu, zatímco problém opravíte.

Warning

Debian Bullseye již není podporován po skončení své životnosti a nepřijímá bezpečnostní aktualizace. Rollback používejte pouze jako dočasné řešení a co nejdříve se vraťte k podporovanému obrazu.

  1. Z tabulky v Vyber hodnotu Bookworm nebo Noble linuxFxVersionnajdi hodnotu Debian Bullseye pro svou jazykovou verzi.

  2. Nastavte linuxFxVersion na tuto hodnotu Bullseye:

    az functionapp config set --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --linux-fx-version "<BULLSEYE_LINUX_FX_VERSION>"
    
  3. Počkejte, až se aplikace restartuje, a pak opakujte kontrolu v Ověřte distribuci Linuxu.

Další kroky