Бөлісу құралы:


Краткое руководство. Использование Кэша Azure для Redis с приложениями Python

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

Переход к коду на GitHub

Если вы хотите сразу перейти к коду, см. краткое руководство по Python на сайте GitHub.

Необходимые компоненты

Создание экземпляра кэша Azure для Redis

  1. Чтобы создать кэш, войдите на портал Azure и выберите Создать ресурс.

    Область навигации слева с выделенным элементом

  2. На странице "Начало работы" введите Кэш Azure для Redis в поле поиска. Затем выберите Создать.

    Снимок экрана: Azure Marketplace с Кэш Azure для Redis в поле поиска и создание выделено красное поле.

  3. На странице "Новый кэш Redis" настройте параметры кэша.

    Параметр Выберите значение Description
    Подписка Раскройте список и выберите нужную подписку. В этой подписке будет создан новый экземпляр кэша Redis для Azure.
    Группа ресурсов Раскройте список и выберите группу ресурсов или нажмите Создать и введите имя для новой группы ресурсов. Имя группы ресурсов, в которой будут созданы кэш и другие ресурсы. Поместив все ресурсы приложения в одну группу ресурсов, вы сможете легко управлять ими и/или удалить их вместе.
    DNS-имя Введите уникальное имя. Имя кэша должно быть строкой длиной от 1 до 63 символов и содержать только цифры, буквы и дефисы. Имя должно начинаться и заканчиваться цифрой или буквой и не может содержать более одного дефиса подряд. Имя узла экземпляра кэша <DNS-имя.redis.cache.windows.net>.
    Местонахождение Откройте список и выберите расположение. Выберите регион рядом с другими службами, используюющими кэш.
    Номер SKU кэша Раскрывающийся список и выберите номер SKU. Номер SKU определяет размер, производительность и параметры функций, доступные для кэша. Дополнительные сведения см. в обзоре предложения "Кэш Redis для Azure".
    Объем кэша Раскрывающийся список и выбор размера кэша Дополнительные сведения см. в обзоре предложения "Кэш Redis для Azure".
  4. Выберите вкладку Сети или нажмите кнопку Сети в нижней части страницы.

  5. На вкладке Сети выберите способ подключения.

  6. Нажмите кнопку "Далее" или нажмите кнопку "Далее" в нижней части страницы, чтобы просмотреть вкладку "Дополнительно".

    Снимок экрана: вкладка

    • Для кэшей "Базовый" или "Стандартный" переключите выбор порта, отличного от TLS. Вы также можете выбрать, нужно ли включить проверку подлинности Microsoft Entra.
    • Для кэша Premium настройте параметры для порта, не относяющегося к TLS, кластеризации, управляемому удостоверению и сохраняемости данных. Вы также можете выбрать, нужно ли включить проверку подлинности Microsoft Entra.

    Внимание

    Для оптимальной безопасности корпорация Майкрософт рекомендует использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к кэшу по возможности. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации общего ключа. Дополнительные сведения об использовании управляемых удостоверений с кэшами см. в разделе "Использование идентификатора Microsoft Entra для проверки подлинности кэша".

  7. Выберите вкладку Next: Tags (Далее: теги) или нажмите в нижней части страницы кнопку Next: Tags (Далее: теги).

  8. При необходимости на вкладке Теги введите имя и значение, чтобы классифицировать ресурс.

  9. Выберите Review + create (Просмотреть и создать). Вы будете перенаправлены на вкладку Проверка и создание, где Azure проверит вашу конфигурацию.

  10. Когда отобразится сообщение "Проверка пройдена" зеленого цвета, выберите Создать.

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

Установка библиотеки redis-py

Redis-py — это интерфейс Python для кэша Redis для Azure. Используйте средство пакетов Python, pipчтобы установить redis-py пакет из командной строки.

Следующий пример, используемый pip3 для установки redis-py Python 3 в Windows 11 из командной строки администратора.

