次の方法で共有


Service Connector を使用して Azure Cache for Redis を統合する

この記事では、Service Connector を使用してアプリを Azure Cache for Redis に接続するために使用できるサポートされている認証方法、クライアント、サンプル コードについて説明します。また、この記事では、サービス接続の作成時に取得される既定の環境変数の名前、値、構成についても説明します。

サポートされているコンピューティング サービス

Service Connector を使うと、次のコンピューティング サービスを Azure Cache for Redis に接続できます。

  • Azure App Service
  • Azure コンテナ アプリ
  • Azure Functions (アジュール ファンクションズ)
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

サポートされている認証とクライアントの種類

次の表は、Service Connector を使った Azure Cache for Redis へのコンピューティング サービスの接続でサポートされている認証方法とクライアントの組み合わせを示したものです。 "はい" は、組み合わせがサポートされていることを意味します。 "いいえ" は、サポートされていないことを意味します。

クライアントの種類 システム割り当てマネージド ID ユーザー割り当てマネージド ID シークレット/接続文字列 サービス プリンシパル
.NET はい はい はい はい
Go いいえ いいえ はい いいえ
ジャワ はい はい はい はい
Java - Spring Boot いいえ いいえ はい いいえ
Node.js はい はい はい はい
Python(プログラミング言語) はい はい はい はい
なし はい はい はい はい

既定の環境変数名またはアプリケーション プロパティとサンプル コード

コンピューティング サービスを Redis サーバーに接続するには、次の環境変数名とアプリケーション プロパティを使用します。 名前付け規則の詳細については、「Service Connector の内部構造」の記事を参照してください。

システム割り当てマネージド ID

既定の環境変数名 説明 値の例
AZURE_REDIS_HOST Redis エンドポイント <RedisName>.redis.cache.windows.net

サンプル コード

次の手順とコードは、システム割り当てマネージド ID を使って Redis に接続する方法を示しています。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. Service Connector によって設定された環境変数を使用して認証ロジックを追加します。 詳しくは、Microsoft.Azure.StackExchangeRedis 拡張機能のページを参照してください。

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
    

ユーザー割り当てマネージド ID

既定の環境変数名 説明 値の例
AZURE_REDIS_HOST Redis エンドポイント <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID マネージド ID のクライアント ID <client-ID>

サンプル コード

次の手順とコードは、ユーザー割り当てマネージド ID を使って Redis に接続する方法を示しています。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. Service Connector によって設定された環境変数を使用して認証ロジックを追加します。 詳しくは、Microsoft.Azure.StackExchangeRedis 拡張機能のページを参照してください。

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
    

接続文字列

警告

使用可能な最も安全な認証フローを使用することをお勧めします。 ここで示される認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID などのより安全なフローが実行可能ではない場合にのみ使用してください。

既定の環境変数名 説明 値の例
AZURE_REDIS_CONNECTIONSTRING StackExchange.Redis 接続文字列 <redis-server-name>.redis.cache.windows.net:6380,password=<redis-key>,ssl=True,defaultDatabase=0

サンプル コード

次の手順とコードは、接続文字列を使って Azure Cache for Redis に接続する方法を示しています。

  1. 依存関係をインストールします。

    dotnet add package StackExchange.Redis --version 2.6.122
    
  2. Service Connector によって追加された環境変数から接続文字列を取得します。

    using StackExchange.Redis;
    var connectionString = Environment.GetEnvironmentVariable("AZURE_REDIS_CONNECTIONSTRING");
    var _redisConnection = await RedisConnection.InitializeAsync(connectionString: connectionString);
    

サービス プリンシパル

既定の環境変数名 説明 値の例
AZURE_REDIS_HOST Redis エンドポイント <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID サービス プリンシパルのクライアント ID <client-ID>
AZURE_REDIS_CLIENTSECRET サービス プリンシパルのシークレット <client-secret>
AZURE_REDIS_TENANTID サービス プリンシパルのテナント ID <tenant-id>

サンプル コード

次の手順とコードは、サービス プリンシパルを使って Redis に接続する方法を示しています。

  1. 依存関係をインストールします。

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. Service Connector によって設定された環境変数を使用して認証ロジックを追加します。 詳しくは、Microsoft.Azure.StackExchangeRedis 拡張機能のページを参照してください。

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);