Azure Functions v3 Linux Consumption停止に備える移行計画|2026年9月30日までにやること

Azure Functions runtime v3 を Linux の Consumption plan で運用しているチームは、2026年9月30日までに runtime v4 へ移行し、本番同等のトリガー・依存サービス・コストを検証する必要があります。これは単なる「サポート終了のお知らせ」ではありません。Microsoft は、Linux Consumption 上で v3 runtime のまま動く Function App が 2026年9月30日以降に実行を停止すると案内しています。2026年4月18日時点では、まず対象アプリを洗い出し、v4移行、必要なら Flex Consumption への移行、負荷・監視・ロールバック計画まで一気通貫で進めるのが現実的です。(Microsoft Azure)

目次

Azure Functions runtime v3 on Linux Consumption の何が変わるのか

今回のポイントは、Azure Functions runtime v3 の Linux Consumption 利用に最終的な停止期限が示されたことです。Azure Functions runtime 2.x / 3.x はすでにサポート対象外で、Microsoft Learn では「Azure Functions は現在 runtime host version 4.x のみをサポート」と説明されています。さらに、Linux の Consumption plan で end-of-life の v3 runtime を使う Function App は、2026年9月30日以降に停止すると明記されています。(Microsoft Learn)

ここで混同しやすいのが、2つの期限です。

期限対象何が起きるか今やるべきこと
2026年9月30日Linux Consumption plan 上の Azure Functions runtime v3v3 のままでは Function App が停止するruntime v4 へ移行し、本番検証を完了する
2028年9月30日Linux Consumption plan での Function App ホスティングLinux Consumption plan 自体がリタイア予定Flex Consumption など移行先プランを検討する

つまり、2026年9月30日の対応は「v3をv4に上げる」ことが最優先です。ただし、Linux Consumption plan 自体も 2028年9月30日にリタイア予定であり、新しい機能や言語バージョンは追加されないため、単に延命するだけでなく Flex Consumption への移行計画も同時に持つべきです。Microsoft は新しいサーバーレス Function App には Flex Consumption plan を推奨し、既存の Consumption plan アプリも Flex Consumption へ移行するよう案内しています。(Microsoft Learn)

まず自社の Function App が対象か確認する

最初にやるべきことは、設計議論ではなく棚卸しです。対象アプリを見落とすと、2026年9月30日以降にバッチ、Webhook、キュー処理、APIバックエンドなどが突然止まる可能性があります。

特に確認すべき条件は次の3つです。

確認項目対象になる条件補足
OSLinuxWindows Consumption は今回の Linux Consumption v3 停止とは別扱い。ただし v3 はサポート対象外のため移行は必要
ホスティングプランConsumption planAzure CLI では Dynamic と表示されることが多い
runtimeFUNCTIONS_EXTENSION_VERSION が ~3 または v3 固定v4移行対象。~4 への変更だけで済むとは限らない

Azure CLI で Linux Consumption の Function App を一覧化する例です。

az functionapp list \
  --query "[?contains(kind, 'linux') && sku=='Dynamic'].{name:name, resourceGroup:resourceGroup, location:location, kind:kind, sku:sku}" \
  -o table

各アプリの runtime 設定も確認します。

az functionapp config appsettings list \
  --name <APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --query "[?name=='FUNCTIONS_EXTENSION_VERSION' || name=='FUNCTIONS_WORKER_RUNTIME'].{name:name,value:value}" \
  -o table

大量の Function App がある場合は、サブスクリプション単位で「Linux Consumption」「runtime v3」「重要度」を付けて台帳化します。最低限、次の列を持つ一覧を作ってください。

台帳項目記入例判断に使う理由
Function App名order-webhook-prod対象識別
Resource Group / Subscriptionrg-prod-serverless権限・IaC・課金確認
Regionjapaneast / eastusFlex Consumption 対応リージョン確認
runtime~32026年9月30日の停止対象判定
言語Node.js / Python / .NET / Java言語バージョン移行の影響確認
トリガーHTTP / Timer / Service Bus / Blob / Event Hubs切り替え時の重複実行・取りこぼしリスク確認
SLA影響高 / 中 / 低移行順序とテスト深度の判断
移行方針v4のみ / v4 + Flex Consumption予算とスケジュールの分岐

移行方針は「v4だけ」か「Flex Consumptionまで」かで分ける

今回の期限だけを見ると、runtime v3 から v4 への移行が必須です。ただし、Linux Consumption plan 自体も将来的にリタイア予定のため、二度手間を避けたいチームは Flex Consumption まで含めて計画する価値があります。

