Azure Functions Flex Consumption plan hostingとは?変更点と移行・設定の確認ポイント

Azure Functionsで新しくサーバーレス構成を選ぶなら、まず確認すべきなのは「Azure Functions Flex Consumption plan hosting」です。Flex Consumptionは、従来の従量課金プランのようにスケールゼロと実行ベース課金を使いながら、仮想ネットワーク統合、関数ごとのスケーリング、インスタンスメモリ選択、Always-readyインスタンス、Azure Filesマウントなどを追加したLinuxベースのホスティングプランです。Microsoftは、新しいサーバーレスのAzure FunctionsではFlex Consumption planを推奨しています。(Microsoft Learn)

ただし、単に「従量課金プランの上位版」と考えると移行でつまずきます。Windows非対応、C# in-process非対応、デプロイスロット非対応、1プラン1アプリ、従来の一部アプリ設定の非推奨、リージョン別クォータなど、設計・IaC・CI/CDに影響する変更があるためです。この記事では、2026年5月時点の公式情報を基に、管理者と開発者が確認すべき変更点、影響範囲、移行・展開時の注意点を実務目線で整理します。

目次

Azure Functions Flex Consumption plan hostingの要点

Azure Functions Flex Consumption plan hostingは、Azure FunctionsをLinux環境でサーバーレス実行するためのホスティングプランです。従来のConsumption planと同じく、アイドル時はスケールゼロにでき、必要に応じてイベント駆動でスケールします。一方で、従来のConsumption planでは難しかったVNet統合やコールドスタート対策、メモリサイズの選択、より大きなスケールアウトに対応している点が大きな違いです。(Microsoft Learn)

まず押さえるべき結論は次の3つです。

  • 新規のサーバーレスAzure Functionsでは、原則としてFlex Consumption planを第一候補にする
  • 既存のLinux Consumption planアプリは、廃止時期を見据えてFlex Consumptionへの移行計画を立てる
  • 移行ではコードだけでなく、ランタイム、ネットワーク、デプロイ方式、IaC設定、クォータ、課金を確認する

特にLinux Consumption planは、2028年9月30日にホスティングオプションが廃止予定です。また、LinuxのConsumption planでv3ランタイムを使っている関数アプリは、2026年9月30日以降に停止するため、早めにv4ランタイムやFlex Consumptionへの対応を確認する必要があります。(Microsoft Learn)

従来のConsumption planと何が変わるのか

Flex Consumption planは、従来のConsumption planと同じ「使った分だけ支払う」サーバーレスの考え方を維持しながら、運用上の制御範囲を広げたプランです。主な違いは次のとおりです。(Microsoft Learn)

比較項目Flex Consumption plan従来のConsumption plan
OSLinuxのみWindows対応。Linuxはレガシ扱い
スケールゼロ対応対応
最大スケールアウト最大1,000インスタンスWindowsは最大200、Linuxは最大100の扱い
VNet統合対応Consumptionでは非対応
コールドスタート対策Always-readyインスタンスを設定可能専用のAlways-readyなし
スケーリング関数ごとのスケーリングに対応アプリ単位のスケールが中心
メモリサイズ512MB、2,048MB、4,096MBから選択選択制ではない
Azure Filesマウント対応非対応
デプロイスロット非対応一部プランで利用可だがConsumptionでは制約あり
既存アプリのインプレース移行非対応該当なし

開発者にとっての大きなメリットは、HTTP関数、Blobトリガー、Durable Functionsなどの負荷特性に合わせてスケールや同時実行を調整しやすくなることです。管理者にとっては、VNet統合によりプライベートなAzureリソースへ接続しやすくなる一方、サブネット設計やリージョンクォータの確認が必須になります。

影響を受ける対象者

Flex Consumption planの影響は、新規開発だけに限られません。特に次の環境では、設定の棚卸しが必要です。

