Condividi tramite


Creare la prima funzione in Azure Arc (anteprima)

In questo avvio rapido si crea un progetto di Funzioni di Azure e lo si distribuisce in un'app per le funzioni in esecuzione in un cluster Kubernetes abilitato per Azure Arc. Per ulteriori informazioni, vedere Servizio app, Funzioni e App per la logica in Azure Arc. Questo scenario supporta solo le app per le funzioni in esecuzione in Linux.

Nota

Il supporto per le funzioni in esecuzione in un cluster Kubernetes abilitato per Azure Arc è attualmente in anteprima.

La pubblicazione di progetti di funzioni di PowerShell nei cluster Kubernetes abilitati per Azure Arc non è attualmente supportata. Se è necessario distribuire le funzioni di PowerShell nei cluster Kubernetes abilitati per Azure Arc, creare l'app per le funzioni in un contenitore.

Se è necessario personalizzare il contenitore in cui viene eseguita l'app per le funzioni, vedere Creare le prime funzioni in contenitori in Azure Arc (anteprima).

Prerequisiti

Nel computer locale:

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:

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.

Creare un ambiente Kubernetes del servizio app

Prima di iniziare, è necessario creare un ambiente Kubernetes del servizio app per un cluster Kubernetes abilitato per Azure Arc.

Nota

Quando si crea l'ambiente, assicurarsi di prendere nota sia del nome della posizione personalizzata che del nome del gruppo di risorse che contiene la posizione personalizzata. È possibile usarli per trovare l'ID percorso personalizzato, necessario quando si crea l'app per le funzioni nell'ambiente.

Se l'ambiente non è stato creato, rivolgersi all'amministratore del cluster.

Aggiungere estensioni dell'interfaccia della riga di comando di Azure

Avviare l'ambiente Bash in Azure Cloud Shell.

Poiché questi comandi dell'interfaccia della riga di comando non fanno ancora parte del set di interfaccia della riga di comando principale, aggiungerli con i comandi seguenti:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Creare un progetto per la funzione locale

In Funzioni di Azure un progetto di funzione è l'unità di distribuzione ed esecuzione 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 viene creato un progetto di funzione che contiene una singola funzione.

  1. Eseguire il comando func init come indicato di seguito per creare un progetto di Funzioni in una cartella denominata LocalFunctionProj con il runtime specificato:

    func init LocalFunctionProj --dotnet
    
  2. Passare alla cartella del progetto:

    cd LocalFunctionProj
    

    Questa cartella contiene vari file per il progetto, inclusi i file di configurazione denominati local.settings.json e host.json. Per impostazione predefinita, il file local.settings.json viene escluso dal controllo del codice sorgente nel file con estensione gitignore. L'esclusione è dovuta al fatto che il file può contenere segreti scaricati da Azure.

  3. 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"
    

Eseguire la funzione in locale

  1. 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:

    Screenshot dell'output della finestra del terminale durante l'esecuzione della funzione in locale.

    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.

  2. 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 come http://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.

  3. Al termine, premere CTRL+C e digitare y per arrestare l'host delle funzioni.

Ottenere la posizione personalizzata

Per poter creare un'app per le funzioni in una posizione personalizzata, è necessario ottenere informazioni sull'ambiente.

Ottenere le informazioni seguenti sulla posizione personalizzata dall'amministratore del cluster (vedere Creare una posizione personalizzata).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

Ottenere l'ID percorso personalizzato per il passaggio successivo.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Creare risorse Azure

Prima di poter distribuire il codice funzione nel nuovo ambiente Kubernetes del servizio app, è necessario creare altre due risorse:

  • Un account di archiviazione. Anche se questo articolo crea un account di archiviazione, in alcuni casi potrebbe non essere necessario un account di archiviazione. Per altre informazioni, vedere cluster abilitati per Azure Arc nell'articolo considerazioni sull'archiviazione.
  • Un'app per le funzioni, che fornisce il contesto per l'esecuzione del codice della funzione. L'app per le funzioni viene eseguita nell'ambiente Kubernetes del servizio app ed esegue il mapping al progetto di funzione locale. Un'app per le funzioni consente di raggruppare le funzioni come un'unità logica per semplificare la gestione, la distribuzione e la condivisione delle risorse.

Nota

Le app per le funzioni vengono eseguite in un ambiente Kubernetes del servizio app in un piano dedicato (servizio app). Quando si crea l'app per le funzioni senza un piano esistente, viene creato il piano corretto.

Creare un account di archiviazione

Creare un account di archiviazione per uso generico nel gruppo di risorse e nell'area con il comando az storage account create:

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Nota

In alcuni casi, potrebbe non essere necessario un account di archiviazione. Per altre informazioni, vedere cluster abilitati per Azure Arc nell'articolo considerazioni sull'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, che è supportato da Funzioni. Il valore --location è un'area di Azure standard.

Creare l'app per le funzioni

Eseguire il comando az functionapp create per creare una nuova app per le funzioni nell'ambiente.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

In questo esempio sostituire <CUSTOM_LOCATION_ID> con l'ID della posizione personalizzata determinata per l'ambiente Kubernetes del servizio app. Sostituire inoltre<STORAGE_NAME> con il nome dell'account usato nel passaggio precedente e sostituire <APP_NAME> con un nome univoco a livello globale appropriato.

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

Poiché il completamento di una distribuzione completa in un cluster Kubernetes abilitato per Azure Arc può richiedere del tempo, è possibile eseguire di nuovo il comando seguente per verificare le funzioni pubblicate:

func azure functionapp list-functions

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.

Output della funzione eseguita in Azure in un browser

Passaggi successivi

Ora che l'app per le funzioni è in esecuzione in un contenitore in un ambiente Kubernetes del servizio app abilitato per Azure Arc, è possibile connetterla ad Archiviazione di Azure aggiungendo un'associazione di output di Archiviazione code.