Avvio rapido: creare una funzione Python in Azure dalla riga di comando
In questo articolo vengono usati gli strumenti da riga di comando per creare una funzione Python che risponde alle richieste HTTP. Dopo aver testato il codice in locale, verrà distribuito nell'ambiente serverless di Funzioni di Azure.
Questo articolo usa il modello di programmazione Python v2 per Funzioni di Azure, che fornisce un approccio basato su decorator per la creazione di funzioni. Per ulteriori informazioni sul modello di programmazione Python v2, vedere la Guida di riferimento per gli sviluppatori
Le procedure illustrate in questa guida di avvio rapido comportano l'addebito di qualche centesimo (USD) o meno nell'account Azure.
È inoltre disponibile una versione basata su Visual Studio Code di questo articolo.
Configurare l'ambiente locale
Prima di iniziare, è necessario disporre dei requisiti seguenti:
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Uno degli strumenti seguenti per la creazione di risorse di Azure:
Interfaccia della riga di comando di Azure 2.4 o versione successiva.
Il modulo Azure Az PowerShell versione 5.9.0 o successiva.
Emulatore di archiviazione di Azurite. Anche se è possibile usare un account di archiviazione di Azure effettivo, l'articolo presuppone che si stia usando questo emulatore.
Installare gli strumenti di base per Funzioni di Azure
Il modo consigliato per installare Core Tools dipende dal sistema operativo del computer di sviluppo locale.
La procedura seguente usa un programma di installazione di Windows per installare Core Tools v4.x. Per altre informazioni su altri programmi di installazione basati su pacchetti, vedere il file leggimi Core Tools.
Scaricare ed eseguire il programma di installazione di Core Tools, in base alla versione di Windows:
- v4.x - Windows a 64 bit (scelta consigliata. Il debug di Visual Studio Code richiede 64 bit).
- v4.x - Windows 32-bit
Se in precedenza è stato usato Windows Installer (MSI) per installare Core Tools in Windows, è necessario disinstallare la versione precedente da Installazione applicazioni prima di installare la versione più recente.
Usare il comando func --version
per assicurarsi che la versione di Core Tools sia almeno 4.0.5530
.
Creare e attivare un ambiente virtuale
In una cartella appropriata eseguire i comandi seguenti per creare e attivare un ambiente virtuale denominato .venv
. Assicurarsi di usare una versione di Python supportata da Funzioni di Azure.
python -m venv .venv
source .venv/bin/activate
Se Python non ha installato il pacchetto venv nella distribuzione Linux, eseguire il comando seguente:
sudo apt-get install python3-venv
È possibile eseguire tutti i comandi successivi in questo ambiente virtuale attivato.
Creare una funzione locale
In Funzioni di Azure un progetto di funzione è un contenitore per una o più funzioni singole che rispondono ognuna a un trigger specifico. Tutte le funzioni di un progetto condividono le stesse configurazioni locali e di hosting.
In questa sezione si crea un progetto di funzione e si aggiunge una funzione di trigger HTTP.
Eseguire il comando
func init
come indicato di seguito per creare un progetto di funzioni Python v2 nell'ambiente virtuale.func init --python
L'ambiente contiene ora vari file per il progetto, inclusi i file di configurazione denominati local.settings.json e host.json. Poiché local.settings.json può contenere segreti scaricati da Azure, per impostazione predefinita il file viene escluso dal controllo del codice sorgente nel file con estensione gitignore.
Aggiungere una funzione al progetto usando il comando seguente, in cui l'argomento
--name
è il nome univoco della funzione (HttpExample) e l'argomento--template
specifica il trigger della funzione (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
Se richiesto, scegliere l'opzione ANONIMO.
func new
aggiunge un endpoint trigger HTTP denominatoHttpExample
al filefunction_app.py
, il quale è accessibile senza autenticazione.
Eseguire la funzione in locale
Eseguire la funzione avviando l'host di runtime locale di Funzioni di Azure nella cartella LocalFunctionProj.
func start
Verso la fine dell'output, devono essere visualizzate le righe seguenti:
Nota
Se HttpExample non viene visualizzato come illustrato sopra, è probabile che l'host non sia stato avviato dalla cartella radice del progetto. In tal caso, premere CTRL+C per arrestare l'host, andare alla cartella radice del progetto ed eseguire di nuovo il comando precedente.
Copiare l'URL della funzione HTTP da questo output in un browser e aggiungere la stringa di query
?name=<YOUR_NAME>
, rendendo l'URL completo comehttp://localhost:7071/api/HttpExample?name=Functions
. Il browser dovrebbe visualizzare un messaggio di risposta che restituisce il valore della stringa di query. Il terminale in cui è stato avviato il progetto mostra anche l'output del log quando si effettuano le richieste.Al termine, premere CTRL+C e digitare
y
per arrestare l'host delle funzioni.
Creare le risorse di Azure di supporto per la funzione
Prima di distribuire il codice della funzione in Azure, è necessario creare tre risorse:
- Un gruppo di risorse, ovvero un contenitore logico di risorse correlate.
- Un account di archiviazione, che mantiene lo stato e altre informazioni sui progetti.
- Un'app per le funzioni, che fornisce l'ambiente per l'esecuzione del codice della funzione. Un'app per le funzioni si collega al progetto di funzione locale e consente di raggruppare le funzioni come un'unità logica per semplificare la gestione, la distribuzione e la condivisione di risorse.
Usare i comandi seguenti per creare questi elementi. Sono supportati sia l'interfaccia della riga di comando di Azure che PowerShell.
Se necessario, accedere ad Azure.
az login
Il comando
az login
consente di accedere all'account Azure.Creare un gruppo di risorse denominato
AzureFunctionsQuickstart-rg
nell'area scelta.az group create --name AzureFunctionsQuickstart-rg --location <REGION>
Il comando az group create crea un gruppo di risorse. Nel comando precedente sostituire
<REGION>
con un'area vicina usando un codice di area disponibile restituito dal comando az account list-locations.Nota
Non è possibile ospitare app Windows e Linux nello stesso gruppo di risorse. Se si dispone d un gruppo di risorse esistente denominato
AzureFunctionsQuickstart-rg
con un'app per le funzioni Windows o un'app Web, sarà necessario usare un gruppo di risorse diverso.Creare un account di archiviazione per utilizzo generico nel gruppo di risorse e nell'area.
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
Il comando az storage account create crea l'account di archiviazione.
Nell'esempio precedente sostituire
<STORAGE_NAME>
con un nome appropriato e univoco in Archiviazione di Azure. I nomi devono contenere da tre a 24 caratteri costituiti esclusivamente da numeri e lettere in minuscolo.Standard_LRS
specifica un account per utilizzo generico supportato da Funzioni.Per questo argomento di avvio rapido, il costo dell'account di archiviazione è solo di pochi centesimi di dollaro USA.
Creare l'app per le funzioni in Azure.
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime python --runtime-version <PYTHON_VERSION> --functions-version 4 --name <APP_NAME> --os-type linux --storage-account <STORAGE_NAME>
Il comando az functionapp create crea l'app per le funzioni in Azure. È necessario specificare
--os-type linux
perché le funzioni Python vengono eseguite solo in Linux.Nell'esempio precedente, sostituire
<APP_NAME>
con un nome di app univoco a livello globale appropriato.<APP_NAME>
è anche il sottodominio predefinito per l'app per le funzioni. Assicurarsi che il valore impostato per<PYTHON_VERSION>
sia una versione supportata da Funzioni e che sia la stessa versione usata durante lo sviluppo locale.Questo comando crea un'app per le funzioni che esegue il runtime del linguaggio specificato nel Piano a consumo di Funzioni di Azure, che è gratuito per la quantità di utilizzo prevista in questo argomento. Il comando crea anche un'istanza di Azure Application Insights associata nello stesso gruppo di risorse, con cui è possibile monitorare l'app per le funzioni e visualizzare i log. Per altre informazioni, vedere Monitorare Funzioni di Azure. L'istanza non comporta costi finché non viene attivata.
Distribuire il progetto di funzione in Azure
Dopo aver creato correttamente l'app per le funzioni in Azure, è ora possibile distribuire il progetto di funzioni locali usando il comando func azure functionapp publish
.
Nella cartella del progetto radice eseguire questo comando func azure functionapp publish
:
func azure functionapp publish <APP_NAME>
In questo esempio sostituire <APP_NAME>
con il nome dell'app. Una distribuzione riuscita mostra risultati simili all'output seguente (troncato per semplicità):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
Richiamare la funzione in Azure
Poiché la funzione usa un trigger HTTP, è possibile richiamarla eseguendo una richiesta HTTP al relativo URL nel browser o con uno strumento come curl.
Copiare l'URL di richiamo completo visualizzato nell'output del comando publish
nella barra degli indirizzi di un browser, aggiungendo il parametro di query ?name=Functions
. Nel browser dovrebbe essere visualizzato un output simile a quello visualizzato quando è stata eseguita la funzione in locale.
Pulire le risorse
Se si continua con il passaggio successivo e si aggiunge un binding di output della coda di Archiviazione di Azure, mantenere tutte le risorse esistenti per poterle riutilizzare.
In caso contrario, usare il comando seguente per eliminare il gruppo di risorse e tutte le relative risorse contenute per evitare di incorrere in costi aggiuntivi.
az group delete --name AzureFunctionsQuickstart-rg
Passaggi successivi
Problemi con questo articolo?