対象影響まず確認すること
新規でAzure Functionsを作るチーム推奨プランがFlex Consumption寄りになるWindows依存やコンテナ要件がないか
Linux Consumption plan利用中のチーム将来的な廃止に備えた移行が必要ランタイム、リージョン、トリガー、デプロイ方法
Windows Consumption plan利用中のチーム現時点では直接の廃止対象ではないが、Flex移行時はLinux化が必要Windows固有機能やPowerShellモジュール依存
IaCでFunction Appを作成している管理者functionAppConfig中心の設定に見直しが必要非推奨アプリ設定やsiteConfigの使用有無
CI/CDパイプライン管理者パッケージ配置、ストレージ認証、スロット非対応への対応が必要ZIPデプロイ、Blob配置、RollingUpdateの要否
ネットワーク管理者VNet統合時にサブネット委任やIP設計が必要Microsoft.App/environments委任、サブネットサイズ

既存のConsumption planからFlex Consumptionへ移行する場合、既存アプリをそのままプラン変更するインプレース移行はできません。新しいFlex Consumption planの関数アプリを作成し、コードを再デプロイしてから切り替える流れになります。(Microsoft Learn)

管理者が確認すべき設定ポイント

リージョンとクォータ

Flex Consumption planは多くのAzureリージョンで利用できますが、すべてのリージョンに対応しているわけではありません。アプリ作成前に、対象リージョンがFlex Consumptionに対応しているかを確認します。公式ドキュメントでは、Azure CLIで対応リージョンを確認する方法が案内されています。(Microsoft Learn)

az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table

もう一つ重要なのが、リージョン別のサブスクリプションクォータです。Flex Consumptionでは、同じサブスクリプション・同じリージョン内のFlex Consumptionアプリがコンピューティングクォータを共有します。既定では250コア相当が目安で、Always-readyインスタンスもクォータにカウントされます。スケールゼロ中のアプリや削除予定のインスタンスはカウントされません。(Microsoft Learn)

インスタンスメモリコア目安250コアで到達するインスタンス数の目安
512MB0.25コア1,000インスタンス
2,048MB1コア250インスタンス
4,096MB2コア125インスタンス

大量アクセスを受けるHTTP APIや、複数のFlex Consumptionアプリを同一リージョンに集約する構成では、「最大1,000インスタンスまでスケールできる」だけで判断しないことが重要です。サブスクリプション単位の合計クォータに達すると、実行やデプロイの遅延、スケーリングの抑制が起きる可能性があります。

VNet統合とサブネット設計

Flex Consumption planの大きな変更点は、サーバーレスのままVNet統合を使えることです。Key Vault、Storage、Service Bus、Event Hubsなどをプライベートネットワーク経由で利用したい構成では有力な選択肢になります。(Microsoft Learn)

ただし、VNet統合には次の条件があります。

確認項目内容
リソースプロバイダーMicrosoft.App の登録が必要
サブネット委任Microsoft.App/environments が必要
リージョン関数アプリとVNetは同一リージョンが必要
サブネット名アンダースコア _ を含む名前は避ける
共有制限Container Apps環境と同じサブネットは共有不可
サブネット用途Private Endpoint、Service Endpoint、他サービス委任済みのサブネットは避ける

サブネットサイズは、単一アプリなら/27、複数アプリや高スケール用途では/26が目安として示されています。特に複数のFunction Appが同じサブネットを共有し、同時に大量のアウトバウンド通信を行う場合、IP不足よりもネットワークスループットや依存サービスへの接続遅延がボトルネックになる可能性があります。(Microsoft Learn)

実務では、サブネットを小さく作りすぎないことが重要です。検証環境では問題が出なくても、本番負荷で外部API、Storage、DB、メッセージングサービスへの接続が増えると、タイムアウトやレイテンシ増加として現れます。Application Insightsで依存関係の応答時間を監視し、本番相当の負荷試験を行ってからサブネット設計を確定しましょう。

インスタンスメモリと同時実行

Flex Consumptionでは、インスタンスメモリを512MB、2,048MB、4,096MBから選択できます。公式ドキュメントでは、ほとんどのシナリオで2,048MBを既定として使い、処理内容に応じて512MBや4,096MBを選ぶ考え方が示されています。(Microsoft Learn)

選び方向いているケース注意点
512MB軽量なHTTP API、短時間のイベント処理同時実行やCPU負荷が高いと詰まりやすい
2,048MB一般的な業務API、キュー処理、標準的なバッチまず試す基準にしやすい
4,096MBCPU・メモリを使う処理、重い変換処理、並列実行が多い処理インスタンスあたりのコストとクォータ消費が増える