Снимок экрана: терминал с установкой интерфейса redis-py для Кэш Azure для Redis.

Создание скрипта Python для доступа к кэшу

Создайте скрипт Python, в который используется идентификатор Microsoft Entra или ключи доступа для подключения к Кэш Azure для Redis. Мы рекомендуем использовать идентификатор Microsoft Entra.

Включение проверки подлинности идентификатора Microsoft Entra в кэше

Если у вас уже есть кэш, сначала необходимо проверить, включена ли проверка подлинности Microsoft Entra. Если нет, включите его. Мы рекомендуем использовать идентификатор Microsoft Entra для приложений.

  1. В портал Azure выберите экземпляр Кэш Azure для Redis, где вы хотите использовать проверку подлинности на основе токена Microsoft Entra.

  2. Выберите проверку подлинности в меню "Ресурс".

  3. Проверьте, установлен ли флажок включить проверку подлинности Microsoft Entra. В этом случае можно двигаться дальше.

  4. Выберите "Включить проверку подлинности Microsoft Entra" и введите имя допустимого пользователя. По умолчанию при нажатии кнопки "Сохранить" пользователь, который вы вводите, автоматически назначается политика доступа владельца данных. Вы также можете ввести управляемое удостоверение или субъект-службу для подключения к экземпляру кэша.

    Снимок экрана: проверка подлинности, выбранная в меню ресурсов, и проверка проверки подлинности Microsoft Entra.

  5. Всплывающее диалоговое окно отображает запрос на обновление конфигурации и информирование о том, что требуется несколько минут. Выберите Да.

    Внимание

    После завершения операции включения узлы в экземпляре кэша перезагружается для загрузки новой конфигурации. Мы рекомендуем выполнить эту операцию во время периода обслуживания или за пределами пиковых рабочих часов. Операция может занять до 30 минут.

Сведения об использовании идентификатора Microsoft Entra с Azure CLI см. на страницах ссылок для удостоверений.

Установка библиотеки проверки подлинности Майкрософт

  1. Установите библиотеку проверки подлинности Майкрософт (MSAL). Эта библиотека позволяет получать маркеры безопасности от удостоверений Майкрософт для проверки подлинности пользователей.

  2. Вы можете использовать клиентную библиотеку удостоверений Python Azure, которая использует MSAL для предоставления поддержки проверки подлинности маркеров. Установите эту библиотеку с помощью pip:

pip install azure-identity

Создание скрипта Python с помощью идентификатора Microsoft Entra

  1. Создайте текстовый файл, добавьте следующий скрипт и сохраните файл как PythonApplication1.py.

  2. Замените <Your Host Name> значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму <DNS name>.redis.cache.windows.net.

  3. Замените <Your Username> значения пользователем идентификатора Microsoft Entra.

    import redis
    from azure.identity import DefaultAzureCredential
    
    scope = "https://redis.azure.com/.default"
    host = "<Your Host Name>"
    port = 6380
    user_name = "<Your Username>"
    
    
    def hello_world():
        cred = DefaultAzureCredential()
        token = cred.get_token(scope)
        r = redis.Redis(host=host,
                        port=port,
                        ssl=True,    # ssl connection is required.
                        username=user_name,
                        password=token.token,
                        decode_responses=True)
        result = r.ping()
        print("Ping returned : " + str(result))
    
        result = r.set("Message", "Hello!, The cache is working with Python!")
        print("SET Message returned : " + str(result))
    
        result = r.get("Message")
        print("GET Message returned : " + result)
    
        result = r.client_list()
        print("CLIENT LIST returned : ")
        for c in result:
            print(f"id : {c['id']}, addr : {c['addr']}")
    
    if __name__ == '__main__':
        hello_world()
    
  4. Перед запуском кода Python из терминала убедитесь, что вы авторизуете терминал для использования идентификатора Microsoft Entra.

    azd auth login

  5. Запустите PythonApplication1.py с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.

    Снимок экрана: терминал, показывающий скрипт Python для тестирования доступа к кэшу.

