クイックスタート: Python で Azure Cache for Redis を使用する
このクイックスタートでは、Azure 内の任意のアプリケーションからアクセスできるセキュリティで保護された専用キャッシュにアクセスするために、Azure Cache for Redis を Python スクリプトに組み込みます。
GitHub のコードにスキップする
この記事をスキップしてすぐにコードをご覧になりたい方は、GitHub にある Python のクイックスタートを参照してください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成する
- Python 3
- macOS または Linux の場合は、python.org からダウンロードします。
- Windows 11 の場合は、Microsoft Store を使用します。
Azure Cache for Redis インスタンスを作成する
キャッシュを作成するには、Azure portal にサインインし、 [リソースの作成] を選択します。
[開始] ページ上で、検索ボックス内に「Azure Cache for Redis」と入力します。 次に、[作成] を選択します。
[新規 Redis Cache] ページ上で、キャッシュの設定を構成します。
設定 値を選択する 説明 サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この新しい Azure Cache for Redis インスタンスが作成されるサブスクリプション。 リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にキャッシュやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。 DNS 名 一意の名前を入力します。 キャッシュ名は 1 から 63 文字の文字列で、数字、英字、ハイフンのみを使用する必要があります。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は、<DNS name>.redis.cache.windows.net です。 場所 ドロップ ダウンで場所を選択します。 キャッシュを使用する他のサービスの近くのリージョンを選択します。 キャッシュ SKU ドロップダウンで SKU を選択します。 SKU によって、このキャッシュに使用できるサイズ、パフォーマンス、機能のパラメーターが決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。 キャッシュ サイズ ドロップダウンでキャッシュのサイズを選択します 詳細については、Azure Cache for Redis の概要に関するページを参照してください。 [ネットワーク] タブを選択するか、ページの下部にある [ネットワーク] ボタンを選択します。
[ネットワーク] タブで、接続方法を選択します。
[次へ: 詳細設定] タブを選択するか、ページの下部にある [次へ: 詳細設定] ボタンを選択して、[詳細設定] タブを表示します。
- Basic または Standard キャッシュを利用する場合は、非 TLS ポートの選択をオンにします。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
- Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
重要
最適なセキュリティを実現するために、Microsoft では、可能な限り Microsoft Entra ID とマネージド ID を使用してキャッシュに対する要求を認可することをお勧めします。 Microsoft Entra ID とマネージド ID を使った認可によって、共有キー認可よりもセキュリティが向上し、使いやすくなります。 キャッシュでマネージド ID を使用する方法の詳細については、「キャッシュ認証に Microsoft Entra ID を使用する」を参照してください。
ページの下部にある [次へ: タグ] タブを選択するか、ページの下部にある [次へ: タグ] ボタンを選択します。
必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。
[Review + create](レビュー + 作成) を選択します。 [確認および作成] タブが表示され、Azure によって構成が検証されます。
緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。
キャッシュが作成されるまで、しばらく時間がかかります。 Azure Cache for Redis の [概要] ページで進行状況を監視できます。 [状態] に "実行中" と表示されている場合は、キャッシュを使用する準備ができています。
redis-py ライブラリをインストールする
redis-py は、Azure Cache for Redis の Python インターフェイスです。 Python パッケージ ツールの pip
を使用して、コマンド プロンプトから redis-py
パッケージをインストールします。
次の例では、Python 3 の pip3
を使用して、管理者コマンド プロンプトから Windows 11 に redis-py
をインストールしました。
キャッシュにアクセスするための Python スクリプトを作成する
Microsoft Entra ID またはアクセス キーを使用して Azure Cache for Redis に接続する Python スクリプトを作成します。 Microsoft Entra ID の使用をお勧めします。
キャッシュで Microsoft Entra ID の認証を有効にする
既にキャッシュがある場合は、まず Microsoft Entra 認証が有効になっているかどうかを確認します。 そうでない場合は、有効にします。 アプリケーションには Microsoft Entra ID を使用することをお勧めします。
Azure portal で、Microsoft Entra トークンベースの認証を使用する対象の Azure Cache for Redis インスタンスを選択します。
リソース メニューで [認証] を選択します。
作業ペインで、[Microsoft Entra 認証を有効にする] がオンになっているかどうかを確認します。 その場合は、次に進みます。
[Enable Microsoft Entra 認証] を選択し、有効なユーザー名を入力します。 [保存] を選択した場合は、既定で入力したユーザーに [データ所有者アクセス ポリシー] が自動的に割り当てられます。 マネージド ID またはサービス プリンシパルを入力して、キャッシュ インスタンスに接続することもできます。
構成を更新するかどうか確認するポップアップ ダイアログ ボックスが表示されて、数分かかることが通知されます。 [はい] を選択します。
重要
有効化の操作が完了すると、キャッシュ インスタンス内のノードが再起動して新しい構成が読み込まれます。 そのため、この操作はメンテナンス期間中またはピーク営業時間外に実行することをお勧めします。 この操作には最大 30 分かかることがあります。
Azure CLI で Microsoft Entra ID を使用する方法については、ID のリファレンス ページを参照してください。
Microsoft 認証ライブラリをインストールする
Microsoft 認証ライブラリ (MSAL) をインストールします。 このライブラリを使用すると、Microsoft ID からセキュリティ トークンを取得してユーザーを認証できます。
MSAL を使用してトークン認証サポートを提供する、Python Azure ID クライアント ライブラリを使用できます。
pip
を使用して、このライブラリをインストールします。
pip install azure-identity
Microsoft Entra ID を使用して Python スクリプトを作成する
新しいテキスト ファイルを作成し、次のスクリプトを追加して、ファイルを
PythonApplication1.py
として保存します。<Your Host Name>
を Azure Cache for Redis インスタンスの値に置き換えます。 ホスト名は、<DNS name>.redis.cache.windows.net
の形式になります。<Your Username>
を Microsoft Entra ID ユーザーの値に置き換えます。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()
ターミナルから Python コードを実行する前に、ターミナルで Microsoft Entra ID を使用することを認可していることを確認します。
azd auth login
Python で
PythonApplication1.py
を実行します。 次の例のような結果が表示されるはずです。
再認証を使用した Python スクリプトの作成
Microsoft Entra ID アクセス トークンの有効期限は限られており、平均 75 分です。 キャッシュへの接続を維持するには、トークンを更新する必要があります。 この例では、Python を使用してこれを行う方法を示します。
新しいテキスト ファイルを作成し、次のスクリプトを追加します。 次に、ファイルを
PythonApplication2.py
として保存します。<Your Host Name>
を Azure Cache for Redis インスタンスの値に置き換えます。 ホスト名は、<DNS name>.redis.cache.windows.net
の形式になります。<Your Username>
を Microsoft Entra ID ユーザーの値に置き換えます。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()
Python で
PythonApplication2.py
を実行します。 次の例のような結果が表示されるはずです。最初の例とは異なり、トークンの有効期限が切れた場合、この例ではトークンが自動的に更新されます。
リソースをクリーンアップする
この記事で作成したリソースを引き続き使用する場合は、リソース グループを保持します。
それ以外の場合、リソースを使い終わったら、課金されないように、作成した Azure リソース グループを削除できます。
重要
リソース グループを削除すると、元に戻すことができません。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 リソースを既存のリソース グループ内に作成し、そのリソース グループ内に保持したいリソースが含まれている場合は、リソース グループを削除するのではなく、各リソースを個別に削除できます。
リソース グループを削除するには
Azure portal にサインインし、 [リソース グループ] を選択します。
削除するリソース グループを選択します。
多数のリソース グループがある場合は、[任意のフィールドのフィルター...] ボックスを使用し、この記事用に作成したリソース グループの名前を入力します。 結果リストでリソース グループを選びます。
[リソース グループの削除] を選択します。
リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、[削除] を選択します。
しばらくすると、リソース グループとそのリソースのすべてが削除されます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示