Поделиться через


Интеграция Кэша Azure для Redis с помощью соединителя сервисов

Вы можете подключить Кэш Azure для Redis к другим облачным службам с помощью соединителя служб. В этой статье описаны поддерживаемые методы проверки подлинности и клиенты, а также пример кода. Кроме того, при создании подключения к службе отображаются имена и значения переменных среды по умолчанию (или конфигурация Spring Boot).

Поддерживаемые службы вычислений

Соединитель служб можно использовать для подключения следующих вычислительных служб к Кэш Azure для Redis:

  • Служба приложений Azure
  • Приложения-контейнеры Azure
  • Функции Azure
  • Служба Azure Kubernetes (AKS)
  • Azure Spring Apps

Поддерживаемые типы проверки подлинности и клиентов

В следующей таблице показано, какие сочетания методов проверки подлинности и клиентов поддерживаются для подключения вычислительной службы к Кэш Azure для Redis с помощью соединителя служб. "Да" означает, что сочетание поддерживается. "Нет" означает, что он не поддерживается.

Тип клиента Управляемое удостоверение, назначаемое системой Управляемое удостоверение, назначаемое пользователем Секрет / строка подключения Субъект-служба
.NET Да Да Да Да
Go No No Да Нет
Java Да Да Да Да
Java — Spring Boot No No Да Нет
Node.js Да Да Да Да
Python Да Да Да Да
Не допускается Да Да Да Да

Все типы клиентов, кроме Go и Java — Spring Boot, могут использовать любой из методов проверки подлинности, на которые ссылается таблица, для подключения к Кэш Azure для Redis с помощью соединителя службы. Единственными поддерживаемыми методами проверки подлинности для Go и Java — Spring Boot являются секрет/ строка подключения или субъект-служба.

Имена переменных среды по умолчанию или свойства приложения и пример кода

Используйте следующие имена переменных среды и свойства приложения для подключения вычислительных служб к серверу Redis. Дополнительные сведения о соглашениях об именовании см . в статье внутренних соединителей служб.

Управляемое удостоверение, назначаемое системой

Имя переменной среды по умолчанию Description Пример значения
AZURE_REDIS_HOST Конечная точка Redis <RedisName>.redis.cache.windows.net

Пример кода

В следующих шагах и коде показано, как использовать управляемое удостоверение, назначаемое системой, для подключения к 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);
    

Управляемое удостоверение, назначаемое пользователем

Имя переменной среды по умолчанию Description Пример значения
AZURE_REDIS_HOST Конечная точка Redis <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID Идентификатор клиента управляемого удостоверения <client-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);
    

Connection string

Предупреждение

Рекомендуется использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный здесь, требует очень высокой степени доверия к приложению и несет риски, которые не присутствуют в других потоках. Этот поток следует использовать только в том случае, если более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.

Имя переменной среды по умолчанию Description Пример значения
AZURE_REDIS_CONNECTIONSTRING StackExchange.Redisстрока подключения <redis-server-name>.redis.cache.windows.net:6380,password=<redis-key>,ssl=True,defaultDatabase=0

Пример кода

В следующих шагах и коде показано, как использовать строка подключения для подключения к Кэш Azure для Redis.

  1. Установите зависимости.

    dotnet add package StackExchange.Redis --version 2.6.122
    
  2. Получите строка подключения из переменной среды, добавленной соединителем службы.

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

Субъект-служба

Имя переменной среды по умолчанию Description Пример значения
AZURE_REDIS_HOST Конечная точка Redis <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID Идентификатор клиента субъекта-службы <client-ID>
AZURE_REDIS_CLIENTSECRET Секрет субъекта-службы. <client-secret>
AZURE_REDIS_TENANTID Идентификатор арендатора для субъекта-службы. <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);