TL

Cloud Service

Azure Functions

イベントをきっかけにコードを自動実行するサーバーレス。サーバー管理不要で、実行した分だけ課金。AWS Lambda に相当する Azure のサーバーレスコンピューティング。

中級コスト最適化パフォーマンス効率運用上の優秀性信頼性
最終更新: 2026-06-03公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.トリガーでコードを自動実行するサーバーレス FaaS。
  • 2.消費プランは実行した分だけ課金し、0 台までスケールイン。
  • 3.AWS Lambda 相当。バインドで入出力を宣言的に接続できる。

解決する課題

サーバーを常時立てておくコストや運用の手間を、イベント駆動の実行に置き換えられます。

  • サーバーを常駐させるのはもったいない/面倒 → トリガー発生時だけ動かす
  • 急なスパイクに自動でスケールしてほしい(消費プランは 0 台までスケールイン)
  • 「Blob がアップされたら処理」「キューにメッセージが来たら処理」「HTTP で呼ばれたら API」を接着剤的に書きたい
  • 定期実行(cron)を、サーバーを立てずにタイマーで回したい

主要概念と用語

  • 関数(Function): 実行単位のコード。1 つのトリガーと複数のバインドを持つ
  • トリガー(Trigger): 関数を起動するイベント源。HTTP、Timer、Blob、Queue Storage、Service Bus、Event Hubs、Event Grid、Cosmos DB など
  • バインド(Binding): 入出力を宣言的に接続する仕組み。コードを書かずに入力データの取得や出力先への書き込みができる(入力/出力バインド。AWS Lambda には無い Functions 固有の概念)
  • Function App: 関数をまとめてデプロイ・スケールする単位(ホスティングの箱)
  • ホスティングプラン: 消費(Consumption)/Flex Consumption/Premium/App Service(専用)。スケール挙動と課金が変わる
  • Durable Functions: 状態を持つオーケストレーションを書くための拡張(AWS の Step Functions 相当の領域をコードで実現)
  • コールドスタート: アイドル後に新しいインスタンスを起動する初回遅延

仕様・制限・クォータ

  • タイムアウト: 消費プランは既定 5 分・最大 10 分。Premium / 専用プランは既定 30 分で、無制限に設定可能(長時間処理は Durable Functions での分割を推奨)
  • ランタイム: .NET(分離ワーカー)、Node.js、Python、Java、PowerShell をサポート。バージョンは Functions ランタイム(v4 系)に依存
  • スケール: 消費プランは Scale Controller が自動で水平スケール。HTTP 等のインスタンス上限はプランごとに異なる(消費プランは Windows で最大 200 インスタンス程度)
  • メモリ: 消費プランはインスタンスあたり 1.5 GB 程度。Premium / Flex では選択したインスタンスサイズに依存
  • 一時領域や同時実行はプラン・言語ワーカー数(FUNCTIONS_WORKER_PROCESS_COUNT 等)で変化する

内部の仕組み

Azure Functions は Functions ランタイムホスト が WebJobs SDK を土台に動作し、登録されたトリガーを監視して関数を起動します。スケールは Scale Controller が担当し、キューの長さや HTTP の負荷といったメトリクスを見て、インスタンス数を水平に増減します。消費プランでは負荷が無ければ 0 までスケールインし、その状態から起動するのがコールドスタートです。

Azure Functionsでイベント源からトリガー、入力バインド、関数実行、出力バインドへ処理し、負荷に応じて実行枠を増減する構成図
トリガーがイベントを検知し、Functionsランタイムが関数を実行します。スケール制御はイベント量から実行枠を増減し、0台からの起動ではコールドスタートが発生します。再試行や毒キューの扱いはトリガーごとに確認します。
  • イベント源(Blob/Queue/Service Bus 等)の監視と、バインドによる入出力の接続をランタイムが肩代わりする
  • 同時に多くのイベントが来れば、その分インスタンスを並列に増やして処理する
コールドスタート対策

低レイテンシを安定させたいなら Premium プランの**事前ウォーム済みインスタンス(Always Ready)**を使い、常に温かいインスタンスを確保する。Flex Consumption の Always Ready 設定でも同様に緩和できます。

設計パターン / ベストプラクティス

  • ステートレスに作り、状態は Cosmos DB / Storage / Cache for Redis へ逃がす
  • 小さく・速く(依存を減らし初期化を軽くしてコールドスタートを短縮)
  • 状態を持つワークフローは Durable Functions(オーケストレーター/アクティビティ/ファンアウト・ファンイン、人間の承認待ちなど)で表現
  • ポイズンメッセージ対策に Queue / Service Bus のリトライと毒キュー(poison queue / dead-letter) を活用
  • 秘密情報はアプリ設定に直書きせず Key Vault 参照やマネージド ID で取得する

