Flex 従量課金は Linux ベースの Azure Functions ホスティング プランで、従量課金の "使用した分だけ支払う" サーバーレス課金モデルに基づいています。 プライベート ネットワーク、インスタンス メモリ サイズの選択、"サーバーレス" モデルに基づく高速または大規模スケールアウト機能を導入することで、柔軟性とカスタマイズ性が向上します。
Flex 従量課金プランを備えるエンド ツー エンドのサンプルは、Flex 従量課金プランのサンプル リポジトリで確認できます。
Benefits
Flex 従量課金プランは、動的スケーリングと実行ベースの課金を含む、サーバーレス従量課金プランの長所に基づいています。 Flex 従量課金では、次の追加機能も利用できます。
- コールド スタート時間の短縮: Always-Ready インスタンスを 有効にして、従量課金プランと比較してコールド スタート時間を短縮できます。
- 仮想ネットワークのサポート: 仮想ネットワーク統合 により、サーバーレス アプリを仮想ネットワークで実行できます。
- 関数ごとのスケーリング: アプリ内の各関数は ワークロードに基づいて個別にスケーリングされるため、より効率的なリソース割り当てが行われる可能性があります。
- コンカレンシー処理の改善: 関数ごとに構成可能なコンカレンシー設定を使用して同時実行の処理を改善しました。
- 柔軟なメモリ構成: Flex Consumption では、複数 のインスタンス サイズ サイズ オプションが提供されるため、特定のワークロード要件に合わせて最適化できます。
次の表は、Flex 従量課金の機能と従量課金ホスティング プランを直接比較するのに役立ちます。
| Feature | 従量課金 | Flex 従量課金 |
|---|---|---|
| ゼロにスケーリングする | ✅ はい | ✅ はい |
| スケーリング動作 | イベント ドリブン | イベント ドリブン (高速) |
| 仮想ネットワーク | ❌ サポート対象外 | ✅ サポートされています |
| 専用コンピューティング (コールド スタートの軽減) | ❌ なし | ✅ 常時使用可能なインスタンス (省略可能) |
| Billing | 実行時間のみ | 実行時間と常時使用可能なインスタンス |
| スケールアウト (最大) | 200 | 1000 |
従量課金プランと Flex 従量課金プラン、その他すべてのプランやホスティングの種類との完全な比較については、関数スケールとホスティング オプションに関するページを参照してください。
仮想ネットワークの統合
Flex 従量課金は、仮想ネットワーク統合のサポートを追加することで、従量課金プランの従来の利点を拡張します。 Flex 従量課金プランでアプリを実行すると、仮想ネットワーク内でセキュリティ保護された他の Azure サービスに接続できます。 その一方、Flex 従量課金プランのスケールとスループットの利点と共に、サーバーレスの課金とスケールを利用できます。 詳細については、仮想ネットワーク統合の有効化に関する記事を参照してください。
インスタンスサイズ
Flex 従量課金プランで関数アプリを作成する場合は、アプリを実行するインスタンスのメモリ サイズを選択できます。 インスタンス メモリ サイズが関数アプリのコストに与える影響については、「課金」を参照してください。
現時点では、Flex Consumption には次のインスタンス サイズ オプションが用意されています。
| インスタンス メモリ (MB) | CPU コア |
|---|---|
| 512 | 0.25 |
| 2048 | 1 |
| 4096 | 2 |
注
表示される CPU コア値は、指定されたメモリ サイズを持つインスタンスの一般的な割り当てです。 ただし、初期インスタンスには、パフォーマンスを向上させるために、少し異なるコア割り当てが付与される場合があります。
アプリで使用するインスタンス メモリ サイズを決定する場合は、次の点を考慮する必要があります。
- 2,048 MB のインスタンス メモリ サイズが既定であり、ほとんどのシナリオで使用されます。 アプリケーションのコンカレンシーまたは処理能力の要件に最も適したシナリオでは、512 MB と 4,096 MB のインスタンス メモリ サイズを使用できます。 詳細については、インスタンス メモリの構成に関するページを参照してください。
- インスタンス メモリ サイズはいつでも変更できます。 詳細については、インスタンス メモリの構成に関するページを参照してください。
- インスタンス リソースは、関数コードと Functions ホストの間で共有されます。
- インスタンス メモリ サイズが大きいほど、同時実行やより集中的な CPU またはメモリのワークロードに関する限り、各インスタンスで処理できる量が多くなります。 特定のスケールの決定は、ワークロード固有で行われます。
- HTTP トリガーの既定のコンカレンシーは、インスタンス メモリ サイズによって異なります。 詳細については、HTTP トリガーのコンカレンシーに関するページを参照してください。
- 使用可能な CPU とネットワーク帯域幅は、特定のインスタンス サイズに比例して提供されます。
関数ごとのスケーリング
コンカレンシーは、Flex 従量課金関数アプリのスケーリング方法を決定する重要な要素です。 さまざまなトリガーの種類でアプリのスケール パフォーマンスを向上させるために、Flex 従量課金プランでは、関数ごとにアプリのスケーリングに関するより明確な方法が提供されます。
この "関数ごとのスケーリング" 動作は、ホスティング プラットフォームの一部であるため、アプリを構成したり、コードを変更したりする必要はありません。 詳細については、イベント ドリブン スケーリングにある関数ごとのスケーリングに関する記事を参照してください。
関数ごとのスケーリングでは、グループ集計に基づいて特定の関数トリガーについて決定が行われます。 この表は、関数スケール グループの定義済みセットを示しています。
| スケール グループ | グループ内のトリガー | 設定値 |
|---|---|---|
| HTTP トリガー |
HTTP トリガー SignalR トリガー |
http |
| Blob Storage のトリガー (Event Grid ベース) |
Blob Storage のトリガー | blob |
| Durable Functions |
オーケストレーション トリガー アクティビティ トリガー エンティティ トリガー |
durable |
アプリ内の他のすべての関数は、独自のインスタンスのセットで個別にスケーリングされ、規約 function:<NAMED_FUNCTION> を使用して参照されます。
常時使用可能なインスタンス
Flex 従量課金には、常に実行され、関数ごとのスケール グループまたは関数にそれぞれ割り当てられるインスタンスを選択できる、"常時使用可能" の機能が含まれています。 常時使用可能は、要求を処理するために常時使用可能な最小数のインスタンスを必要とするシナリオに最適なオプションです。 例としては、アプリケーションのコールド スタートの待機時間を短縮する場合が挙げられます。 既定値は 0 (ゼロ) です。
たとえば、関数の HTTP グループに対して常時使用可能を 2 に設定した場合、プラットフォームは 2 つのインスタンスを常に実行し、アプリ内の HTTP 関数に対してアプリに割り当てます。 これらのインスタンスは関数の実行を処理していますが、コンカレンシー設定に応じて、プラットフォームではオンデマンド インスタンスを使って 2 つのインスタンスを超えてスケーリングされます。
ゾーンの冗長性が有効になっている間は、関数または関数グループごとに 2 つ以上の Always-Ready インスタンスを構成できます。
常時使用可能なインスタンスを構成する方法については、常時使用可能なインスタンス数の設定に関するページを参照してください。
Concurrency
コンカレンシーとは、アプリのインスタンスに対する関数の並列実行の数を指します。 各インスタンスがいつでも処理する必要がある同時実行の最大数を設定できます。 コンカレンシーは、コンカレンシー レベルが低いほど、関数に対するイベント ドリブンの要求を処理するためにより多くのインスタンスが必要になるため、アプリのスケーリング方法に直接影響します。 コンカレンシーは制御および微調整できますが、ほとんどの場合に機能する既定値を提供しています。
HTTP トリガー関数のコンカレンシー制限を設定する方法については、HTTP コンカレンシー制限の設定に関するページを参照してください。 HTTP 以外のトリガー関数のコンカレンシー制限を設定する方法については、「ターゲットベースのスケーリング」を参照してください。
Deployment
Flex 従量課金プランでのデプロイは 1 つのパスに従うため、アプリ設定でデプロイの動作に影響を与える必要はなくなりました。 プロジェクト コードがビルドされ、圧縮されてアプリケーション パッケージが作成された後、Blob Storage コンテナーにデプロイされます。 起動時に、アプリはパッケージを取得し、このパッケージから関数コードを実行します。 既定では、内部ホスト メタデータ (AzureWebJobsStorage) の格納に使用されるのと同じストレージ アカウントも、デプロイ コンテナーとして使用されます。 ただし、代替のストレージ アカウントを使用するか、アプリのデプロイ設定を構成して優先認証方法を選択することもできます。
ダウンタイムなしのデプロイ
注
ローリング 更新プログラムを含むダウンタイムなしのデプロイは、現在パブリック プレビュー段階です。
Flex Consumption では、 サイトの更新戦略としてローリング 更新によるダウンタイムゼロのデプロイが提供されます。これにより、コードのデプロイと構成の変更を、関数の実行を中断することなくインスタンス間で徐々に適用できます。 他のホスティング プランでは、デプロイ スロットを使用して、デプロイ中のダウンタイムを最小限に抑えます。 すべてのホスティング プランのデプロイ オプションについては、「 デプロイの最適化」を参照してください。
Billing
Flex 従量課金プランでアプリを実行するときにコストを決定する 2 つのモードがあります。 各モードは、インスタンスごとに決定されます。
| 課金モード | Description |
|---|---|
| オンデマンド | "オンデマンド" モードで実行する場合、関数コードが使用可能なインスタンスで実行されている時間に対してのみ課金されます。 オンデマンド モードでは、最小インスタンス数は必要ありません。 課金の対象: • 各オンデマンド インスタンスが "アクティブに" 関数を実行している間に、プロビジョニングされたメモリの合計量 (GB 秒) から、1 か月あたりの無料付与の GB 秒を引いた値。 • 実行の合計数から、1 か月あたりの無料付与の実行数を引いた値。 |
| 常時使用可能 | 特定のトリガーの種類 (HTTP/Durable/BLOB) と個々の関数に割り当てられた 1 つ以上のインスタンスを構成できます。これらは、要求を処理するために常に利用できます。 常時使用可能なインスタンスが有効になっている場合は、課金の対象は次のとおりです。 • "ベースライン" (GB 秒) と呼ばれる、常時使用可能なすべてのインスタンスにわたってプロビジョニングされたメモリの合計量。 • 常時使用可能なインスタンスがそれぞれ "アクティブに" 関数を実行しているときにプロビジョニングされたメモリの合計量 (GB 秒)。 • 実行回数の合計。 常時使用可能の課金では、無料の付与はありません。 |
実行価格、常時使用可能のベースライン コスト、オンデマンド実行の無料付与に関する最新情報については、Azure Functions の価格に関するページを参照してください。
どちらの実行モードも課金対象の最小実行期間は 1,000 ミリ秒です。 その後、課金対象のアクティビティ期間は、最も近い 100 ミリ秒に切り上げられます。 Flex 従量課金プランの課金メーターの詳細については、監視リファレンスに関するページを参照してください。
例を含め、Flex 従量課金プランで実行した場合のコストの計算方法の詳細については、「 従量課金ベースのコスト 」および「 コスト関連データの表示」を参照してください。
サポートされる言語スタック バージョン
次の表は、Flex 従量課金アプリで現在サポートされている言語スタックのバージョンを示しています。
| 言語スタック | 必要なバージョン |
|---|---|
| C# (分離プロセス モード)1 | .NET 82、.NET 93 |
| Java | Java 11、Java 17、Java 21 |
| Node.js | Node.js 20、Node.js 22 |
| PowerShell | PowerShell 7.4 |
| Python | Python 3.10、Python 3.11、Python 3.12 |
- C# インプロセス モード はサポートされていません。 代わりに、分離ワーカー モデルで実行する .NET コード プロジェクトを移行する必要があります。
- バージョン
1.20.0以降の Microsoft.Azure.Functions.Worker とバージョン1.16.2以降の Microsoft.Azure.Functions.Worker.Sdk が必要です。 -
Microsoft.Azure.Functions.Worker と Microsoft.Azure.Functions.Worker.Sdk の両方のバージョン
2.0.0以降が必要です。
リージョン サブスクリプションのメモリ クォータ
Flex 従量課金プランには、特定のリージョンとサブスクリプションで同時に使用できるすべての Flex Consumption アプリのコンピューティング量を制限するメモリベースのクォータがあります。 リージョン内のサブスクリプション全体に対して、GB または CPU コア単位で測定されたメモリのバケットがあるとします。 そのリージョン内のすべての Flex Consumption アプリがこのバケットを共有します。 Flex Consumption アプリがクォータで許可されている数を超えて使用しようとすると、一部の実行が遅延したり、スケーリングが制限されたりする可能性がありますが、それでもアプリの作成やデプロイはブロックされることはありません。
現在、特定のサブスクリプション内の各リージョンには、Flex Consumption プランで実行されているすべてのアプリ インスタンスに対して、 512,000 MB または 250 コアの小さい方の既定のクォータがあります。 これらのクォータは、特定のサブスクリプションとリージョンで、クォータ制限の下に留まる限り、インスタンスのメモリ サイズと数の任意の組み合わせを持つことができることを意味します。 たとえば、これらの各シナリオではクォータに達し、リージョン内のアプリはスケーリングを停止します。
- 1 つの 512 MB のアプリが 250 インスタンスにスケーリングされ、2 つ目の 512 MB アプリが 750 インスタンスにスケーリングされています。
- 1,000 インスタンスにスケーリングされた 512 MB のアプリが 1 つ用意されています。
- 1 つの 2,048 MB のアプリを 100 にスケーリングし、2 つ目の 2,048 MB のアプリを 150 インスタンスにスケーリングしました
- 2,048 MB のアプリが 1 つ存在し、250 インスタンスにスケールアウトされました
- 125 インスタンスにスケールアウトされた 1 つの 4,096 MB アプリがある
- 1 つの 4,096 MB のアプリが 100 にスケーリングされ、1 つの 2,048 MB アプリが 50 インスタンスにスケーリングされている
0 にスケーリングされている Flex 従量課金アプリや、スケールインおよび削除するようマークされているインスタンスは、クォータの計算対象外です。 このクォータを増やすと、要件に応じて Flex 従量課金アプリをさらにスケーリングすることができます。 アプリでより大きなクォータが必要な場合は、サポート チケットを作成します。
非推奨のプロパティと設定
Flex 従量課金プランでは、標準のアプリケーション設定とサイト構成プロパティの多くは非推奨または移動されており、関数アプリ リソースの作成を自動化するときに使用しないでください。 詳細については、Flex 従量課金プランの非推奨に関するページを参照してください。
Considerations
Flex 従量課金プランを使用する場合は、次の考慮事項に注意してください。
- プランごとのアプリ: Flex 従量課金プランごとに許可されるアプリは 1 つだけです。
-
ホスト: アプリの初期化は 30 秒でタイムアウトします。 関数アプリの起動に 30 秒より長くかかる場合、gRPC 関連の
System.TimeoutExceptionエントリがログ記録される場合があります。 現在、このタイムアウトを構成することはできません。詳細については、 このホスト作業項目を参照してください。 - Durable Functions: 現在、Flex 従量課金プランでホストされている Durable Functions でサポートされているストレージ プロバイダーは Azure Storage だけです。 Flex 従量課金プランで Durable Functions をホストする場合は、推奨事項をご覧ください。
-
仮想ネットワークの統合: こちらの手順に従って、
Microsoft.AppAzure リソース プロバイダーがサブスクリプションで有効になっていることを確認します。 Flex 従量課金アプリで必要なサブネットの委任はMicrosoft.App/environmentsです。 -
トリガー: Flex 従量課金プランではすべてのトリガーが完全にサポートされていますが、Blob Storage トリガーは Event Grid ソースのみをサポートします。 C# 以外の関数アプリでは、拡張機能バンドルのバージョン
[4.0.0, 5.0.0)またはそれ以降のバージョンを使用する必要があります。 - リージョン: 現在、すべてのリージョンがサポートされているわけではありません。 詳細については、現在サポートされているリージョンの表示に関するページを参照してください。
- デプロイ: デプロイ スロットは現在サポートされていません。
-
スケール: 現在、最小の最大スケールは
40です。 現在サポートされている最大値は、1000です。 - マネージド依存関係: PowerShell のマネージド依存関係は、Flex 従量課金ではサポートされていません。 代わりに、アプリ コンテンツにモジュールをアップロードする必要があります。
- 証明書: WEBSITE_LOAD_CERTIFICATES アプリ設定、マネージド証明書、App Service 証明書、および endToEndEncryptionEnabled などのプラットフォーム証明書ベースの機能を使用した証明書の読み込みは、現在サポートされていません。
-
タイムゾーン: Flex 従量課金プランで実行している場合、
WEBSITE_TIME_ZONEおよびTZアプリの設定は現在サポートされていません。