Azure Redis 用 Azure 関数の概要
この記事では、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 | はい |
バインド | はい | 可 |
重要
Redis トリガーは現在、 Elastic Premium プラン または専用の App Service プランで実行されている関数でのみサポートされています。
拡張機能のインストール
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis
バンドルのインストール
Java 関数プロジェクトの作成。 Maven を使用できます。
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8
host.json ファイルで次のコードを追加または置き換えることによって拡張機能バンドルを追加します。
{ "version": "2.0", "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", "version": "[4.11.*, 5.0.0)" } }
警告
Redis 拡張機能は現在、プレビュー バンドル リリースでのみ使用できます。
Redis バインド用 Java ライブラリを
pom.xml
ファイルに追加します。<dependency> <groupId>com.microsoft.azure.functions</groupId> <artifactId>azure-functions-java-library-redis</artifactId> <version>${azure.functions.java.library.redis.version}</version> </dependency>
host.json ファイルで次のコードを追加または置き換えることによって拡張機能バンドルを追加します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.11.*, 5.0.0)"
}
}
警告
Redis 拡張機能は現在、プレビュー バンドル リリースでのみ使用できます。
Redis 接続文字列
Azure Redis のトリガーとバインドには、キャッシュ 接続文字列に必要なプロパティがあります。 接続文字列は、Azure Managed Redis ポータルまたは Azure Cache for Redis ポータルの Access キー メニューにあります。 Redis のトリガーまたはバインドは、Connection
パラメーターに渡された名前を使用して、接続文字列を保持する環境変数を検索します。
ローカル開発では、Connection
は、local.settings.json ファイルを使用して定義できます。 Azure にデプロイすると、アプリケーション設定を使用できます。
Azure 関数を使用してキャッシュ インスタンスに接続する場合、デプロイでは、接続文字列、システム割り当てマネージド ID、ユーザー割り当てマネージド ID の 3 種類の接続を使用できます。
ローカル開発では、サービス プリンシパル シークレットを使用することもできます。
Connection
が関数でRedis
に設定されていると仮定して、appsettings
を使用して次の種類のクライアント認証を構成します。
接続文字列
"Redis": "<cacheName>.<region>.redis.azure.net:10000,password=..."
システム割り当てマネージド ID
"Redis:redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis:principalId": "<principalId>"
ユーザー割り当てマネージド ID
"Redis:redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis:principalId": "<principalId>",
"Redis:clientId": "<clientId>"
サービス プリンシパル シークレット
サービス プリンシパル シークレットを使用した接続は、ローカル開発時にのみ使用できます。
"Redis:redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis:principalId": "<principalId>",
"Redis:clientId": "<clientId>"
"Redis:tenantId": "<tenantId>"
"Redis:clientSecret": "<clientSecret>"