Function App は、Azure Functions ランタイムの特定のバージョンで実行されます。 既定では、Functions ランタイムの最新の 4.x バージョンで関数アプリを作成します。 関数アプリは、サポートされているメジャー バージョンで実行される場合にのみサポートされます。 この記事では、必要に応じて、特定のバージョンの Functions ランタイムをターゲットにするか、 ピン留め するように Azure で関数アプリを構成する方法について説明します。
考慮事項
特定のランタイム バージョンを対象とする場合は、次の考慮事項に注意してください。
-
Flex 従量課金プランは、ランタイムのバージョン 4.x でのみ実行されます。 Flex 従量課金プランでは
FUNCTIONS_EXTENSION_VERSIONアプリ設定がサポートされていないため、このプランで実行中にアプリで特定のランタイム バージョンを対象にすることはできません。 - 特定のバージョンをターゲットにする方法は、Windows と Linux のどちらを実行しているかによって異なります。
- この記事は、Windows または Linux に固有のものです。 記事の上部でお使いのオペレーティング システムをお選びください。
- 可能な場合は、常にサポートされている最新のランタイム バージョンでアプリを実行します。 最新バージョンの問題が原因でアプリを特定のバージョンにピン留めするように指示された場合にのみ、アプリをピン留めします。 常に、関数が正しく動作することを確認でき次第、最新のランタイム バージョンに移行してください。
- ローカル開発中は、インストールされている Azure Functions Core Tools のバージョンが、Azure の関数アプリで使用されるメジャー ランタイム バージョンと一致している必要があります。 詳細については、「Core Tools バージョン」を参照してください。
ランタイム バージョンを更新する
可能であれば、サポートされている最新バージョンの Azure Functions ランタイムで関数アプリを常に実行します。 関数アプリが現在古いバージョンのランタイムで実行されている場合は、アプリをバージョン 4.x に移行します。
アプリに既存の関数があるときは、以降のメジャー ランタイム バージョンに移行する前に予防措置を講じる必要があります。 次の記事では、言語固有の破壊的変更などの、メジャー バージョン間の破壊的変更について詳しく説明します。 既存の関数アプリを正常に移行するための段階的な手順も提供されます。
現在のランタイム バージョンを確認するには、「現在のランタイム バージョンの表示」を参照してください。
現在のランタイム バージョンの表示
関数アプリの現在のランタイム バージョンは、次のいずれかの方法で表示できます。
関数アプリで現在使用されているランタイム バージョンを表示して更新するには、次の手順に従います。
Azure portal で、関数アプリに移動します。
[設定] を展開してから、[構成] を選択します。
[関数のランタイム設定] タブで、[ランタイム バージョン] を確認してメモします。 この例では、バージョンは [
~4] に設定されています。
特定のバージョンにピン留めする
Azure Functions では、FUNCTIONS_EXTENSION_VERSION アプリ設定を使用して、特定の関数アプリで使用されるランタイム バージョンをターゲットにすることができます。 メジャー バージョン (~4) のみを指定すると、ランタイムの新しいマイナー バージョンが使用可能になると、関数アプリによって自動的に更新されます。 マイナー バージョンの更新は自動的に行われます。新しいマイナー バージョンでは、関数を中断する変更が発生する可能性は高くありません。
Linux アプリは、linuxFxVersion サイト設定と FUNCTIONS_EXTENSION_VERSION を使用して、関数を実行するための正しい Linux ベース イメージを決定します。 Linux 上で新しい関数アプリを作成すると、ランタイムは言語スタックのランタイム バージョンに基づいて適切なベース イメージを自動的に選択します。
特定のランタイム バージョンにピン留めすると、関数アプリが再起動されます。
4.0.12345で特定のマイナー バージョン (FUNCTIONS_EXTENSION_VERSION など) を指定する場合は、バージョンの自動更新に戻すよう明示的に選択するまで、関数アプリをその特定のバージョンのランタイムにピン留めします。 メジャー バージョンをターゲットにできないという関数アプリの問題を解決するために、特定のマイナー バージョンに一時的にのみピン留めしておきます。 古いマイナー バージョンは、運用環境から定期的に削除されます。 関数アプリが後で削除されたマイナー バージョンにピン留めされると、関数アプリは、 FUNCTIONS_EXTENSION_VERSIONで設定されたバージョンではなく、最も近い既存のバージョンで実行されます。
App Service のお知らせでは、 マイナー バージョンの削除が発表されます。
注
Visual Studio から、ランタイムの特定のマイナー バージョンにピン留めされているアプリに発行しようとすると、最新バージョンに更新するか、発行をキャンセルするかを確認するダイアログが表示されます。 特定のマイナー バージョンを使用する必要がある場合にこのチェックを回避するには、<DisableFunctionExtensionVersionUpdate>true</DisableFunctionExtensionVersionUpdate> ファイルに .csproj プロパティを追加します。
次のいずれかの方法を使用して、ランタイムの特定のバージョンに一時的にアプリをピン留めします。
関数アプリで現在使用されているランタイム バージョンを表示して更新するには、次の手順に従います。
Azure portal で、関数アプリに移動します。
[設定] を展開してから、[構成] を選択します。
[関数のランタイム設定] タブで、[ランタイム バージョン] を確認してメモします。 この例では、バージョンは [
~4] に設定されています。
アプリを特定のマイナー バージョンにピン留めするには、左側のペイン内で [設定] を展開してから、[環境変数] を選択します。
[アプリ設定] タブから、[FUNCTIONS_EXTENSION_VERSION] を選択し、[値] を必要なマイナー バージョンに変更して [適用] を選択します。
[適用] を選択してから [確認] を選択し、変更を適用してアプリを再起動します。
アプリケーション設定に変更が加えられると、Function App が再起動します。
Linux 上の特定のランタイム バージョンに関数アプリをピン留めするには、 linuxFxVersion サイト設定 でバージョン固有の基本イメージ URL を DOCKER|<PINNED_VERSION_IMAGE_URI>形式で設定します。
重要
Linux 上でピン留めされた関数アプリは、通常のセキュリティとホスト機能の更新プログラムを受け取りません。 サポート プロフェッショナルが推奨しない限り、FUNCTIONS_EXTENSION_VERSION などのお使いの言語やバージョンの linuxFxVersion 設定と標準 Python|3.12 値を使用してください。 有効な値については、linuxFxVersion リファレンス記事を参照してください。
特定のランタイムへのピン留めは、従量課金プランで実行されている Linux 関数アプリでは現在サポートされていません。
次の例は、Node.js 22 関数アプリを特定のランタイム バージョンの 4.14.0.3 にピン留めするために必要な linuxFxVersion 値を示しています。
DOCKER|mcr.microsoft.com/azure-functions/node:4.14.0.3-node22
必要に応じて、サポート プロフェッショナルがアプリケーションの有効な基本イメージ URI を提供できます。
次の Azure CLI コマンドを使用して、linuxFxVersion を表示および設定します。 現在、ポータルで、または Azure PowerShell を使用して linuxFxVersion は設定できません。
現在のランタイム バージョンを表示するには、az functionapp config show コマンドを使用します。
az functionapp config show --name <function_app> \ --resource-group <my_resource_group> --query 'linuxFxVersion' -o tsvこのコードでは、
<function_app>をお使いの関数アプリの名前に置き換えます。 また、<my_resource_group>を、お使いの関数アプリのリソース グループの名前に置き換えます。linuxFxVersionの現在の値が返されます。関数アプリの
linuxFxVersionの設定を更新するには、az functionapp config set コマンドを使用します。az functionapp config set --name <FUNCTION_APP> \ --resource-group <RESOURCE_GROUP> \ --linux-fx-version <LINUX_FX_VERSION><FUNCTION_APP>をお使いの関数アプリの名前に置き換えます。 また、<RESOURCE_GROUP>を、お使いの関数アプリのリソース グループの名前に置き換えます。 最後に、<LINUX_FX_VERSION>をサポート プロフェッショナルが提供する特定の画像の値に置き換えます。
これらのコマンドは、前のコード例で [Cloud Shell を開く] を選択すると、Azure Cloud Shell から実行できます。 また、Azure CLI をローカルに使用して、az loginを実行してサインインした後に、このコマンドを実行することもできます。
サイト構成に変更が加えられると、関数アプリが再起動されます。
マネージドLinuxイメージの更新
このセクションは、Debian Bullseye管理イメージを使用する既存のPython 3.11およびJava 8、11、または17のLinux Elasticプレミアムまたは専用(App Service)プランのアプリにのみ適用されます。 もしあなたの応募がこれらすべての条件を満たさない場合は、この手順に従う必要はありません。
新しい管理イメージは、影響を受けたアプリが現在の言語バージョンに留まりつつ、サポートされているLinuxディストリビューションに移行するための一時的な経路を提供します。 この手順はFlex Consumptionやカスタムコンテナアプリには適用されません。 Linux Consumption プラン上のアプリは、Flex Consumption プランに移行してください。
このアップデートでは、既存の言語バージョンに対して3つの部分からなる linuxFxVersion 値を用いて Linux ディストリビューションを選択します。 Functions ホストは特定の DOCKER|<IMAGE_URI> イメージに固定されません。
ブックワームまたはノーブル linuxFxVersion の値を選択してください
まず、言語バージョンを更新できるか、現在の言語バージョンを保持する必要があるかを確認し、新しいLinuxディストリビューションを選択します。
アプリ を新しい対応言語バージョンにアップデートすることも検討してください。 言語アップデート後は、その言語バージョンの現在のデフォルト管理画像を使用します。
アプリが現在の言語バージョンに留まる必要がある場合は、対応する新しい画像値を選択してください:
言語バージョン Debian Bullseye の値 より新しいディストリビューション 新しい画像値 Python 3.11 Python\|3.11\|2.0デビアン・ブックワーム Python\|3.11\|3.0Java 8 Java\|8\|2.0Ubuntu Noble Java\|8\|4.0Java 11 Java\|11\|2.0Ubuntu Noble Java\|11\|4.0Java 17 Java\|17\|2.0Ubuntu Noble Java\|17\|4.0これらの3つの部分の値は、Bullseye時代のイメージに対して管理されるLinuxイメージを明示的に選択します。
az functionapp list-runtimesコマンドから返送されることはありません。
新しい管理されたLinuxイメージをテストしてください
本番アプリを更新する前に、より新しいイメージでアプリとその依存関係をテストしてください。
別のテストアプリを作成するか、 デプロイスロットを作成してください。
本番環境のアプリと同じコードと設定をテストアプリやスロットにデプロイしてください。
「 画像値の更新」の手順に従って新しい画像の値を設定します。 スロットを使うときは、各Azure CLIコマンドに
--slot <SLOT_NAME>を含めてください。各関数を呼び出し、アプリが正常に起動し、トリガーが正常に動作し、ネイティブまたはオペレーティングシステムの依存関係が正しく読み込まれているかを確認します。
画像値を更新してください
画像値を変更すると関数アプリが再起動します。 メンテナンスウィンドウ中に本番環境を更新するか、デプロイスロットを使いましょう。
現在の
linuxFxVersion値を見る:az functionapp config show --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --query linuxFxVersion --output tsvこのコマンドはサイト設定に保存された値を返します。 返される値は、Linuxディストリビューションを識別する3つの部分の値ではなく、言語や
Python|3.11のような言語バージョンのみを含むことがあります。 もし値にイメージバージョンが含まれていなければ、「 Linuxディストリビューションの検証 」の手順に従って、アプリが現在Debian Bullseyeを使用しているかを確認してください。linuxFxVersion新しい画像値に設定してください:az functionapp config set --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --linux-fx-version "<LANGUAGE|VERSION|IMAGE_VERSION>"Debian BookwormのPython 3.11なら
Python|3.11|3.0を使いましょう。 Ubuntu NobleでJavaするには、Java|8|4.0、Java|11|4.0、またはJava|17|4.0を使います。アプリが再起動するのを待ちます。
Linuxディストリビューションの検証
設定値とアプリを動かすLinuxディストリビューションの両方を確認してください。
更新された
linuxFxVersion値を確認してください:az functionapp config show --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --query linuxFxVersion --output tsv明示的に3つの部分の値を設定しているため、このコマンドは選択したBookwormまたはNobleの正確な値を返します。
アプリのKuduサイトを
https://<APP_NAME>.scm.azurewebsites.netから開いてください。環境を選択して
KUDU_ENVをレビューするか、SSHセッションを開いて実行します:cat /etc/os-release出力がPython 3.11用のDebian Bookwormか、Java 8、11、17向けのUbuntu Nobleを識別しているか確認してください。
各関数を呼び出し、トリガーや依存関係が期待通りに動作し続けるか確認してください。
マネージドLinuxイメージアップデートをロールバックしてください
更新されたイメージが互換性の問題を引き起こした場合は、問題を解決する間に一時的に前の linuxFxVersion 値を復元してください。
Warning
Debian Bullseyeは終了後のサポートがなく、セキュリティアップデートも受け取れません。 ロールバックは一時的な対策としてのみ使い、できるだけ早くサポートされている画像に戻してください。
Bookworm または Noble
linuxFxVersion値を選択の表から、お使いの言語バージョンの Debian Bullseye の値を確認してください。linuxFxVersionをそのBullseyeの値に設定してください:az functionapp config set --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --linux-fx-version "<BULLSEYE_LINUX_FX_VERSION>"アプリが再起動するのを待ってから 、「Linuxディストリビューションの検証」で同じチェックを繰り返します。