Создание скрипта Python с помощью повторной проверки подлинности

Маркеры доступа к идентификатору Microsoft Entra имеют ограниченные сроки существования, в среднем 75 минут. Чтобы сохранить подключение к кэшу, необходимо обновить маркер. В этом примере показано, как это сделать с помощью Python.

  1. Создайте текстовый файл, добавьте следующий скрипт. Затем сохраните файл как PythonApplication2.py.

  2. Замените <Your Host Name> значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму <DNS name>.redis.cache.windows.net.

  3. Замените <Your Username> значения пользователем идентификатора Microsoft Entra.

    import time
    import logging
    import redis
    from azure.identity import DefaultAzureCredential
    
    scope = "https://redis.azure.com/.default"
    host = "<Your Host Name>"
    port = 6380
    user_name = "<Your Username>"
    
    def re_authentication():
        _LOGGER = logging.getLogger(__name__)
        cred = DefaultAzureCredential()
        token = cred.get_token(scope)
        r = redis.Redis(host=host,
                        port=port,
                        ssl=True,   # ssl connection is required.
                        username=user_name,
                        password=token.token,
                        decode_responses=True)
        max_retry = 3
        for index in range(max_retry):
            try:
                if _need_refreshing(token):
                    _LOGGER.info("Refreshing token...")
                    tmp_token = cred.get_token(scope)
                    if tmp_token:
                        token = tmp_token
                    r.execute_command("AUTH", user_name, token.token)
                result = r.ping()
                print("Ping returned : " + str(result))
    
                result = r.set("Message", "Hello!, The cache is working with Python!")
                print("SET Message returned : " + str(result))
    
                result = r.get("Message")
                print("GET Message returned : " + result)
    
                result = r.client_list()
                print("CLIENT LIST returned : ")
                for c in result:
                    print(f"id : {c['id']}, addr : {c['addr']}")
                break
            except redis.ConnectionError:
                _LOGGER.info("Connection lost. Reconnecting.")
                token = cred.get_token(scope)
                r = redis.Redis(host=host,
                                port=port,
                                ssl=True,   # ssl connection is required.
                                username=user_name,
                                password=token.token,
                                decode_responses=True)
            except Exception:
                _LOGGER.info("Unknown failures.")
                break
    
    
    def _need_refreshing(token, refresh_offset=300):
        return not token or token.expires_on - time.time() < refresh_offset
    
    if __name__ == '__main__':
        re_authentication()
    
  4. Запустите PythonApplication2.py с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.

    Снимок экрана: терминал, показывающий скрипт Python для тестирования доступа к кэшу.

    В отличие от первого примера, если срок действия маркера истекает, этот пример автоматически обновляет его.

Очистка ресурсов

Если вы хотите продолжить использовать ресурсы, созданные в этой статье, сохраните группу ресурсов.

В противном случае, если вы закончите работу с ресурсами, можно удалить созданную группу ресурсов Azure, чтобы избежать расходов.

Внимание

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы. Если вы создали ресурсы внутри существующей группы ресурсов, содержащей ресурсы, которые необходимо сохранить, можно удалить каждый ресурс по отдельности, а не удалить группу ресурсов.

Удаление группы ресурсов

  1. Войдите на портал Azure и щелкните Группы ресурсов.

  2. Выберите группу ресурсов, которую нужно удалить.

    Если существует множество групп ресурсов, используйте фильтр для любого поля... введите имя группы ресурсов, созданной для этой статьи. Выберите группу ресурсов в списке результатов.

    Снимок экрана: список групп ресурсов для удаления в рабочей области.

  3. Выберите команду Удалить группу ресурсов.

  4. Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и щелкните Удалить.

    Снимок экрана: форма, для которой требуется имя ресурса для подтверждения удаления.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.