HTTPトリガーの同時実行数は、インスタンスメモリサイズに応じた既定値があります。必要に応じて、az functionapp scale config setでHTTPトリガーの同時実行数を明示的に設定できます。(Microsoft Learn)

az functionapp scale config set \
  --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> \
  --trigger-type http \
  --trigger-settings perInstanceConcurrency=10

同時実行数を上げると、1インスタンスでより多くのリクエストを処理できます。一方で、処理がCPU集約型、メモリ集約型、外部API待ちの多い設計では、むやみに上げるとレスポンス遅延やタイムアウトが増えます。まずはApplication Insightsで実行時間、CPU負荷、依存関係の遅延、失敗率を確認しながら調整しましょう。

Always-readyインスタンスのコスト

Always-readyインスタンスは、常に待機しているインスタンスを確保し、コールドスタートを減らすための機能です。HTTP APIやユーザー操作に直結する関数では有効ですが、課金とクォータの両方に影響します。(Microsoft Learn)

たとえば、HTTPトリガーグループにAlways-readyを10個設定する場合は次のように指定します。

az functionapp scale config always-ready set \
  --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> \
  --settings http=10

注意したいのは、Always-readyにはオンデマンド実行のような無料枠が適用されない点です。ベースラインとして確保されたメモリ量、実行中のメモリ量、実行回数が課金対象になります。ユーザー向けAPIの初回応答を安定させる目的なら有効ですが、深夜や休日にほとんど呼ばれない処理へ安易に設定すると、コストだけが増える可能性があります。(Microsoft Learn)

開発者が確認すべきランタイムとコード上の注意点

Flex ConsumptionはLinuxベースのプランです。そのため、Windows固有のパス、OS依存のライブラリ、Windows専用PowerShellモジュール、フル.NET Framework依存がある場合は、そのまま移行できない可能性があります。特にC#では、in-processモデルがサポートされず、isolated worker modelへの移行が必要です。(Microsoft Learn)

2026年5月時点で確認すべき主なスタックは次のとおりです。

スタックFlex Consumptionでの確認ポイント
C#isolated worker modelが必要。.NET 8、.NET 9、.NET 10など対応バージョンを確認
JavaJava 8、11、17、21、25など、対象リージョンでの対応を確認
Node.jsNode.js 20、22などの対応を確認
PythonPython 3.10、3.11、3.12、3.13などの対応を確認
PowerShellPowerShell 7.4を確認。マネージド依存関係は非対応
Custom handlers対応可否とバージョンを確認

対応ランタイムはリージョンや時期によって変わる可能性があるため、移行前にCLIで確認するのが安全です。(Microsoft Learn)

az functionapp list-flexconsumption-runtimes \
  --location <REGION> \
  --runtime <LANGUAGE_STACK> \
  --query '[].{version:version}' -o tsv

Blob Storageトリガーにも注意が必要です。Flex Consumption planではBlob StorageトリガーはEvent Gridソースのみをサポートします。また、C#以外の関数アプリでは、Extension Bundleのバージョン要件も確認する必要があります。(Microsoft Learn)

デプロイ方式の変更とCI/CDの注意点

Flex Consumption planのデプロイは、プロジェクトをビルドしてZIPなどのアプリケーションパッケージにし、Blob Storageコンテナーへ配置し、関数アプリが起動時にそのパッケージからコードを実行する方式です。既定では、AzureWebJobsStorageと同じストレージアカウントがデプロイコンテナーとして使われますが、別のストレージアカウントや認証方式も構成できます。(Microsoft Learn)

CI/CDで特に確認すべき点は次のとおりです。

項目確認ポイント
デプロイストレージアプリごとに専用コンテナーを用意する
認証方式可能であればマネージドIDを使う
WEBSITE_RUN_FROM_PACKAGEFlex Consumptionでは使わない
デプロイスロット現在サポートされない
診断Azure Portalの「Flex Consumption Deployment」診断ツールを活用する

複数アプリで同じデプロイコンテナーを共有すると、パッケージが上書きされる可能性があります。環境ごと、アプリごとにコンテナーを分ける設計にしておくと、障害時の切り分けもしやすくなります。(Microsoft Learn)

