次の方法で共有


Azure Container Apps 上の Azure Functions の概要

Azure Functions では、Azure Container Apps 上のコンテナー化された Functions アプリの開発、デプロイ、および管理に関する統合サポートが提供されます。 他のマイクロサービス、API、Web サイト、ワークフロー、またはコンテナーでホストされているプログラムと同じ環境で実行する必要がある場合は、Functions アプリに Azure Container Apps を使用します。

Container Apps ホスティングを使用すると、オープンソースの監視、mTLS、Dapr、Kubernetes イベント ドリブン自動スケーリング (KEDA) を組み込んだサポートを使用して、完全にサポートされ、管理されたコンテナー ベースの環境で Functions を実行できます。

Azure Container Apps の統合機能として、Microsoft.Appを呼び出すときにkind=functionappを設定することで、az containerapp create リソース プロバイダーを使用して Azure Container Apps に Azure Functions イメージを直接デプロイできます。 この方法で作成されたアプリは、すべての Azure Container Apps 機能にアクセスできます。

この記事では、Azure Container Apps 内で実行される Azure Functions アプリを作成してデプロイする方法について説明します。 次の方法を学びます:

  • 事前構成済みの自動スケーリングルールを使用してコンテナー化された Functions アプリを設定する
  • Azure portal または Azure CLI を使用してアプリケーションをデプロイする
  • HTTP トリガーを使用してデプロイされた関数を確認する

Container Apps で Functions を実行すると、基になるインフラストラクチャを自分で管理しなくても、自動スケーリング、簡単な構成、フル マネージドのコンテナー環境を利用できます。

主な利点

Container Apps ホスティング モデルは、コンテナー化されたワークロードの柔軟性と Azure Functions のイベントドリブンの性質に基づいています。 これには、次の主な利点があります。

次の表は、Container Apps の Functions と Flex 従量課金プランの機能を比較するのに役立ちます。

特徴 Container Apps Flex 従量課金プラン
ゼロにスケーリングする ✅ はい (KEDA 経由) ✅ はい
最大スケールアウト 1,000 (既定では 10、構成可能) 1,000
Always On インスタンス ✅ はい ( minReplicas経由) ✅ はい (常時対応インスタンス経由)
VNet 統合 ✅ はい ✅ はい
カスタム コンテナーのサポート ✅ はい (独自のイメージを持ち込む) ❌ 制限あり (コンテナー持ち込みなし)
GPU のサポート ✅ はい (サーバーレス GPU 専用ワークロード プロファイル経由) ❌ いいえ
組み込み機能 Container Apps 機能のサポート。 たとえば、KEDA、Dapr、マルチリビジョン、mTLS、サイドカー、イングレス制御など 関数に限定された機能
課金モデル Container Apps の価格: 従量課金プラン (vCPU、メモリ、要求) & 専用プラン (ワークロード プロファイル ベース) 実行時間と常時使用可能なインスタンス

Container Apps の Functions と Flex Consumption プラン、およびその他のすべてのプランとホスティングの種類の完全な比較については、「 Functions のスケールとホスティングのオプション」を参照してください。

シナリオ

Azure Container Apps 上の Azure Functions では、アプリケーションのニーズを満たす多様なサービスの組み合わせが提供されます。 次のシナリオは、Azure Container Apps と Azure Functions を同等にすることで、必要な制御機能とスケーリング機能が提供される状況の種類を表しています。

  • 基幹業務 API: 基幹業務アプリケーション用の Functions を使用してカスタム ライブラリ、パッケージ、および API をパッケージ化します。

  • 移行のサポート: オンプレミスのレガシ アプリケーションやモノリス アプリケーションを、コンテナー上のクラウド ネイティブ マイクロサービスに移行します。

  • イベントドリブン アーキテクチャ: Azure Container Apps で既に実行されているワークロードのイベント ドリブン アプリケーションをサポートします。

  • サーバーレス ワークロード: GPU コンピューティング リソースを必要とするビデオ、画像、トランスクリプト、またはその他の処理集中型タスクのサーバーレス ワークロード処理。

  • Azure Functions の一般的なシナリオ: ファイルのアップロードの処理、スケジュールされたタスクの実行、データベースの変更への応答、機械学習/AI など、 Azure Functions のシナリオで詳しく説明されているすべての一般的な Azure Functions シナリオ。

価格と請求

Azure Container Apps 上の Azure Functions は、Azure Container Apps と同じ価格モデルに従います。 課金は、環境に対して選択した プランの種類 (従量課金または専用) に基づきます。

  • 従量課金プラン: このサーバーレス コンピューティング オプションは、アプリが実行中に使用するリソースに対してのみ課金されます。
  • 専用プラン: このオプションでは、カスタマイズされたコンピューティング リソースが提供され、各ワークロード プロファイルに割り当てられたインスタンスに対して課金されます。

プランの選択によって、課金計算の方法が決まります。 環境内の異なるアプリケーションで、異なるプランを使用できます。

