このセクションでは、メイン アプリケーションによってインポートされた Python ライブラリと、それが依存する環境変数を確認します。 アプリが Azure にデプロイされると、これらの環境変数は Azure App Service のアプリケーション設定を通じて提供されます。
依存関係およびインポートステートメント
アプリケーションは、次のライブラリに依存しています。
- Flask – Web API を定義する
- 要求 – 送信 API 呼び出しを行う標準の Python HTTP クライアント
- azure.identity – Microsoft Entra ID トークンベースの認証を処理する場合
- azure.keyvault.secrets – Azure Key Vault からシークレットを安全に取得するため
- azure.storage.queue – Azure Queue Storage と対話する
これらの依存関係はアプリの requirements.txt ファイルに含まれており、デプロイまたはローカルセットアップ中にインストールされます。
flask
requests
azure.identity
azure.keyvault.secrets
azure.storage.queue
アプリを Azure App Service にデプロイすると、Azure によってこれらの要件がホスト サーバーに自動的にインストールされます。 ローカルで実行する場合は、 pip install -r requirements.txt
を使用して環境にインストールします。
コード ファイルは、コードで使用されるライブラリの部分に必要な import ステートメントで始まります。
from flask import Flask, request, jsonify
import requests, random, string, os
from datetime import datetime
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
from azure.storage.queue import QueueClient
環境変数
アプリ コードは、次の 4 つの環境変数に依存します。
変数 | 価値 |
---|---|
THIRD_PARTY_API_ENDPOINT |
https://msdocs-example-api.azurewebsites.net/api/RandomNumber で説明されているなど、サード パーティ製 API の URL。 |
KEY_VAULT_URL | サードパーティ API のアクセス キーを格納した Azure Key Vault の URL。 |
THIRD_PARTY_API_SECRET_NAME | サードパーティ API のアクセス キーを含む Key Vault 内のシークレットの名前。 |
STORAGE_QUEUE_URL(ストレージキューのURL) |
https://msdocsexamplemainapp.queue.core.windows.net/code-requests など、Azure で構成する Azure Storage キューの URL (パート 4 を参照)。 キュー名は URL の末尾に含まれているため、コード内のどこにも名前が表示されません。 |
これらの変数を設定する方法は、コードが実行されている場所によって異なります。
コードをローカルで実行するときは、使用しているコマンド シェル (PowerShell、Bash、CMD など) 内にこれらの変数を作成します。 (アプリを仮想マシンにデプロイする場合は、同様のサーバー側変数を作成します)。.env ファイルからキーと値のペアを読み取り、環境変数として設定する python-dotenv などのライブラリを使用することもできます。
このチュートリアルに示すように、コードが Azure App Service にデプロイされると、サーバー自体にアクセスすることはできません。 代わりに、App Service 構成で同じ名前の アプリケーション設定 を定義します。 これらの設定は、環境変数としてアプリケーションに自動的に公開されます。
プロビジョニング スクリプトでは、 az webapp config appsettings set
Azure CLI コマンドを使用してこれらの設定が作成されます。 4 つの変数はすべて、1 つのコマンドで設定されます。
Azure portal を使用して設定を作成するには、Azure portal での App Service アプリの構成に関するページを参照してください。
コードをローカルで実行する場合は、ローカル サービス プリンシパルに関する情報を含む環境変数も指定する必要があります。
DefaultAzureCredential
は、これらの値を探します。 App Service にデプロイする場合、認証にアプリのシステム割り当てマネージド ID が使用されるため、これらの値を設定する必要はありません。
変数 | 価値 |
---|---|
AZURE_TENANT_ID | Microsoft Entra テナント (ディレクトリ) ID。 |
AZURE_CLIENT_ID | テナント内のアプリ登録のクライアント (アプリケーション) ID。 |
AZURE_CLIENT_SECRET(Azure クライアントシークレット) | アプリ登録用に生成されたクライアント シークレット。 |
詳細については、 サービス プリンシパルを使用したローカル開発時の Azure サービスに対する Python アプリの認証に関するページを参照してください。