通过


第 5 部分:主要应用依赖项、导入语句和环境变量

上一部分:主要应用实现

本部分介绍主应用程序导入的 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 应用