Azure Functions ランタイム バージョンの概要

現在、Azure Functions では、いくつかのバージョンのランタイム ホストがサポートされています。 次の表に、使用可能なバージョン、サポート レベル、いつ使用する必要があるかの詳細を示します。

バージョン サポート レベル 説明
4.x GA すべての言語の関数に推奨されるランタイム バージョン。サポートされている言語のバージョンを確認してください。
3.x GA すべての言語をサポートします。 サポートされている言語バージョンを確認してください。
2.x GA レガシ バージョン 2.x のアプリではサポートされません。 このバージョンはメンテナンス モードになっており、拡張機能は以降のバージョンでのみ提供されます。
1.x GA .NET Framework を使用する必要があり、Azure portal、Azure Stack Hub ポータル、または Windows コンピューター上のローカルでの開発のみをサポートする C# アプリに限りお勧めします。 このバージョンはメンテナンス モードになっており、拡張機能は以降のバージョンでのみ提供されます。

重要

2022 年 12 月 3 日以降、Azure Functions ランタイムのバージョン 2.x と 3.x で実行される関数アプリはサポートされなくなります。 その前に、関数アプリをテスト、検証し、Functions ランタイムのバージョン 4.x に移行してください。 詳細については、「Azure Functions バージョン 3.x からバージョン 4.x にアプリを移行する」を参照してください。 この期限が過ぎても、関数アプリを作成してデプロイでき、既存のアプリは引き続き実行されます。 ただし、それらのアプリは、バージョン 4.x にアップグレードするまで新機能、セキュリティ パッチ、パフォーマンスの最適化、サポートの対象になりません。

これらのランタイム バージョンのサポートが終了するのは、これらの古いランタイム バージョンで必要な .NET Core 3.1 のサポートが終了するためです。 この要件は、すべての Azure Functions ランタイムの言語に影響します。
.NET Framework が必要な C# 関数アプリのために、Functions バージョン 1.x は引き続きサポートされます。 .NET Framework 4.8 で C# 関数を実行するために、Functions 4.x でプレビュー サポートを現在利用できます。

この記事では、これらのバージョン間のいくつかの相違点、各バージョンを作成する方法、関数が実行されるバージョンの変更方法について詳細に説明します。

サポートのレベル

次の 2 つのレベルのサポートがあります。

  • 一般公開 (GA) - 完全にサポートされ、運用環境用に承認されています。
  • プレビュー - まだサポートされていませんが、今後 GA 状態に達すると想定されています。

言語

関数アプリ内のすべての関数は、同じ言語を共有する必要があります。 アプリを作成するときに、関数アプリで関数の言語を選択しました。 関数アプリの言語は FUNCTIONS_WORKER_RUNTIME 設定に保持され、既存の関数がある場合は変更できません。

次の表は、各ランタイム バージョンでどのプログラミング言語が現在サポートされているかを示しています。

言語 1.x 2.x 3.x 4.x
C# GA (.NET Framework 4.8) GA (.NET Core 2.11) GA (.NET Core 3.1)
GA (.NET 6.0)
GA (.NET 7.0)
GA (.NET Framework 4.8)
JavaScript GA (Node.js 6) GA (Node.js 10、8) GA (Node.js 14、12、10) GA (Node.js 14)
GA (Node.js 16)
プレビュー (Node.js 18)
F# GA (.NET Framework 4.8) GA (.NET Core 2.11) GA (.NET Core 3.1) GA (.NET 6.0)
GA (.NET 7.0)
Java 該当なし GA (Java 8) GA (Java 11、8) GA (Java 11、8)
プレビュー (Java 17)
PowerShell 該当なし 該当なし GA (PowerShell 7.0) GA (PowerShell 7.0、7.2)
Python 該当なし GA (Python 3.7) GA (Python 3.9、3.8、3.7) GA (Python 3.9、3.8、3.7)
TypeScript2 該当なし GA GA GA

1 ランタイム バージョン 2.x を対象とする .NET クラス ライブラリのアプリは、.NET Core 2.x 互換モードで .NET Core 3.1 で実行されます。 詳細については、Functions v2. x に関する考慮事項に関するページを参照してください。
2 JavaScript へのトランスパイリングによってサポートされます。

サポートされている言語バージョンの詳細については、言語固有の開発者ガイドに関する記事をご覧ください。
言語サポートの計画的な変更については、「Azure ロードマップ」を参照してください。

