Azure Functions で言語スタックのバージョンを更新する
- [アーティクル]
-
-
Azure Functions での特定の言語スタックのサポートは、特定のバージョンに制限されています。 新しいバージョンが利用可能になったら、アプリを更新してそれらの機能を活用することができます。 古いバージョンの場合は Functions でのサポートも、通常、コミュニティのサポート終了スケジュールに合わせて終了することがあります。 詳細については、「言語ランタイム サポート ポリシー」を参照してください。 アプリが引き続きサポートを受けられるようにするには、この記事で説明されている手順に従って、利用可能な最新バージョンに更新する必要があります。
関数アプリを更新する方法は、次の点によって異なります。
- 関数の作成に使用する言語。必ず、記事の上部でお使いのプログラミング言語を選択してください。
- Azure でアプリを実行するオペレーティング システム(Windows または Linux)。
- ホスティング プラン。
更新の準備をする
Azure で関数アプリのスタック構成を更新する前に、次のタスクを完了する必要があります。
1. 関数をローカルで確認する
必ず、新しいターゲット バージョンで関数コードをローカルでテストしてください。
ローカル コンピューターでプロジェクトを更新するには、次の手順に従います。
ターゲット バージョンの .NET SDK がインストールされていることを確認してください。
プレビュー バージョンを対象にしている場合は、プレビュー .NET バージョンの Functions ガイダンスを参照して、バージョンがサポートされていることを確認してください。 .NET プレビューでは、追加の手順が必要になる場合があります。
参照先を、Microsoft.Azure.Functions.Worker と Microsoft.Azure.Functions.Worker.Sdk の最新バージョンに更新してください。
プロジェクトのターゲット フレームワークを新しいバージョンに更新してください。 C# プロジェクトの場合は、.csproj
ファイル内の <TargetFramework>
要素を更新する必要があります。 選択したバージョンに関連する詳細については、ターゲット フレームワークに関する記事を参照してください。
プロジェクトのターゲット フレームワークを変更するには、プロジェクト コードの外部でツールチェーンの一部を変更する必要がある場合もあります。 たとえば、VS Code では、ユーザー設定またはプロジェクトの .vscode/settings.json
ファイルを使用して、azureFunctions.deploySubpath
拡張機能の設定を更新することが必要な場合があります。 ビルド手順または CI/CD パイプラインの一部として、プロジェクト コードの外部に存在する可能性があるフレームワーク バージョンへの依存関係を調べます。
新しい .NET バージョンで必要なプロジェクト コードを更新してください。 詳細については、バージョンのリリース ノートを確認してください。 .NET アップグレード アシスタントを使って、メジャー バージョン間の変更に応じてコードを更新することもできます。
これらの変更を加えた後、プロジェクトをリビルドしてテストし、アプリが期待どおりに実行されたことを確認してください。
2. 最新の Functions ランタイムに移行する
関数アプリが最新バージョンの Functions ランタイム (バージョン 4.x) で実行されていることを確認してください。 ランタイム バージョンは、Azure portal または Azure CLI を使用して確認できます。
こちらの手順を使用して、Functions ランタイムのバージョンを確認します。
Azure portal で関数アプリを見つけて、左側の[設定] で [構成] を選択します。
[関数ランタイムの設定] タブを選択し、[ランタイム バージョン] の値をチェックして、関数アプリがバージョン 4.x の Functions ランタイム (~4
) で実行されていることを確認します。
ランタイム バージョンを確認するには、こちらの az functionapp config appsettings list
コマンドを使用します。
az functionapp config appsettings list --name "<FUNCTION_APP_NAME>" --resource-group "<RESOURCE_GROUP_NAME>"
FUNCTIONS_EXTENSION_VERSION
の設定により、ランタイム バージョンが設定されます。 ~4
の値は、関数アプリが最新メジャー バージョン (4.x) の最新マイナー バージョンで既に実行されていることを意味します。
最初に関数アプリをバージョン 4.x に更新する必要がある場合は、「Azure Functions バージョン 1.x からバージョン 4.x にアプリを移行する」または「Azure Functions バージョン 3.x からバージョン 4.x にアプリを移行する」を参照してください。 FUNCTIONS_EXTENSION_VERSION
の設定を変更するだけではなく、この記事の手順に従う必要があります。
アプリの更新プログラムを公開する
新しいバージョンで正しく実行されるようにアプリを更新した場合は、関数アプリのスタック構成を更新する前に、アプリの更新プログラムを公開してください。
ヒント
更新プロセスを簡略化し、関数のダウンタイムを最小限に抑え、ロールバックの可能性を提供するには、更新されたアプリをステージング スロットに発行する必要があります。 詳細については、「Azure Functions のデプロイ スロット」を参照してください。
更新されたアプリをステージング スロットに発行する場合は、この記事の残りの部分に記載されているスロット固有の更新手順に従ってください。 後で、更新されたステージング スロットを運用環境にスワップします。
スタック構成を更新する
スタック構成を更新する方法は、Azure で Windows と Linux のどちらを実行しているかによって異なります。
ステージング スロットを使用する場合は、更新プログラムのターゲットを正しいスロットにしてください。
Java バージョンを更新するには、次の手順を実行します。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、Java のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
.NET のバージョンを更新するには、次の手順を実行してください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、.NET のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
Node.js バージョンを変更するには、次の手順に従ってください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、Node.js のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。 この変更により、WEBSITE_NODE_DEFAULT_VERSION
アプリケーション設定が更新されます。
PowerShell のバージョンを更新するには、次の手順を実行してください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、.NET のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
Python アプリは Windows ではサポートされていません。 代わりに [Linux] タブを選択してください。
Java バージョンを更新するには、次の手順を実行します。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、Java のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
.NET のバージョンを更新するには、次の手順を実行してください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、.NET のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
Node.js バージョンを変更するには、次の手順に従ってください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、Node.js のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。 この変更により、WEBSITE_NODE_DEFAULT_VERSION
アプリケーション設定が更新されます。
PowerShell のバージョンを更新するには、次の手順を実行してください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、.NET のバージョンを希望するバージョンに更新してください。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
Python アプリは Windows ではサポートされていません。 代わりに [Linux] タブを選択してください。
Azure portal で関数アプリを見つけて、左側の [構成] を選択します。 ステージング スロットを使用する場合は、最初に特定のスロットを選択してください。
[全般設定] タブで、Python のバージョンを希望するバージョンに更新してください。
Note
従量課金プランで実行する場合、Python のバージョンを変更することはできません。
[保存] を選択し、再起動に関する通知が表示されたら [続行] を選択してください。
Python アプリは Windows ではサポートされていません。 代わりに [Linux] タブを選択してください。
az functionapp list-runtimes --os "windows" --query "[?runtime == 'java'].{Version:version}" --output table
az functionapp config set --java-version "<VERSION>" --name "<APP_NAME>" --resource-group "<RESOURCE_GROUP>" --slot "staging"
az functionapp list-runtimes --os "windows" --query "[?runtime == 'dotnet-isolated'].{Version:version}" --output table
az functionapp config set
コマンドを実行して、関数アプリの .NET バージョンを更新してください。
az functionapp config set --net-framework-version "v<VERSION>.0" --name "<APP_NAME>" --resource-group "<RESOURCE_GROUP>" --slot "staging"
最初に、az functionapp list-runtimes
コマンドを使用して、ご利用の言語スタック (Node.js) でサポートされているバージョンの値を表示してください。 次に、az functionapp config set
コマンドを実行して、関数アプリの Node.js バージョンを更新してください。
az functionapp list-runtimes --os "windows" --query "[?runtime == 'node'].{Version:version}" --output table
az functionapp config appsettings set --name "<APP_NAME>" --resource-group "<RESOURCE_GROUP>" --settings "WEBSITE_NODE_DEFAULT_VERSION=~<VERSION>" --slot "staging"
az functionapp list-runtimes --os "windows" --query "[?runtime == 'powershell'].{Version:version}" --output table
az functionapp config set --powershell-version "<VERSION>" --name "<APP_NAME>" --resource-group "<RESOURCE_GROUP>" --slot "staging"
この例では、<APP_NAME>
と <RESOURCE_GROUP>
を実際の関数アプリとリソース グループの名前でそれぞれ置き換えます。 また、<VERSION>
を更新するサポート対象の言語バージョンに置き換えてください。 ステージング スロットを使用していない場合は、--slot
パラメーターを削除します。
Note
従量課金プランで実行する場合、Python のバージョンを変更することはできません。
az functionapp list-runtimes --os linux --query "[?runtime == 'python'].{Version:version, linuxFxVersion:linux_fx_version}" --output table
az functionapp list-runtimes --os linux --query "[?runtime == 'dotnet-isolated'].{Version:version, linuxFxVersion:linux_fx_version}" --output table
az functionapp list-runtimes --os linux --query "[?runtime == 'node'].{Version:version, linuxFxVersion:linux_fx_version}" --output table
az functionapp list-runtimes --os linux --query "[?runtime == 'python'].{Version:version, linuxFxVersion:linux_fx_version}" --output table
az functionapp list-runtimes --os linux --query "[?runtime == 'powershell'].{Version:version, linuxFxVersion:linux_fx_version}" --output table
az functionapp config set --linux-fx-version "<LANGUAGE|VERSION>" --name "<APP_NAME>" --resource-group "<RESOURCE_GROUP>" --slot "staging"
この例では、<APP_NAME>
と <RESOURCE_GROUP>
を実際の関数アプリとリソース グループの名前でそれぞれ置き換えます。 また、<LANGUAGE|VERSION>
を更新プログラムの linuxFxVersion
に置き換えてください。 ステージング スロットを使用していない場合は、--slot
パラメーターを削除します。
関数アプリは、バージョンを更新した後に再起動されます。
スロットをスワップする
ステージング スロットでコード プロジェクトのデプロイと設定の更新を実行している場合、最終的には、ステージング スロットを運用環境に入れ替える必要があります。 詳細については、「スロットをスワップする」を参照してください。
次のステップ