Rolling Updateは便利だが本番適用は慎重に

Flex Consumptionでは、サイト更新戦略としてRecreateとRollingUpdateを選べます。既定はRecreateで、コードや設定の変更時に実行中インスタンスを再作成します。RollingUpdateは、インスタンスをバッチ単位で入れ替えることでゼロダウンタイムに近いデプロイを狙う方式ですが、公式ドキュメントではパブリックプレビューであり、本番アプリには推奨されていない点に注意が必要です。(Microsoft Learn)

更新戦略向いているケース注意点
Recreate短時間で確実に切り替えたい。短い停止を許容できる実行中の処理が中断される可能性がある
RollingUpdateダウンタイムを避けたい。実行中処理を完了させたいプレビュー機能。後方互換性が必要。完了監視に制約がある

RollingUpdateは、変更前後のコードが同時に動く時間帯があります。そのため、DBスキーマ変更、キューのメッセージ形式変更、Durable Functionsのオーケストレーション変更などでは、古いバージョンと新しいバージョンが同時に動いても破綻しない設計が必要です。破壊的変更を含む場合は、Recreateで短時間に切り替えるか、別のFlex Consumptionアプリを作ってトラフィック制御する方法を検討したほうが安全です。(Microsoft Learn)

IaCとアプリ設定で見落としやすい非推奨項目

Flex Consumption planでは、多くの従来アプリ設定やsiteConfigプロパティが非推奨または別設定に置き換えられています。ARM、Bicep、TerraformでFunction Appを作成している場合、既存テンプレートをそのまま流用すると意図した設定にならない可能性があります。(Microsoft Learn)

代表的な見直しポイントは次のとおりです。

従来の設定・プロパティFlex Consumptionでの考え方
FUNCTIONS_WORKER_RUNTIMEproperties.functionAppConfig.runtime.nameへ移行
FUNCTIONS_WORKER_RUNTIME_VERSIONproperties.functionAppConfig.runtime.versionへ移行
WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUTmaximumInstanceCountへ移行
FUNCTIONS_MAX_HTTP_CONCURRENCYscale and concurrencyのtrigger設定へ移行
WEBSITE_RUN_FROM_PACKAGEFlex Consumptionのデプロイでは使用しない
WEBSITE_CONTENTSHAREdeploymentセクションへ移行
WEBSITE_VNET_ROUTE_ALLFlex Consumptionのネットワーク設定では使用しない
properties.containerSizeinstanceMemoryMBへ名称変更
properties.siteConfig.preWarmedInstanceCountalwaysReadyInstancesへ移行
properties.alwaysOnFlex Consumptionでは無効

移行時は、ポータルで作ったFunction Appの設定を目視で合わせるだけでは不十分です。IaCテンプレート、GitHub Actions、Azure DevOps Pipeline、CLIスクリプト、環境別パラメータファイルまで確認してください。特にWEBSITE_RUN_FROM_PACKAGEやWEBSITE_CONTENTSHAREは、従来のAzure Functionsデプロイでよく使われていたため、無意識に残りやすい設定です。

移行前に実施すべきチェックリスト

既存のConsumption planアプリをFlex Consumptionへ移行する場合は、次の順番で確認すると抜け漏れを減らせます。

手順確認内容失敗しやすいポイント
アプリ棚卸しOS、プラン、リージョン、ランタイム、トリガーを確認Windows依存や古いランタイムを見落とす
対応リージョン確認Flex Consumption対応リージョンか確認依存サービスと別リージョンになり遅延が増える
ランタイム確認C# isolated、Node、Python、Javaなどの対応を確認C# in-processのまま移行しようとする
ネットワーク確認VNet、サブネット委任、Private Endpoint構成を確認Microsoft.App/environments委任を忘れる
IaC更新functionAppConfigへ設定を移す非推奨アプリ設定が残る
デプロイ設計パッケージ配置、ストレージ認証、コンテナー分離を確認複数アプリで同じデプロイコンテナーを共有する
スケール設計メモリ、同時実行、Always-ready、最大インスタンス数を確認クォータやAlways-readyコストを見落とす
検証負荷試験、依存サービス接続、ログ、失敗率を確認開発環境だけで判断する
切り替えDNS、API Management、Front Doorなどで段階的に切り替えロールバック先を用意しない