運用・監視

  • 監視は Application Insights(実行回数、失敗、所要時間、依存関係の分散トレース、ライブメトリクス)が標準
  • ログ/メトリクスは Azure Monitor に集約。失敗率や実行時間でアラートを設定
  • スロットリングや遅延が出たら、ダウンストリーム(DB・外部 API)の限界やプランのインスタンス上限を確認
  • デプロイは zip デプロイ(run-from-package)/GitHub Actions / Azure DevOps。設定はアプリ設定(環境変数)で管理

コスト

ホスティングプランの選択がコストとスケール挙動を決めます。

プラン課金向いている用途
消費(Consumption)実行回数 + 実行時間(GB秒)。無料枠あり、アイドルは無料イベント駆動・断続的・予測困難
Flex Consumption従量 + 任意の Always Ready 分スパイクと低レイテンシを両立したい
Premium(EP)確保インスタンスの時間課金コールドスタート回避・VNET 統合・長時間
App Service(専用)App Service プランの固定費既存プランに同居・常時稼働
  • 消費プランは 実行回数 + GB 秒(メモリ × 実行時間) で課金され、無料枠が大きくアイドル時は無料
  • 一定の常時負荷や低レイテンシ要件があるなら Premium / Flex のほうが総額・体感が有利になることがある(要計測)

セキュリティ

  • 資格情報を直書きせず マネージド ID で他の Azure リソースへアクセスする(AWS の IAM ロール相当)
  • アプリ設定の秘密は Key Vault 参照で外出しし、鍵・接続文字列の漏洩リスクを下げる
  • HTTP トリガーは **認証レベル(function / admin キー)**や **Microsoft Entra ID 認証(Easy Auth)**で保護し、必要に応じて API Management を前段に置く
  • ネットワーク分離が必要なら VNET 統合 / プライベートエンドポイント(Premium / Flex)を使う
アンチパターン

接続文字列や API キーをアプリ設定にベタ書きしたまま運用するのは NG。マネージド ID + Key Vault 参照を使えば、資格情報をコードや設定に置かずに済み、漏洩リスクを排除できます。

関連サービス・比較(AWS との対応)

観点Azure FunctionsAWS Lambda
位置づけAzure のサーバーレス FaaSAWS のサーバーレス FaaS
課金実行回数 + GB秒(消費プラン)リクエスト数 + GB秒
入出力接続トリガー + バインド(宣言的)イベントソースマッピング(コードで処理)
最大実行時間10分(消費)/無制限(Premium・専用)15分
状態付きワークフローDurable FunctionsStep Functions(別サービス)
権限付与マネージド ID + Entra ID/RBAC実行ロール(IAM)

ハンズオン / CLI例

# リソースグループとストレージアカウントを作成
az group create --name demo-rg --location japaneast
az storage account create \
  --name demofuncstg$RANDOM \
  --resource-group demo-rg \
  --location japaneast \
  --sku Standard_LRS

# 消費プランの Function App を作成(Node.js 20 / Functions v4)
az functionapp create \
  --resource-group demo-rg \
  --name demo-func-app \
  --consumption-plan-location japaneast \
  --runtime node \
  --runtime-version 20 \
  --functions-version 4 \
  --storage-account demofuncstg12345

# マネージド ID を有効化(資格情報の直書きを避ける)
az functionapp identity assign \
  --resource-group demo-rg \
  --name demo-func-app

# ローカルでビルドしたプロジェクトを zip デプロイ
az functionapp deployment source config-zip \
  --resource-group demo-rg \
  --name demo-func-app \
  --src ./app.zip

Azure Service

Azure Functionsを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

コンピューティング

比較で見る軸

クラウド: Azure / カテゴリ: コンピューティング / 難易度: intermediate

導入後に効く点

消費プランは実行した分だけ課金し、0 台までスケールイン。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Azure
カテゴリ
コンピューティング
難易度
intermediate
関連資格
設計柱
cost / performance / operational / reliability

判断チェックリスト

  • 自社の用途が「コンピューティング / cost」に近いか確認する。
  • 強みである「トリガーでコードを自動実行するサーバーレス FaaS。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

コンピューティングcostperformanceoperationalreliability

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。