方針向いているケースメリット注意点
まず runtime v4 に上げる期限までの余裕が少ない、影響範囲が大きい、本番停止リスクを最小化したい2026年9月30日の停止リスクに集中できる2028年に向けてホスティングプラン移行が残る
runtime v4 + Flex Consumption へ移すCI/CDやテスト環境が整っている、HTTP中心、または新規環境を作って切り替えやすい2026年と2028年の両方のリスクをまとめて減らせるスロット、証明書、Blob trigger、スケール設定など差分確認が増える
Premium / Dedicated / Container Apps を検討する常時稼働、長時間処理、カスタムコンテナ、高いネットワーク要件があるワークロードに合わせた制御がしやすいサーバーレス従量課金よりコスト構造が変わる

Flex Consumption は、Linuxベースの Azure Functions ホスティングプランで、従量課金モデルを維持しながら、仮想ネットワーク統合、インスタンスメモリサイズ選択、より速いスケールアウト、always ready instances などを利用できます。Microsoft は Flex Consumption を Azure Functions の推奨サーバーレスホスティングプランとしています。(Microsoft Learn)

ただし、Flex Consumption には現時点で重要な制約もあります。C# in-process model はサポート対象外で、デプロイスロットも現在サポートされていません。Blob storage trigger では Event Grid source が前提になるなど、既存アプリによっては設計変更が必要です。(Microsoft Learn)

移行前に必ず動かすものを決める

Azure Functions の移行では、コードだけを見ていると失敗します。実際には、Function App の周辺にある設定、イベントソース、シークレット、監視、デプロイ方式まで含めて移す必要があります。

移すもの確認ポイントよくある失敗
runtime設定FUNCTIONS_EXTENSION_VERSION を v4 対応へ~4 に変えただけで依存パッケージが古く起動しない
言語ランタイム.NET / Node.js / Python / Java / PowerShell の対応バージョンv3時代の古い言語バージョンを引きずる
バインディング拡張機能Storage、Service Bus、Event Hubs、Cosmos DB、Timer など拡張機能の破壊的変更を見落とす
host.jsonextension bundle、timeout、concurrency、loggingv4で必要な extension bundle バージョンに上がっていない
App settings接続文字列、環境変数、機能フラグ本番だけにある設定を移し忘れる
Managed Identity / RBACKey Vault、Storage、Service Bus、Cosmos DB への権限新アプリのIDにロールがなく実行時エラーになる
ネットワークIP制限、Private Endpoint、VNet統合、CORS呼び出し元は変えていないのに通信が拒否される
デプロイGitHub Actions、Azure DevOps、Run From Package古い publish profile や zip deploy のまま失敗する
監視Application Insights、アラート、ログクエリ移行後に失敗を検知できない
イベントソースQueue、Service Bus、Event Hubs、Blob、Timer二重実行、取りこぼし、順序崩れが起きる

Microsoft の v3 から v4 への移行手順でも、破壊的変更の確認、ローカルプロジェクトの移行、Azure Functions Core Tools v4 でのローカルテスト、Pre-Upgrade Validator の実行、Azure上の runtime 更新、再発行が推奨されています。(Microsoft Learn)

runtime v4 移行で見るべき実務ポイント

FUNCTIONS_EXTENSION_VERSION だけを先に変えない

Azure Functions の runtime は FUNCTIONS_EXTENSION_VERSION アプリ設定で制御されます。v4 の値は ~4 です。ただし Microsoft Learn でも、この設定を任意に変更せず、既存アプリでは移行手順に従うよう注意されています。(Microsoft Learn)

危険なのは、次のような進め方です。

az functionapp config appsettings set \
  --settings FUNCTIONS_EXTENSION_VERSION=~4 \
  -g <RESOURCE_GROUP_NAME> \
  -n <APP_NAME>

このコマンド自体は v4 へ更新する操作の一部ですが、コード、言語ランタイム、拡張機能、host.json、CI/CDを検証せずに本番で実行すると、起動失敗や一部トリガーの不発につながります。

本番で設定を変える前に、少なくとも次を終えてください。

  • ローカルで Azure Functions Core Tools v4 による起動確認
  • 対象言語のサポートバージョン確認
  • バインディング拡張機能の更新
  • host.json の extension bundle 確認
  • Pre-Upgrade Validator の実行
  • ステージング環境または新規 Function App での本番相当テスト
  • ロールバック手順の文書化

.NET は in-process のまま残すかを慎重に判断する

