チュートリアル: Python で動的な構成を使用する
Azure App Configuration Python プロバイダーには、組み込みのキャッシュと更新の機能が含まれています。 このチュートリアルでは、Python アプリケーションで動的構成を有効にする方法について説明します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料で作成できます。
- Azure App Configuration ストア。 ストアを作成する。
- Python 3.8 以降 - Windows での Python の設定について詳しくは、Windows での Python に関するドキュメントをご覧ください
キーと値を追加する
Azure App Configuration ストアに次のキーと値を追加します。 Azure portal または CLI を使用してストアにキーと値を追加する方法の詳細については、キーと値の作成に関する記事を参照してください。
キー | 値 | Label | Content type |
---|---|---|---|
message | Hello World! | 空のままにします | 空のままにします |
sentinel | 1 | 空のままにします | 空のままにします |
Note
''センチネル キー'' は、他のすべてのキーの変更を完了した後に更新するキーです。 センチネル キーをアプリで監視してください。 変更が検出されると、アプリによって構成の値がすべて更新されます。 このアプローチは、アプリの構成の一貫性を確保するのに役立ち、すべてのキーの変更を監視する場合と比べると、Azure App Configuration ストアに対して行う全体的な要求の数が少なくなります。
コンソール アプリケーション
app.py という名前の新しい Python ファイルを作成し、次のコードを追加します:
DefaultAzureCredential
を使って、App Configuration ストアに対する認証を行います。 手順に従って、資格情報に App Configuration データ閲覧者ロールを割り当てます。 アプリケーションを実行する前に、アクセス許可が伝わるのに十分な時間をおいてください。from azure.appconfiguration.provider import load, WatchKey from azure.identity import DefaultAzureCredential import os import time endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT") # Connecting to Azure App Configuration using connection string # Setting up to refresh when the Sentinel key is changed. config = load( endpoint=endpoint, credential=DefaultAzureCredential(), refresh_on=[WatchKey("sentinel")], refresh_interval=10, # Default value is 30 seconds, shorted for this sample ) print("Update the `message` in your Azure App Configuration store using Azure portal or CLI.") print("First, update the `message` value, and then update the `sentinel` key value.") while (True): # Refreshing the configuration setting config.refresh() # Current value of message print(config["message"]) # Waiting before the next refresh time.sleep(5)
スクリプトを実行します:
python app.py
出力を確認します:
Update the `message` in your Azure App Configuration store using Azure portal or CLI. First, update the `message` value, and then update the `sentinel` key value. Hello World!
Azure App Configuration ストアに対して次のキーと値を更新します。
Key 値 Label Content type message Hello World が更新されました。 空のままにします 空のままにします sentinel 2 空のままにします 空のままにします 値が更新されると、更新間隔が経過すると更新された値が出力されます。
Hello World Refreshed!
Web アプリケーション
次の例は、更新可能な構成値を使用するように既存の Web アプリケーションを更新する方法を示しています。 コールバックは、load
関数の on_refresh_success
キーワード引数に指定できます。 このコールバックは、サーバーで構成の変更が検出されたときに呼び出され、アプリケーションの構成値を更新するために使用できます。
app.py
で、構成値を読み込むように Azure App Configuration を設定します。 次に、エンドポイントを更新して、更新された構成値を確認します。
from azure.appconfiguration.provider import load, WatchKey
from azure.identity import DefaultAzureCredential
azure_app_config = None # declare azure_app_config as a global variable
def on_refresh_success():
app.config.update(azure_app_config)
global azure_app_config
azure_app_config = load(endpoint=os.environ.get("AZURE_APPCONFIG_ENDPOINT"),
credential=DefaultAzureCredential(),
refresh_on=[WatchKey("sentinel")],
on_refresh_success=on_refresh_success,
refresh_interval=10, # Default value is 30 seconds, shortened for this sample
)
@app.route("/")
def index():
global azure_app_config
# Refresh the configuration from Azure App Configuration service.
azure_app_config.refresh()
# Access a configuration setting directly from within Flask configuration
print("Request for index page received")
context = {}
context["message"] = app.config.get("message")
return render_template("index.html", **context)
新しい構成値を使用するようにテンプレート index.html
を更新します。
<!doctype html>
<head>
<title>Hello Azure App Configuration - Python Flask Example</title>
</head>
<html>
<body>
<main>
<div>
<h1>{{message}}</h1>
</div>
</main>
</body>
</html>
完全なサンプル プロジェクトはこちらから参照できます。
これらのエンドポイントがトリガーされるたびに、最新の構成値が使用されていることを確認するための更新チェックを実行できます。 更新間隔が経過していない場合、または更新が既に進行中の場合、チェックはすぐに返されます。
更新が完了すると、すべての値が一度に更新されるため、構成は常にオブジェクト内で一貫しています。
注: 更新間隔が経過していない場合、更新は試行されないため、すぐに返されます。
次のステップ
このチュートリアルでは、Azure App Configuration から動的に構成設定を更新できるように Python アプリを設定しました。 Azure App Configuration へのアクセスを効率化する Azure マネージド ID を使用する方法については、次のチュートリアルに進んでください。