Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.