特定のバージョンで実行する

Azure の公開アプリから使用される Functions ランタイムのバージョンは、FUNCTIONS_EXTENSION_VERSION アプリケーションの設定によって決まります。 場合によっては、特定の言語に対して、他の設定が適用される場合があります。

既定では、Azure portal で Azure CLI または Visual Studio ツールによって作成された関数アプリはバージョン 4.x に設定されます。 このバージョンは必要に応じて変更できます。 ランタイムのバージョンを 1.x にダウングレードできるのは、関数アプリを作成してから関数を追加するまでの間のみです。 より新しいバージョンへの移行は、既存の関数が含まれているアプリでも許可されます。

既存の関数アプリを移行する

アプリに既存の関数があるときは、以降のランタイム バージョンに移行する前に予防措置を講じる必要があります。 次の記事では、言語固有の破壊的変更などの、バージョン間の破壊的変更について詳しく説明します。 既存の関数アプリを正常に移行するための段階的な手順も提供されます。

Azure でのアプリのバージョンの変更

次のランタイムのメジャー バージョン値がサポートされています。

ランタイム ターゲット
~4 4.x
~3 3.x
~1 1.x

重要

他のアプリ設定の変更や関数のコード変更が必要になる可能性があるため、このアプリ設定を任意に変更しないでください。 その代わりに、メジャー バージョンのアップグレードを行う準備ができている場合に、Azure portal で関数アプリの [構成][関数のランタイム設定] タブでこの設定を変更する必要があります。 既存の関数アプリについては、移行の手順に従います

特定のマイナー バージョンに固定する

最新のメジャー バージョンで実行されているときに関数アプリで生じることがある問題を解決するには、アプリを特定のマイナー バージョンに一時的に固定する必要があります。 固定により、最新のメジャー バージョンでアプリが正しく実行されるようになります。 マイナー バージョンに固定する方法は、Windows と Linux で異なります。 詳細については、「Azure Functions ランタイム バージョンをターゲットにする方法」を参照してください。

古いマイナー バージョンは、定期的に Functions から削除されます。 特定の古いマイナー バージョンの削除などの、Azure Functions リリースに関する最新のニュースについては、Azure App Service のお知らせを観察してください。

バージョン ~2.0 に固定する

バージョン 2.x (~2) で実行されている .NET 関数アプリは、.Net Core 3 の長期サポート バージョンである .Net Core 3.1 で実行されるように、自動的にアップグレードされます。 .Net Core 3.1 で .NET 関数を実行すると、最新のセキュリティ更新プログラムと製品の機能強化を利用できます。

~2.0 に固定されている関数アプリは、引き続き .Net Core 2.2 で実行され、セキュリティやその他の更新プログラムを受信しなくなります。 詳細については、Functions v2. x に関する考慮事項に関するページを参照してください。

拡張機能の最小バージョン

バインディング拡張機能のバージョンと Functions ランタイムのバージョンの間に、技術的な相関関係はありません。 ただし、バージョン 4.x 以降、Functions ランタイムは、すべてのトリガーおよびバインディング拡張機能の最小バージョンを強制します。

パッケージが最低限必要なバージョンを満たしていないという警告が表示される場合は、その NuGet パッケージを、通常行うように最小バージョンに更新する必要があります。 Functions v4.x で使用される拡張機能の最小バージョン要件については、リンクされた構成ファイルをご覧ください。

C# スクリプトの場合、host.json 内の拡張機能バンドル参照を次のように更新してください。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[2.*, 3.0.0)"
    }
}

拡張機能バンドルのバージョンと Functions ランタイムのバージョンの間に、技術的な相関関係はありません。 ただし、バージョン 4.x 以降、Functions ランタイムは、拡張機能バンドルの最小バージョンを強制します。

拡張機能バンドルのバージョンが最低限必要なバージョンを満たしていないという警告が表示される場合は、host.json 内の既存の拡張機能バンドル参照を次のように更新してください。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[2.*, 3.0.0)"
    }
}

拡張機能バンドルの詳細については、「拡張機能バンドル」を参照してください。

ローカルで開発されたアプリケーションのバージョン

関数アプリを次のように更新し、ターゲット バージョンをローカルで変更できます。

Visual Studio のランタイム バージョン

