Azure Functions では、Azure Container Apps でコンテナー化された関数アプリの開発、デプロイ、管理を統合的にサポートします。 他のマイクロサービス、API、Web サイト、ワークフロー、またはコンテナーでホストされているプログラムと同じ環境で実行する必要がある場合は、Functions アプリに Azure Container Apps を使用します。
Container Apps ホスティングを使用すると、オープンソースの監視、mTLS、Dapr、Kubernetes イベント ドリブン自動スケーリング (KEDA) を組み込んだサポートを使用して、完全にサポートされ、管理されたコンテナー ベースの環境で関数を実行できます。
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 は、アプリケーションのニーズを満たすさまざまなサービスの組み合わせを提供します。 次のシナリオは、Azure Container Apps と Azure Functions を同等にすることで、必要な制御機能とスケーリング機能が提供される状況の種類を表しています。
基幹業務 API: 基幹業務アプリケーション用の Functions を使用してカスタム ライブラリ、パッケージ、および API をパッケージ化します。
移行のサポート: オンプレミスのレガシ アプリケーションやモノリス アプリケーションを、コンテナー上のクラウド ネイティブ マイクロサービスに移行します。
イベントドリブン アーキテクチャ: Azure Container Apps で既に実行されているワークロードのイベント ドリブン アプリケーションをサポートします。
サーバーレス ワークロード: GPU コンピューティング リソースを必要とするビデオ、画像、トランスクリプト、またはその他の処理集中型タスクのサーバーレス ワークロード処理。
Azure Functions の一般的なシナリオ: ファイルのアップロードの処理、スケジュールされたタスクの実行、データベースの変更への応答、機械学習/AI など、 Azure Functions のシナリオで詳しく説明されているすべての一般的な Azure Functions シナリオ。
イベント ドリブン スケーリング
すべての Functions トリガーは、コンテナー化された Functions アプリで使用できます。 ただし、Container Apps 環境で実行されている場合、受信したイベントに基づいて (ゼロ インスタンスから) 動的にスケーリングできるのは、次のトリガーのみです。
- Azure Event Grid
- Azure Event Hubs
- Azure Blob Storage (Event Grid ベース)
- Azure Queue Storage(アジュール キュー ストレージ)
- Azure Service Bus(アジュール サービス バス)
- Durable Functions (MSSQL ストレージ プロバイダー)
- HTTP
- カフカ
- タイマー
- Azure Cosmos DB (アジュール コスモス データベース)
Container Apps 上の Azure Functions は、イベント ターゲットに従ってスケール パラメーターとルールを構成するように設計されています。 KEDA スケーリング オブジェクトの構成について考慮する必要はありません。 関数アプリを作成または変更する場合に、引き続きレプリカの最小数と最大数を設定できます。
Azure Cosmos DB トリガーと Durable 関数の自動スケーリングは、現在、接続文字列のみを使用してサポートされています。
関数コードは、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 開発者ガイド」をご覧ください。
アプリケーションのログ記録
Azure Monitor Application Insights を使い、Azure Functions でホストされているアプリの場合と同じ方法で、Container Apps でホストされているコンテナー化された関数アプリを監視できます。 詳しくは、「Azure Functions を監視する」をご覧ください。
イベント駆動型スケーリングをサポートするバインドの場合、スケーリング イベントは Log Analytics ワークスペースに FunctionsScalerInfo
と FunctionsScalerError
イベントとしてログされます。 詳しくは、「Azure Container Apps のアプリケーション ログ記録」をご覧ください。