Deel 5: Hoofd-app-afhankelijkheden, importinstructies en omgevingsvariabelen

Vorige deel: Implementatie van de hoofd-app

In deze sectie worden de Python-bibliotheken gecontroleerd die zijn geïmporteerd door de hoofdtoepassing en de omgevingsvariabelen die ervan afhankelijk zijn. Wanneer u de app in Azure implementeert, geeft u deze omgevingsvariabelen op via toepassingsinstellingen in Azure App Service.

Afhankelijkheden en importregels

De toepassing is afhankelijk van de volgende bibliotheken:

  • Flask: de web-API definiëren
  • aanvragen: de standaard Python HTTP-client voor het maken van uitgaande API-aanroepen
  • azure.identity: voor het verwerken van verificatie op basis van microsoft Entra ID-tokens
  • azure.keyvault.secrets: geheimen veilig ophalen uit Azure Key Vault
  • azure.storage.queue: interactie met Azure Queue Storage

Neem deze afhankelijkheden op in het requirements.txt-bestand van de app. Installeer ze tijdens de implementatie of lokale installatie.

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

Wanneer u de app implementeert in Azure App Service, worden deze vereisten automatisch op de hostserver geïnstalleerd. Wanneer u ze lokaal uitvoert, installeert u deze in uw omgeving met pip install -r requirements.txt.

Het codebestand begint met de vereiste importinstructies voor de onderdelen van de bibliotheken die in de code worden gebruikt:

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

Omgevingsvariabelen

De app-code is afhankelijk van deze vier omgevingsvariabelen:

Veranderlijk Waarde
THIRD_PARTY_API_ENDPOINT De URL van de API van derden, zoals https://msdocs-example-api.azurewebsites.net/api/RandomNumber beschreven in deel 3.
KEY_VAULT_URL De URL van de Azure Key Vault waarin u de toegangssleutel voor de API van derden hebt opgeslagen.
THIRD_PARTY_API_SECRET_NAME De naam van het geheim in Key Vault die de toegangssleutel voor de API van derden bevat.
STORAGE_QUEUE_URL De URL van een Azure Storage-wachtrij die u in Azure configureert, zoals https://msdocsexamplemainapp.queue.core.windows.net/code-requests (zie deel 4). Omdat de wachtrijnaam aan het einde van de URL is opgenomen, ziet u de naam nergens in de code.

Hoe u deze variabelen instelt, is afhankelijk van waar de code wordt uitgevoerd:

  • Wanneer u de code lokaal uitvoert, maakt u deze variabelen in de opdrachtshell die u gebruikt (zoals PowerShell, Bash of CMD). (Als u de app implementeert op een virtuele machine, maakt u vergelijkbare variabelen aan de serverzijde.) U kunt ook een bibliotheek zoals python-dotenv gebruiken, waarmee sleutel-waardeparen uit een .env-bestand worden gelezen en ingesteld als omgevingsvariabelen.

  • Wanneer u de code implementeert in Azure App Service, zoals wordt weergegeven in dit scenario, hebt u geen toegang tot de server zelf. Definieer in plaats daarvan toepassingsinstellingen met dezelfde namen in de App Service-configuratie. Deze instellingen maken de toepassing automatisch beschikbaar als omgevingsvariabelen.

De inrichtingsscripts maken deze instellingen met behulp van de opdracht Azure CLI. az webapp config appsettings set Stel alle vier de variabelen in met één opdracht.

Zie Een App Service-app configureren in Azure Portalom instellingen te maken via Azure Portal.

Wanneer u de code lokaal uitvoert, moet u ook omgevingsvariabelen opgeven die informatie bevatten over uw lokale service-principal. DefaultAzureCredential zoekt naar deze waarden. Wanneer deze worden geïmplementeerd in App Service, hoeft u deze waarden niet in te stellen omdat de door het systeem toegewezen beheerde identiteit van de app wordt gebruikt om te verifiëren.

Veranderlijk Waarde
AZURE_TENANT_ID De ID van de Microsoft Entra-tenant (directory).
AZURE_CLIENT_ID De client-id (toepassing) van een app-registratie in de tenant.
AZURE_CLIENT_SECRET Een clientgeheim dat u hebt gegenereerd voor de app-registratie.

Zie Python-apps verifiëren bij Azure-services tijdens lokale ontwikkeling met behulp van service-principalsvoor meer informatie.