Часть 5. Основные зависимости приложений, инструкции импорта и переменные среды

предыдущая часть: реализация основного приложения

В этом разделе рассматриваются библиотеки Python, импортированные основным приложением, и переменные среды, от которые она зависит. При развертывании приложения в Azure предоставьте эти переменные среды с помощью параметров приложения в Служба приложений Azure.

Зависимости и инструкции импорта

Приложение использует следующие библиотеки:

  • Flask — определение веб-API
  • запросы — стандартный HTTP-клиент Python для выполнения исходящих вызовов API
  • azure.identity — для обработки проверки подлинности на основе токена Microsoft Entra ID
  • azure.keyvault.secret — безопасное получение секретов из Azure Key Vault
  • azure.storage.queue — взаимодействие с хранилищем очередей Azure

Включите эти зависимости в файл приложения requirements.txt. Установите их во время развертывания или локальной установки.

flask
requests
azure.identity
azure.keyvault.secrets
azure.storage.queue

При развертывании приложения в Службе приложений Azure 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 URL-адрес стороннего API, например https://msdocs-example-api.azurewebsites.net/api/RandomNumber, описанный в части 3.
KEY_VAULT_URL URL-адрес Azure Key Vault, в котором хранится ключ доступа для стороннего API.
THIRD_PARTY_API_SECRET_NAME Имя секрета в Key Vault, содержащего ключ доступа для стороннего API.
STORAGE_QUEUE_URL URL-адрес очереди службы хранилища Azure, настроенной в Azure, например 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 Идентификатор клиента Microsoft Entra (каталог).
AZURE_CLIENT_ID Идентификатор клиента (приложения) регистрации приложения в арендаторе.
AZURE_CLIENT_SECRET Секрет клиента, который вы создали для регистрации приложения.

Дополнительные сведения см. в статье Аутентификация приложений Python в службах Azure во время локальной разработки с помощью субъектов-служб.