Visual Studio では、プロジェクトを作成するときにランタイムのバージョンを選択します。 Visual Studio 用の Azure Functions ツールは、ランタイムのメジャー バージョン 3 つをサポートしています。 デバッグ時と公開時には、プロジェクトの設定に基づいて正しいバージョンが使用されます。 バージョン設定は、.csproj ファイルの次のプロパティで定義されています。

<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>

.NET 分離ワーカー プロセス関数を使用している場合は、ターゲット フレームワークとして net6.0net7.0、または net48 も選択できます。 net7.0net48 のサポートは現在プレビュー段階です。

Note

Azure Functions 4.x では、Microsoft.NET.Sdk.Functions 拡張機能を 4.0.0 以上にする必要があります。

VS Code と Azure Functions Core Tools

Azure Functions Core Tools は、コマンドラインの開発に使用されます。また、Visual Studio Code 用の Azure Functions 拡張機能からも使用されます。 バージョン 4.x に対して開発するには、Core Tools のバージョン 4.x をインストールします。 バージョン 3.x の開発には Core Tools のバージョン 3.x が必要です。他のバージョンも同様です。 詳細については、「Azure Functions Core Tools のインストール」を参照してください。

Visual Studio Code の開発の場合は、必要に応じてインストールされているツールのバージョンと一致するように azureFunctions.projectRuntime のユーザー設定を更新します。 この設定で、関数アプリの作成時に使用されるテンプレートと言語も更新されます。 ~3 でアプリを作成するには、azureFunctions.projectRuntime ユーザー設定を ~3 に更新します。

Azure Functions 拡張機能ランタイム設定

バインド

バージョン 2.x から、ランタイムでは、次の利点を提供する新しいバインド拡張モデルが使用されています。

  • サード パーティのバインド拡張のサポート。

  • ランタイムとバインドの分離。 この変更により、バインド拡張を個別にバージョン管理したり、解放したりできます。 たとえば、基になる SDK の新しいバージョンに依存する拡張のバージョンにアップグレードするよう選択できます。

  • より軽量な実行環境。ここでは、使用中のバインドのみがランタイムによって識別され、読み込まれます。

HTTP とタイマーのトリガーを除き、すべてのバインドを関数アプリ プロジェクトに明示的に追加するか、ポータルで登録する必要があります。 詳細については、「バインディング拡張機能を登録する」を参照してください。

各ランタイム バージョンでサポートされるバインドを次の表に示します。

この表は、Azure Functions のメジャー バージョンのランタイムでサポートされているバインディングを示しています。

種類 1.x 2.x 以降1 トリガー 入力 出力
Blob Storage
Azure Cosmos DB
Azure SQL (プレビュー)
Dapr3
Event Grid
Event Hubs
HTTP と Webhook
IoT Hub
Kafka2
Mobile Apps
Notification Hubs
Queue Storage
RabbitMQ2
SendGrid
Service Bus
SignalR
Table Storage
Timer
Twilio

1 バージョン 2.x ランタイム以降では、HTTP と Timer を除くすべてのバインドを登録する必要があります。 「バインディング拡張機能を登録する」を参照してください。

2 トリガーは従量課金プランでサポートされていません。 ランタイム駆動のトリガーが必要です。

3 Kubernetes、IoT Edge、およびその他の自己ホスト型モードでのみサポートされます。

Function App タイムアウト期間

関数アプリ内の関数のタイムアウト期間は、host.json プロジェクト ファイルの functionTimeout プロパティによって定義されます。 このプロパティは、関数の実行に特に適用されます。 トリガーが関数の実行を開始した後、関数はタイムアウト期間内に戻るか応答する必要があります。 詳細については、「Azure Functions のパフォーマンスと信頼性を向上させる」を参照してください。

次の表は、特定のプランの既定値と最大値 (分) を示しています。

プラン 既定値 最大1
従量課金プラン 5 10
Premium プラン 302 無制限
専用プラン 302 無制限

1 関数アプリのタイムアウト設定に関係なく、HTTP トリガー関数で要求に応答するためにかかる最大時間は 230 秒です。 これは、Azure Load Balancer の既定のアイドル タイムアウトによるものです。 より長い処理時間では、Durable Functions async pattern の使用を検討するか、実際の作業を遅らせて、即座に応答を返します
2 Functions Runtime バージョン 1.x のタイムアウトの既定値は "無制限" です。

次の手順

詳細については、次のリソースを参照してください。