本部分介绍主应用程序导入的 Python 库及其所依赖的环境变量。 将应用部署到 Azure 时,这些环境变量将通过 Azure 应用服务中的应用程序设置提供。
依赖关系和导入语句
应用程序依赖于以下库:
- Flask – 定义 Web API
- requests – Python HTTP 标准客户端,用于发出 API 调用
- azure.identity – 用于处理 Microsoft Entra ID 令牌的身份验证
- azure.keyvault.secrets – 从 Azure Key Vault 安全地检索机密
- azure.storage.queue - 与 Azure 队列存储交互
这些依赖项包含在应用的 requirements.txt 文件中,并在部署或本地安装过程中安装。
flask
requests
azure.identity
azure.keyvault.secrets
azure.storage.queue
将应用部署到 Azure 应用服务时,Azure 会自动在主机服务器上安装这些要求。 在本地运行时,可以在您的环境中使用 pip install -r requirements.txt 安装它们。
代码文件以代码中使用的库部分所需的导入语句开头:
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
环境变量
应用代码依赖于以下四个环境变量:
| 变量 | 价值 |
|---|---|
| THIRD_PARTY_API_ENDPOINT | 第三方 API 的 URL,如https://msdocs-example-api.azurewebsites.net/api/RandomNumber第 3 部分中所述。 |
| KEY_VAULT_URL | 您存储第三方 API 访问密钥的 Azure Key Vault 的 URL。 |
| THIRD_PARTY_API_SECRET_NAME (第三方API密钥名称) | Key Vault 中包含第三方 API 访问密钥的机密的名称。 |
| STORAGE_QUEUE_URL | 在 Azure 中配置的 Azure 存储队列的 URL,例如 https://msdocsexamplemainapp.queue.core.windows.net/code-requests (请参阅 第 4 部分)。 由于队列名称包含在 URL 的末尾,因此代码中的任何位置都看不到该名称。 |
设置这些变量的方式取决于代码的运行位置:
在本地运行代码时,可以在所使用的任何命令行界面(例如 PowerShell、Bash 或 CMD)中创建这些变量。 (如果将应用部署到虚拟机,将创建类似的服务器端变量。还可以使用 python-dotenv 等库,该库从 .env 文件读取键值对,并将其设置为环境变量
将代码部署到 Azure 应用服务时,如本演练所示,你无权访问服务器本身。 而是在应用服务配置中定义具有相同名称 的应用程序设置 。 这些设置作为环境变量自动公开给应用程序。
预配脚本使用 Azure CLI 命令 az webapp config appsettings set创建这些设置。 所有四个变量都使用单个命令进行设置。
若要通过 Azure 门户创建设置,请参阅 Azure 门户中配置应用服务应用。
在本地运行代码时,还需要指定包含有关本地服务主体信息的环境变量。
DefaultAzureCredential 查找这些值。 部署到应用服务时,您无需设置这些值,因为应用系统分配的托管标识会用于身份验证。
| 变量 | 价值 |
|---|---|
| AZURE_TENANT_ID (Azure租户ID) | Microsoft Entra 租户(目录)ID。 |
| AZURE_CLIENT_ID | 租户中应用注册的客户端(应用程序)ID。 |
| AZURE_CLIENT_SECRET | 为应用注册生成的客户端密码。 |
有关详细信息,请参阅 使用服务主体在本地开发期间向 Azure 服务验证 Python 应用。