.NET の Azure Functions を運用している場合は、v4移行と同時に execution model も確認してください。Microsoft Learn では、.NET in-process model のサポート終了が 2026年11月10日であること、完全なサポートのために isolated worker model への移行が推奨されることが示されています。(Microsoft Learn)

短期対応として in-process のまま v4 に上げる選択肢があっても、数か月後に再度移行が必要になる可能性があります。特に Flex Consumption では C# in-process model がサポートされないため、Flex Consumption まで視野に入れるなら isolated worker model への移行を前提に計画するのが安全です。(Microsoft Learn)

Node.js、Python、Javaも「動く」ではなく「今後使える」を見る

Linux Consumption plan では新しい言語バージョンが追加されない方針です。Microsoft Learn では、Linux Consumption plan で最後にサポートされる言語バージョンとして、.NET 9、Java 21、Node.js 22、PowerShell 7.4、Python 3.12 などが示されています。(Microsoft Learn)

たとえば「Node.js 18で動いているから大丈夫」ではなく、次の観点で見直します。

言語見るべきこと
.NETisolated worker model へ移るか、対象 .NET バージョンのサポート期限はいつか
Node.js / TypeScriptv4対応の Node.js バージョン、依存ライブラリ、ビルド成果物の互換性
PythonPython バージョン、ネイティブ依存、ビルド方式、Linux上のパッケージ互換性
JavaJava バージョン、Maven設定、FUNCTIONS_EXTENSION_VERSION の反映
PowerShellモジュールの互換性、実行ポリシー、依存モジュールの配置方法

Flex Consumption へ移す場合に追加で確認すること

Flex Consumption は単なる上位互換ではありません。スケール、デプロイ、ネットワーク、課金、制約が変わります。

スロットを使っている場合は移行戦略を変える

Consumption plan の Function App では deployment slot を持てる場合がありますが、Flex Consumption plan は現在 deployment slots をサポートしていません。既存環境でスロットを使って検証・切り替えをしている場合、Flex Consumption では別の Function App を非本番環境として用意し、API Management、Application Gateway、DNS、イベント購読など上流側で切り替える設計が必要です。(Microsoft Learn)

実務では、次のように切り替えます。

既存のやり方Flex Consumption移行後の代替
deployment slot にデプロイして swap検証用 Function App を別名で作成し、上流ルーティングで切り替え
本番スロットと検証スロットで同じURLを使うAPI Management や Application Gateway でバックエンドを切り替え
スロット設定で本番値を分離Key Vault、App Configuration、環境別 App settings で分離

Blob trigger は Event Grid source を確認する

Flex Consumption では Blob storage trigger が Event Grid source を前提とするため、既存の Blob trigger がコンテナポーリング方式のままでは移行前に変更が必要です。Microsoft の移行ガイドでも、Blob trigger に source がない、または LogsAndContainerScan の場合は、Event Grid source へ変更する必要があると説明されています。(Microsoft Learn)

Blob trigger を使っているアプリでは、次を確認します。

az functionapp function list \
  --name <APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --query "[?config.bindings[0].type=='blobTrigger'].{Function:name,TriggerType:config.bindings[0].type,Source:config.bindings[0].source}" \
  --output table

Source が空、または Event Grid でない場合は、Event Grid subscription の作成、イベント重複時の冪等性、既存コンテナの処理済みデータの扱いまで含めて設計します。

証明書、CORS、カスタムドメイン、認証設定を見落とさない

Flex Consumption 移行では、アプリ設定だけでなく、CORS、カスタムドメイン、HTTPバージョン、HTTPS only、TLS設定、クライアント証明書、IP制限、Managed Identity、RBAC なども確認対象です。Microsoft の移行ガイドでは、移行前に App settings、アプリ構成、Managed Identity、組み込み認証、受信アクセス制限を収集するよう案内されています。(Microsoft Learn)

特に、Key Vault や Storage へ接続文字列でアクセスしているアプリは、移行を機に Managed Identity + RBAC へ寄せると、シークレット管理の負荷を下げられます。Microsoft も、接続文字列の代わりに Microsoft Entra ID 認証と Managed Identity を使うことを推奨しています。(Microsoft Learn)

テストは「起動確認」では足りない

Azure Functions の移行テストでありがちな失敗は、HTTPの疎通確認だけで完了扱いにすることです。実際に止まりやすいのは、イベント処理、再試行、スケールアウト、認証、監視、コールドスタートです。

