Condividi tramite


Parte 5: Dipendenze principali dell'app, istruzioni di importazione e variabili di ambiente

parte precedente: implementazione principale dell'app

Questa sezione esamina le librerie Python importate dall'applicazione principale e le variabili di ambiente da cui dipende. Quando l'app viene distribuita in Azure, queste variabili di ambiente vengono fornite tramite Impostazioni applicazione nel servizio app di Azure.

Dipendenze e istruzioni di importazione

L'applicazione si basa sulle librerie seguenti:

  • Flask: per definire l'API Web
  • requests: il client HTTP Python standard per l'esecuzione di chiamate API in uscita
  • azure.identity: per la gestione dell'autenticazione basata su token di Microsoft Entra ID
  • azure.keyvault.secrets: per recuperare in modo sicuro i segreti da Azure Key Vault
  • azure.storage.queue: per interagire con Archiviazione di code di Azure

Queste dipendenze sono incluse nel file requirements.txt dell'app e vengono installate durante la distribuzione o l'installazione locale.

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

Quando si distribuisce l'app nel servizio app di Azure, Azure installa automaticamente questi requisiti nel server host. Quando vengono eseguiti in locale, è possibile installarli nell'ambiente con pip install -r requirements.txt.

Il file di codice inizia con le istruzioni import necessarie per le parti delle librerie usate nel codice:

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

Variabili di ambiente

Il codice dell'app dipende da queste quattro variabili di ambiente:

Variabile Valore
PUNTO_DI_ACCESSO_API_DI_TERZE_PARTI URL dell'API di terze parti, ad esempio https://msdocs-example-api.azurewebsites.net/api/RandomNumber descritto in parte 3.
KEY_VAULT_URL URL dell'Azure Key Vault in cui hai memorizzato la chiave di accesso per l'API di terze parti.
THIRD_PARTY_API_SECRET_NAME Nome del segreto in Key Vault che contiene la chiave di accesso per l'API di terze parti.
STORAGE_QUEUE_URL URL di una coda di archiviazione di Azure configurata in Azure, ad esempio https://msdocsexamplemainapp.queue.core.windows.net/code-requests (vedere la parte 4). Poiché il nome della coda è incluso alla fine dell'URL, non lo si vede da nessuna parte nel codice.

La modalità di impostazione di queste variabili dipende dalla posizione in cui è in esecuzione il codice:

  • Quando si esegue il codice in locale, queste variabili vengono create all'interno della shell dei comandi in uso, ad esempio PowerShell, Bash o CMD. Se si distribuisce l'app in una macchina virtuale, si creerebbero variabili simili sul lato server. È anche possibile usare una libreria come python-dotenv, che legge coppie chiave-valore da un file con estensione env e le imposta come variabili di ambiente

  • Quando il codice viene distribuito nel servizio app di Azure, come illustrato in questa procedura dettagliata, non si ha accesso al server stesso. Definire invece le impostazioni dell'applicazione con gli stessi nomi nella configurazione del servizio app. Queste impostazioni vengono esposte automaticamente all'applicazione come variabili di ambiente.

Gli script di provisioning generano queste impostazioni utilizzando il comando di Azure CLI az webapp config appsettings set. Tutte e quattro le variabili vengono impostate con un singolo comando.

Per creare impostazioni tramite il portale di Azure, vedere Configurare un'app del servizio app nel portale di Azure.

Quando si esegue il codice in locale, è anche necessario specificare le variabili di ambiente che contengono informazioni sull'entità servizio locale. DefaultAzureCredential cerca questi valori. Quando viene distribuita nel servizio app, non è necessario impostare questi valori perché viene usata l'identità gestita assegnata dal sistema dell'app per l'autenticazione.

Variabile Valore
AZURE_TENANT_ID ID tenant di Microsoft Entra (directory).
AZURE_CLIENT_ID ID cliente (applicazione) di una registrazione di un'applicazione nel tenant.
AZURE_CLIENT_SECRET Segreto client generato per la registrazione dell'app.

Per altre informazioni, vedere Autenticare le app Python nei servizi di Azure durante lo sviluppo locale usando le entità servizio.