注意すべき重要なポイント:

  • Container Apps 内で Azure Functions プログラミング モデルを使用する場合、追加料金は発生しません。
  • Durable Functions およびその他の高度なパターンは、同じ Container Apps 価格モデルでサポートされ、課金されます。 詳細な課金のしくみと例については、 Azure Container Apps の課金に 関するドキュメントを参照してください。

イベント ドリブン スケーリング

すべての Functions トリガーは、コンテナー化された Functions アプリで使用できます。 ただし、Container Apps 環境で実行されている場合、受信したイベントに基づいて (ゼロ インスタンスから) 動的にスケーリングできるのは、次のトリガーのみです。

Azure Container Apps 上の Azure Functions は、イベント ターゲットに従ってスケール パラメーターとルールを構成するように設計されています。 KEDA スケーリング オブジェクトの構成について考慮する必要はありません。 Functions アプリを作成または変更するときに、レプリカの最小数と最大レプリカ数を設定できます。

Functions コードは、Azure Functions で サポートされている任意の言語スタック で記述できます。 イベント ドリブンのスケーリングでは、同じ Functions のトリガーとバインドを使用できます。

マネージド ID の認可

セキュリティのベスト プラクティスに準拠するには、Microsoft Entra 認証とマネージド ID 承認を使用してリモート サービスに接続します。

マネージド ID は、次の接続で使用できます。

  • 既定のストレージ アカウント (AzureWebJobsStorage)
  • Azure Container Registry: Container Apps で実行する場合、マネージド ID をサポートするすべてのバインディング拡張機能に対して、マネージド ID で Microsoft Entra ID を使用できます。 現在、マネージド ID 認証の使用時にイベント駆動型スケーリングをサポートするのは、次のバインド拡張機能のみです。
  • Azure Event Hubs
  • Azure Queue Storage
  • Azure Service Bus

その他のバインドでは、マネージド ID 認証を使うときは固定レプリカを使います。 詳しくは、「Azure Functions 開発者ガイド」をご覧ください。

スケーリングとパフォーマンス

Container Apps 上の Azure Functions は、KEDA を使用したイベントに基づいて自動的にスケーリングされます。スケール ルールを手動で構成する必要はありません。 スケーリング動作を制御するために、最小/最大レプリカを設定することもできます。

  • イベント ドリブン スケーリング: Event Grid、Service Bus、HTTP などのトリガーに基づいて自動的にスケーリングします。
  • ゼロにスケーリング: アプリがアイドル状態になると、ゼロにスケールインしてコストを節約します。
  • コールド スタート制御: minReplicas ≥ 1 を設定してコールド スタートを回避します。
  • コンカレンシー: 各インスタンスは、複数のイベントを並列で処理できます。
  • 高スケール: アプリあたり 1,000 インスタンスにスケールアウトします (既定値は 10)。
  • GPU のサポート: GPU ベースのノードを使用して、AI 推論などのコンピューティング負荷の高いワークロードを実行します。

これにより、Container Apps はバースト状態のワークロードと安定した状態のワークロードの両方に最適です。 詳細については、Azure Container Apps でのスケーリング ルールの設定に関するページを参照してください。

ネットワークとセキュリティ

Container Apps 上の Azure Functions には、セキュリティで保護されたスケーラブルなデプロイのための Container Apps の堅牢な ネットワーク 機能と セキュリティ機能 があります。

  • VNet 統合: 内部エンドポイントとプライベート データベースを介してプライベート リソースに安全にアクセスします。
  • マネージド ID: システム/ユーザー割り当て ID を使用して Azure サービスで認証します。シークレットや接続文字列は必要ありません。
  • Dapr のサポート: Dapr サイドカーを使用して、パブ/サブ、ステートマネジメント、セキュアなサービス呼び出しを有効にします。 詳細については、「 Dapr を利用したマイクロサービス API」を参照してください。
  • イングレスと TLS: TLS/mTLS、カスタム ドメインを使用してセキュリティで保護された HTTP エンドポイントを公開するか、内部に保持します。
  • 環境の分離: 関数は、セキュリティで保護されたスコープ付き通信のために Container Apps 環境の境界を共有します。

これらの機能により、Container Apps でホストされる Functions は、エンタープライズ レベルのセキュリティで保護されたサーバーレス アプリケーションに最適です。

アプリケーションのログ記録

Azure Monitor Application Insights を使用して、Container Apps でホストされているコンテナー化された Functions アプリを、Azure Functions でホストされているアプリと同じ方法で監視できます。 詳しくは、「Azure Functions を監視する」をご覧ください。

イベント駆動型スケーリングをサポートするバインドの場合、スケーリング イベントは Log Analytics ワークスペースに FunctionsScalerInfoFunctionsScalerError イベントとしてログされます。 詳しくは、「Azure Container Apps のアプリケーション ログ記録」をご覧ください。

フィードバックの送信

Azure Container Apps GitHub リポジトリに問題または機能要求を送信します。

次のステップ