テスト項目具体的に見ること合格基準の例
起動テストFunction Host が正常起動するか起動エラー、拡張機能エラー、依存DLL不足がない
HTTPテストAPIレスポンス、認証、CORS、カスタムドメイン主要エンドポイントが本番同等の認証条件で成功
イベントトリガーQueue、Service Bus、Event Hubs、Blob、Timerメッセージ取りこぼし、重複処理、順序問題が許容範囲内
冪等性同じイベントを複数回処理しても破壊的副作用がないか二重請求、二重通知、二重登録が起きない
スケールピーク時の同時実行、インスタンス数、スロットリングP95/P99がSLO内、失敗率が基準以下
コールドスタートアイドル後の初回応答ユーザー影響が許容範囲内。必要なら always ready を検討
監視Application Insights、ログ、アラート失敗、遅延、依存先エラーを検知できる
ロールバック旧アプリへ戻す、上流ルーティングを戻す手順書通りに短時間で戻せる

Microsoft の Flex Consumption 移行ガイドでも、移行前後で同条件のベンチマークを取り、コールドスタート、スループット、P50/P95/P99 レイテンシを比較することが推奨されています。(Microsoft Learn)

トリガー別の切り替えリスクを先に潰す

HTTPだけの Function App は比較的移行しやすい一方、イベント駆動の Function App は慎重な切り替えが必要です。

トリガー主なリスク移行時の対策
HTTPURL変更、認証、CORS、クライアント更新漏れAPI ManagementやDNSで切り替え、クライアント設定を一覧化
Timer旧新アプリの同時実行移行中は片方のTimerを無効化、スケジュールをずらす
Storage Queue二重処理、キュー取りこぼし新キューを用意し、送信元を段階的に切り替える
Service Busメッセージ重複、DLQ増加新topic/queue、サブスクリプション、DLQ監視を設計
Event Hubsチェックポイント競合新consumer groupを用意する
Cosmos DB Change Feedlease競合、再処理新lease container、StartFromBeginning の確認
Blobポーリング方式からEvent Grid方式への変更Event Grid subscription、処理済みBlobの扱いを決める

Microsoft の移行ガイドでも、Event Hubs では新しい consumer group、Cosmos DB では専用 lease container、Service Bus や Storage Queue では新しい queue/topic を使うなど、トリガー別の対策が示されています。(Microsoft Learn)

予算は実行料金だけで見積もらない

今回の移行で必要な予算は、Azure Functions の実行料金だけではありません。特に Flex Consumption へ移す場合、インスタンスメモリ、always ready instances、リージョンクォータ、並行稼働期間、監視ログ、負荷試験、ネットワーク構成まで含めて見積もる必要があります。

Flex Consumption の課金は、オンデマンド実行時の実行時間に加え、always ready instances を使う場合はその分のコストが発生します。Flex Consumption では 512MB、2048MB、4096MB のインスタンスメモリサイズを選べ、Microsoft は多くのシナリオで 2048MB を既定の選択肢として考えることを案内しています。(Microsoft Learn)

予算項目見積もり観点見落としやすいポイント
開発工数言語バージョン更新、依存パッケージ更新、テスト修正.NET isolated worker移行や古い拡張機能対応
検証環境新 Function App、Storage、Service Bus、Cosmos DB、Key Vault本番相当のイベントソースを別途用意する費用
並行稼働旧アプリと新アプリを一定期間同時運用メッセージ重複やログ量増加
負荷試験Azure Load Testingなどのツール、テストデータ作成ピーク時間帯に近い条件で測らないと意味が薄い
監視Application Insights、Log Analytics、アラートログ量が増えるとコストが増える
Flex Consumption実行時間、メモリサイズ、always ready instancesコールドスタート対策で always ready を増やしすぎる
ネットワークVNet統合、Private Endpoint、API Management、Application Gateway段階的切り替えに上流ルーティングが必要になる
サポートMicrosoft サポート、外部レビュー、移行リハーサル期限直前は問い合わせが集中しやすい

Flex Consumption では、サブスクリプションとリージョン単位で共有されるメモリ・コアのクォータも確認が必要です。Microsoft Learn では、既定のリージョン別クォータが 250 cores 相当であり、always ready instances もクォータに含まれると説明されています。大規模なスパイク処理を持つチームは、移行前にクォータ上限と引き上げ手順を確認しておくべきです。(Microsoft Learn)

2026年9月30日までの現実的な移行スケジュール

2026年4月18日から2026年9月30日までは165日です。大規模環境では長くありません。目安として、次のように逆算すると進めやすくなります。

