Esercizio - Pubblicare una funzione in Azure usando Core Tools

Completato

In questo esercizio viene creata un'app per le funzioni in Azure e verrà pubblicato il progetto.

Creare un'app per le funzioni

Importante

Le procedure di questa unità dipendono dal lavoro completato nell'unità 3. La sandbox per questo modulo deve essere attiva. La sandbox offre accesso gratuito e temporaneo ad Azure e all'interfaccia della riga di comando di Azure.

Il Cloud Shell di Azure deve essere già connesso all'account e configurato. Se la sandbox non è attiva, sono stati persi l'accesso, le risorse e l'output necessari. Tornare indietro e completare l'unità 3.

Prima di pubblicare il codice in un'app per le funzioni usando Core Tools, è necessario creare l'app in Azure usando l'interfaccia della riga di comando di Azure da Cloud Shell.

Per creare un'app per le funzioni in Azure, eseguire i comandi seguenti in Azure Cloud Shell.

RESOURCEGROUP="<rgn>[sandbox resource group]</rgn>"
STORAGEACCT=learnstorage$(openssl rand -hex 5)
FUNCTIONAPP=learnfunctions$(openssl rand -hex 5)

az storage account create \
  --resource-group "$RESOURCEGROUP" \
  --name "$STORAGEACCT" \
  --kind StorageV2 \
  --location centralus

az functionapp create \
  --resource-group "$RESOURCEGROUP" \
  --name "$FUNCTIONAPP" \
  --storage-account "$STORAGEACCT" \
  --runtime node \
  --consumption-plan-location centralus \
  --functions-version 4

Ecco a cosa servono i comandi:

  • Le prime tre righe nella parte superiore creano le variabili della shell con valori usati più volte nei comandi seguenti.

    • Per il gruppo di risorse viene specificato il gruppo creato dalla sandbox. Dovrebbe essere già il valore corretto in base alla sandbox corrente.
    • I nomi dell'account di archiviazione e dell'app per le funzioni includono $(openssl rand -hex 5), che genera una stringa casuale di cinque caratteri per garantire che i nomi soddisfino il requisito di univocità globale, nonché altri requisiti di denominazione dei servizi.
  • az storage account create crea un account di archiviazione di Azure che usato dall'app per le funzioni. Un account di archiviazione è una risorsa di Azure separata che è necessario creare prima di poter creare l'app per le funzioni.

  • az functionapp create crea l'app per le funzioni. La nuova app usa il runtime di node (JavaScript), che viene eseguito serverless in un piano di hosting a consumo.

Nota

Il comando az functionapp create tenta anche di creare automaticamente un'istanza di Application Insights per il monitoraggio delle esecuzioni nell'app per le funzioni. Poiché le risorse di Application Insights basate sull'area di lavoro non possono essere ospitate nella sandbox, le funzioni funzionano ma i log di esecuzione non vengono inviati ad Application Insights.

Pubblicare in Azure

Dopo aver creato l'app per le funzioni in Azure, è possibile pubblicarlo con Core Tools.

Eseguire i comandi seguenti in Cloud Shell per la pubblicazione. Eseguire prima di tutto cd per assicurarsi di trovarsi ancora nella cartella di progetto di funzioni prima della pubblicazione.

cd ~/loan-wizard
func azure functionapp publish "$FUNCTIONAPP" --force

Nota

Se questo comando visualizza un errore che indica che non è possibile trovare l'app, attendere due minuti e riprovare. Le nuove app per le funzioni richiedono alcuni secondi prima essere individuabili da Core Tools dopo la creazione.

Inoltre, si aggiunge --force al comando per aggiornare la versione non corrispondente dell'app per le funzioni.

A differenza dell'esercizio precedente, in cui la funzione è stata ospitata temporaneamente in locale da Core Tools, la funzione è ora disponibile sul Web. Rimane disponibile a livello globale fino alla scadenza della sandbox per questa esercitazione. Poiché l'endpoint HTTP è stato definito con un livello di autorizzazione anonymous, è possibile accedervi da chiunque sul Web.

Eseguire la funzione

La funzione è ora pubblicata in Azure e può essere chiamata da qualsiasi posizione. In quanto funzione attivata da HTTP che risponde alle richieste GET, è possibile eseguirla da qualsiasi browser.

  1. Eseguire il comando seguente per ottenere l'URL della richiesta:

    func azure functionapp list-functions "$FUNCTIONAPP" --show-keys
    
  2. Incollare l'URL dall'output in una nuova scheda del browser. Viene visualizzato lo stesso output osservato quando la funzione è stata eseguita in locale senza fornire i parametri della stringa di query corretti. Non sono incluse chiavi nell'output quando si usa un livello di autorizzazione anonymous.

  3. Aggiungere ?principal=5000&rate=.035&term=36 alla fine dell'URL e selezionare INVIO. Assicurarsi di mantenere il code parametro, se presente. Il risultato restituito è 6300.000000000001, come previsto.