Linux Consumption planのアプリでは、az functionapp flex-migration listを使って移行候補と非対応理由を確認できます。Windows Consumption planの場合は、手動の確認・作成・構成が必要になるため、OS依存の洗い出しを先に行いましょう。(Microsoft Learn)

az functionapp flex-migration list

Flex Consumptionを選ぶべきケース、避けるべきケース

Flex Consumption planは多くのサーバーレス用途に向いていますが、すべてのAzure Functionsに最適というわけではありません。判断基準は次のように整理できます。

判断向いている・向いていない条件
Flex Consumptionを選ぶべきサーバーレス課金を維持したい、VNet統合が必要、負荷変動が大きい、コールドスタートを減らしたい、最大1,000インスタンス級のスケールが必要
Premium planを検討複数アプリを同一プランに載せたい、デプロイスロットを使いたい、常時稼働に近い、より大きなCPU・メモリ選択肢が必要
Dedicated planを検討既存App Service資産と同居したい、手動スケールや固定費にしたい、完全に予測可能な運用を重視する
Container Appsを検討独自コンテナイメージ、特殊ライブラリ、マイクロサービス統合、コンテナ前提の運用が必要
従来のConsumptionを残す可能性Windows依存、フル.NET Framework、Windows固有機能がある

Microsoft Learnのホスティング比較でも、新規のサーバーレスFunction AppではFlex Consumption planの利用が推奨され、Consumption planはレガシ扱いとして整理されています。一方で、Windows依存がある場合はConsumption planを使い続ける判断が必要になることもあります。(Microsoft Learn)

実務でのおすすめ移行方針

まずは、すべてのAzure Functionsを一括で移行しようとしないことです。失敗しにくい順番は、軽量なHTTP APIやキュー処理など、外部依存が少なく、Windows依存がないアプリからです。そこでFlex Consumptionのデプロイ、監視、コスト、クォータ、ネットワーク動作を確認し、標準テンプレートを作ってから本命アプリへ展開します。

移行の進め方は次の流れが現実的です。

  1. 既存Function Appを棚卸しする
  2. Linux Consumption planと古いランタイムを優先度高で抽出する
  3. Flex Consumption対応リージョンとランタイムを確認する
  4. BicepやTerraformのテンプレートをFlex Consumption用に更新する
  5. 新しいFlex Consumptionアプリを作成する
  6. デプロイストレージ、VNet、マネージドID、Application Insightsを設定する
  7. 同じコードを再デプロイし、負荷試験と依存サービス接続を確認する
  8. API Management、Front Door、DNSなどで段階的に切り替える
  9. 旧アプリを一定期間残し、問題がなければ停止・削除する

特に業務APIでは、移行直後の「動いた」だけで判断しないことが重要です。Flex Consumptionではスケールや同時実行の挙動が変わるため、ピーク時の依存サービス接続数、DBコネクション、Service BusやEvent Hubsの処理速度、Blobトリガーの動作を本番相当の負荷で確認してください。

まとめ:Flex Consumptionは新標準。ただし設定棚卸しが成功条件

Azure Functions Flex Consumption plan hostingは、従来のConsumption planの手軽さを残しながら、VNet統合、関数ごとのスケーリング、メモリサイズ選択、Always-ready、Azure Filesマウント、最大1,000インスタンスのスケールアウトなどを利用できる実用的なサーバーレスホスティングです。新規開発では、Windows依存やコンテナ要件がない限り、まずFlex Consumption planを検討する価値があります。

一方で、移行時は「コードを再デプロイすれば終わり」ではありません。Linuxのみ、C# in-process非対応、デプロイスロット非対応、1プラン1アプリ、リージョンクォータ、サブネット委任、非推奨アプリ設定など、運用設計に直結する確認項目があります。

次に取るべき行動は明確です。まず、既存のAzure Functionsをプラン別・OS別・ランタイム別に棚卸しし、Linux Consumption planと古いランタイムのアプリを優先的に抽出してください。そのうえで、Flex Consumption対応リージョン、ランタイム、VNet、IaC、デプロイ方式、Always-readyのコストを確認し、小さなアプリから移行検証を始めるのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次