時期やること完了条件
2026年4月〜5月対象アプリの棚卸し、重要度分類、移行方針決定Linux Consumption + v3 の一覧が確定している
2026年5月〜6月v4対応ブランチ作成、依存関係更新、ローカルテストCore Tools v4 で主要関数が起動・実行できる
2026年6月〜7月検証環境または新 Function App へデプロイApp settings、Identity、ネットワーク、監視が再現できている
2026年7月〜8月負荷試験、トリガー別テスト、障害時テストP95/P99、失敗率、再試行、DLQ監視が基準内
2026年8月〜9月前半本番切り替えリハーサル、ロールバック確認手順書通りに切り替え・戻しができる
2026年9月中旬まで本番移行完了旧v3アプリに本番トラフィックやイベントが残っていない
2026年9月30日最終期限v3 Linux Consumption の本番依存がゼロ

期限当日に切り替える計画は避けてください。Azure Functions の移行では、アプリ本体よりも上流・下流サービスの設定変更に時間がかかることがあります。特に、外部システムのWebhook送信先、顧客側のIP許可リスト、DNS変更、API Managementのバックエンド変更、Event Grid subscription の再作成は、関係者調整が必要になりがちです。

チーム別に今すぐやること

Cloud developers がやること

開発者は、まずコードと依存関係を v4 対応にします。

  • FUNCTIONS_EXTENSION_VERSION だけでなく、プロジェクトファイルの Azure Functions version を確認する
  • 使用言語のサポートバージョンに上げる
  • バインディング拡張機能を最新の安定版へ更新する
  • host.json の extension bundle を確認する
  • ローカルで Core Tools v4 による起動・実行テストを行う
  • キュー、Blob、Service Bus、Event Hubs などの重複処理に備え、関数を冪等にする
  • Application Insights のログ・メトリックで移行前後を比較できるようにする

Serverless platform owners がやること

プラットフォームオーナーは、アプリ単体ではなく、移行の型を作ります。

  • サブスクリプション横断で v3 Linux Consumption を棚卸しする
  • 重要度ごとに移行期限を前倒しで設定する
  • v4のみ移行、Flex Consumption移行、Premium/Dedicated移行の判断基準を作る
  • CI/CDテンプレート、IaC、Key Vault、Managed Identity、RBACの標準を更新する
  • Flex Consumption の対応リージョン、クォータ、制約を確認する
  • 負荷試験とロールバックの最低基準を定義する
  • 2028年の Linux Consumption plan リタイアも含めたロードマップを作る

判断に迷ったときの基準

移行方針で迷ったら、次の基準で判断すると実務上の失敗を減らせます。

状況推奨判断
v3停止期限まで余裕がないまず runtime v4 移行を優先し、Flex Consumption は次フェーズに分ける
HTTP中心で依存サービスが少ないv4 + Flex Consumption を同時に進めやすい
Service Bus / Event Hubs / Cosmos DB Change Feed が中心並行稼働・重複処理・チェックポイント設計を優先する
.NET in-process を使っているisolated worker model 移行を含めて計画する
deployment slots に依存しているFlex Consumption移行時は別アプリ + 上流ルーティング方式を設計する
カスタム証明書や特殊なネットワーク要件があるFlex Consumptionだけで足りるか、Premium/Dedicatedも比較する
コールドスタートがSLOに影響するFlex Consumption の always ready instances または Premium を検討する

最後に確認すべきチェックリスト

本番移行前に、次の項目がすべて「はい」になっているか確認してください。

チェック確認内容
対象棚卸しLinux Consumption + v3 の Function App をすべて特定した
コード移行runtime v4 対応のコード・依存パッケージ・host.json に更新した
ローカル検証Azure Functions Core Tools v4 で主要関数を実行した
Azure検証Pre-Upgrade Validator や検証環境で問題を潰した
設定移行App settings、CORS、Identity、RBAC、ネットワーク、監視を再現した
トリガー検証HTTP以外のイベント処理で重複・取りこぼし・DLQを確認した
性能検証コールドスタート、スループット、P95/P99を移行前後で比較した
費用確認Flex Consumption、always ready、ログ、並行稼働、負荷試験の費用を見積もった
ロールバック旧アプリへ戻す手順、または上流ルーティングを戻す手順を確認した
本番切替2026年9月30日より前に、本番依存を v3 Linux Consumption から外した

Azure Functions runtime v3 on Linux Consumption の停止対応は、後回しにすると「設定変更だけで済む移行」ではなくなります。まずは対象アプリを棚卸しし、v4移行を最優先で完了させてください。そのうえで、Linux Consumption plan の将来のリタイアを見据え、Flex Consumption へ移すか、Premium / Dedicated / Container Apps を選ぶかをワークロード単位で判断するのが、2026年以降の安全な進め方です。

この記事を書いた人

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

コメント

コメントする

目次