次の方法で共有


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

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

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

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

  • Azure App Service
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

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

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

クライアント タイプ システム割り当てマネージド ID ユーザー割り当てマネージド ID シークレット/接続文字列 サービス プリンシパル
.NET はい イエス イエス はい
Go いいえ 番号 有効 いいえ
Java はい イエス イエス はい
Java - Spring Boot いいえ 番号 有効 いいえ
Node.js はい イエス イエス はい
Python はい イエス イエス はい
なし 有効 イエス イエス はい

Go と Java - Spring Boot を除くすべてのクライアントの種類では、Service Connector を使用して Azure Cache for Redis に接続するために、テーブルで参照されている任意の認証方法を使用できます。 Go と Java - Spring Boot でサポートされている認証方法は、シークレット/接続文字列またはサービス プリンシパルのみです。

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

コンピューティング サービスを 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. サービス コネクタによって設定された環境変数を使用する認証ロジックを追加します。 詳しくは、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. サービス コネクタによって設定された環境変数を使用する認証ロジックを追加します。 詳しくは、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. サービス コネクタによって設定された環境変数を使用する認証ロジックを追加します。 詳しくは、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);