この記事では、Azure Functions で Azure Managed Redis または Azure Cache for Redis を使用して、最適化されたサーバーレスアーキテクチャとイベントドリブン アーキテクチャを作成する方法について説明します。
Azure Functions には、トリガーとバインドが重要な機能であるイベントドリブン プログラミング モデルが用意されています。 Azure Functions を使用すると、イベントドリブンのサーバーレス アプリケーションを簡単に構築できます。 Azure Redis サービス (Azure Managed Redis と Azure Cache for Redis) には、マイクロサービス、状態管理、pub/sub メッセージングなど、分散アプリケーションを構築するための一連の構成要素とベスト プラクティスが用意されています。
Azure Redis は Azure Functions のトリガーとして使用でき、サーバーレス ワークフローを開始できます。 この機能は、遅延書き込みキャッシュやイベント ベースのアーキテクチャなどのデータ アーキテクチャで非常に便利です。
Azure Redis と Azure Functions を統合して、Azure Redis または外部システムからのイベントに反応する関数を構築できます。
| アクション | 方向 |
|---|---|
| Redis pub サブ メッセージでトリガーする | トリガー |
| Redis リストでのトリガー | トリガー |
| Redis ストリームでのトリガー | トリガー |
| キャッシュされた値を読み取る | 入力 |
| キャッシュする値を書き込む | 出力 |
関数のトリガーとバインドの可用性のスコープ
| レベル | Azure Cache for Redis (Basic、Standard、Premium、Enterprise、Enterprise Flash) | Azure Managed Redis (メモリ最適化、基本、コンピューティング最適化、フラッシュ最適化) |
|---|---|---|
| Pub/Sub | Yes | Yes |
| リスト | Yes | Yes |
| ストリーム | Yes | Yes |
| バインド | Yes | Yes |
重要
Redis トリガーは現在、 Elastic Premium プラン または専用の App Service プランで実行されている関数でのみサポートされています。
拡張機能のインストール
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis
バンドルのインストール
アプリでこのバインド拡張機能を使用できるようにするには、プロジェクトのルートにある host.json ファイルに次の extensionBundle 参照が含まれていることを確認します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
この例では、versionの[4.0.0, 5.0.0)値は、少なくとも4.0.0が5.0.0未満のバンドル バージョン (4.x のすべての潜在的なバージョンを含む) を使用するように Functions ホストに指示します。 この表記は、v4.x 拡張機能バンドルの利用可能な最新のマイナー バージョンでアプリを効果的に維持します。
可能であれば、最新の拡張機能バンドルメジャー バージョンを使用し、ランタイムが最新のマイナー バージョンを自動的に維持できるようにする必要があります。 最新のバンドルの内容は、 拡張機能バンドルのリリース ページで確認できます。 詳細については、 Azure Functions 拡張機能バンドルに関するページを参照してください。
パッケージを更新する
ファイルを更新してこの依存関係を追加することで、pom.xmlをプロジェクトに追加します。
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-redis</artifactId>
<version>1.0.0</version>
</dependency>
Redis 接続文字列
Azure Redis のトリガーとバインドには、キャッシュ接続情報を含むアプリケーション設定またはコレクション名を示す必須プロパティがあります。 Redis のトリガーまたはバインドは、Connection パラメーターに渡された名前を使用して、接続文字列を保持する環境変数を検索します。
ローカル開発では、Connection は、local.settings.json ファイルを使用して定義できます。 Azure にデプロイすると、アプリケーション設定を使用できます。
Azure 関数を使用してキャッシュ インスタンスに接続する場合は、デプロイで次のいずれかの種類の接続を使用できます。
ユーザー割り当てマネージド ID は関数アプリに関連付けられている必要があり、その ID にはキャッシュ サービスでの明示的なアクセス許可も付与する必要があります。 詳細については、「 キャッシュ認証に Microsoft Entra ID を使用する」を参照してください。
これらの例では、バインドの Connection プロパティが Redis に設定されていると仮定して、クライアント認証の種類に基づいて、各キャッシュ サービスに接続するために必要なアプリ設定のキー名と値を示します。
"Redis__redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis__principalId": "<principalId>",
"Redis__clientId": "<clientId>"