この記事では、Azure Managed Redis または Azure Functions で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を実行するための Guide を参照>。
この NuGet パッケージ
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis
バンドルのインストール
アプリでこのバインド拡張機能を使用できるようにするには、プロジェクトのルートにある host.json ファイルに次の 参照が含まれていることを確認します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
この例では、の値は、少なくともが未満のバンドル バージョン (4.x のすべての潜在的なバージョンを含む) を使用するように Functions ホストに指示します。 この表記は、v4.x 拡張機能バンドルの利用可能な最新のマイナー バージョンでアプリを効果的に維持します。
可能であれば、最新の拡張機能バンドルメジャー バージョンを使用し、ランタイムが最新のマイナー バージョンを自動的に維持できるようにする必要があります。 最新のバンドルの内容は、extension バンドルのリリース ページで確認できます。 詳細については、「Azure Functions拡張機能バンドルを参照してください。
パッケージを更新する
<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 パラメーターに渡された名前を持つ接続文字列を保持する環境変数を検索します。
ローカル開発では、 は、local.settings.json ファイルを使用して定義できます。 Azureに展開する場合は、アプリケーション設定を使用できます。
Azure関数を使用してキャッシュ インスタンスに接続する場合は、デプロイで次のいずれかの接続を使用できます。
- ユーザー割り当てマネージド ID
- システム割り当てマネージド ID
- 接続文字列
- サービス プリンシパル
ユーザー割り当てマネージド ID は関数アプリに関連付けられている必要があり、その ID にはキャッシュ サービスでの明示的なアクセス許可も付与する必要があります。 詳細については、「キャッシュ認証にMicrosoft Entra IDを使用するを参照してください。
これらの例では、バインドの プロパティが に設定されていると仮定して、クライアント認証の種類に基づいて、各キャッシュ サービスに接続するために必要なアプリ設定のキー名と値を示します。
"Redis__redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis__principalId": "<principalId>",
"Redis__clientId": "<clientId>"
関連するコンテンツ
Azure Functions - Azure Redis のAzure関数の概要