Introduzione rapida: Creare un'app PowerShell con Durable Functions

In questa guida introduttiva si userà Visual Studio Code per creare e testare un'app di PowerShell Durable Functions che orchestra e concatena le chiamate ad altre funzioni. Viene quindi pubblicato in Azure.

Durable Functions gestisce lo stato, i checkpoint e i riavvii nell'applicazione, consentendo di scrivere flussi di lavoro con stato in un ambiente serverless.

Prerequisiti

Per completare questo avvio rapido, avrai bisogno di:

Se non si ha un account Azure, creare un account gratuito prima di iniziare.

Creare il progetto locale

In questa sezione si usa Visual Studio Code per creare un progetto di Funzioni di Azure locale.

  1. In Visual Studio Code selezionare F1 (o premere CTRL/CMD+MAIUSC+P) per aprire il riquadro comandi. Al prompt (>), immettere e quindi selezionare Funzioni di Azure: Create New Project.

    Screenshot del comando Create New Project in Visual Studio Code per Funzioni di Azure.

  2. Seleziona Sfoglia. Nella finestra di dialogo Seleziona cartella passare alla cartella da usare per il progetto, quindi scegliere Seleziona.

  3. Alle richieste, inserire le informazioni seguenti:

    Rapido Action Descrizione
    Selezionare un linguaggio per il progetto di app per le funzioni Seleziona PowerShell. Crea un progetto Funzioni PowerShell in locale.
    Selezionare una versione Selezionare Funzioni di Azure v4. Questa opzione è visualizzata solo quando Core Tools non è già installato. In questo caso, Core Tools è installato la prima volta che si esegue l'app.
    Selezionare un modello per la prima funzione del progetto Selezionare Ignora per adesso.
    Selezionare come si vuole aprire il progetto Selezionare Apri nella finestra corrente. Apre Visual Studio Code nella cartella selezionata.

Visual Studio Code installa Funzioni di Azure Core Tools se necessario per creare un progetto. Crea inoltre un progetto di app per le funzioni in una cartella. Questo progetto contiene i file di configurazione host.json e local.settings.json.

Viene inoltre creato un file package.json nella cartella radice.

Configurare l'SDK autonomo di Durable Functions

L'SDK autonomo offre le migliori prestazioni e le funzionalità più recenti per PowerShell Durable Functions. Configurarlo in tre passaggi:

Passaggio 1: Aprire local.settings.json e verificare che siano presenti le impostazioni seguenti. Aggiungere o aggiornarli, se necessario:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "7.4",
    "ExternalDurablePowerShellSDK": "true"
  }
}

Passaggio 2: Aprire requirements.psd1 e aggiungere la dipendenza dell'SDK:

@{
    'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}

L'identificatore di 2.* assicura di ottenere la versione stabile 2.x più recente dal PowerShell Gallery.

Passaggio 3: Aggiungere la riga seguente alla fine del profile.ps1 file:

Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop

Creare le funzioni

Un'app di base Durable Functions ha tre funzioni:

Tipo di funzione Purpose
Orchestrator Flusso di lavoro che orchestra altre funzioni.
Attività Chiamato dall'agente di orchestrazione per eseguire il lavoro e restituire un valore.
Client (starter HTTP) Funzione attivata da HTTP che avvia un agente di orchestrazione.

Per ogni funzione aprire il riquadro comandi e selezionare Funzioni di Azure: Crea funzione, quindi specificare i valori richiesti:

1. Funzione orchestratore

Rapido Value
Selezionare un modello Agente di orchestrazione di Durable Functions
Nome della funzione HelloOrchestrator

Aprire HelloOrchestrator/run.ps1 per visualizzare l'agente di orchestrazione. Ogni chiamata a Invoke-ActivityFunction richiama la funzione attività Hello.

2. Funzione dell'attività

Rapido Value
Selezionare un modello Attività di Durable Functions
Nome della funzione Hello

Aprire Hello/run.ps1 per vedere che accetta un nome come input e restituisce un messaggio di saluto. Le funzioni di attività consentono di eseguire azioni quali chiamate di database o calcoli.

3. Funzione client (http starter)

Rapido Value
Selezionare un modello Durable Functions HTTP Starter
Nome della funzione HttpStart
Livello di autorizzazione Anonimo (a scopo dimostrativo)

Aprire HttpStart/run.ps1 per verificare che usi Start-NewOrchestration per avviare una nuova orchestrazione e New-OrchestrationCheckStatusResponse restituire una risposta HTTP con URL di monitoraggio.

È ora disponibile un'app Durable Functions che è possibile eseguire in locale e distribuirla in Azure.

Suggerimento

Questa guida introduttiva utilizza l'SDK autonomo Durable Functions per PowerShell. Per altre informazioni sull'SDK e sulla migrazione dalla versione predefinita legacy, vedere la guida autonoma di PowerShell SDK.

Testare la funzione in locale

Funzioni di Azure Core Tools offre la possibilità di eseguire un progetto Funzioni di Azure nel computer di sviluppo locale. Viene richiesto di installare questi strumenti la prima volta che si avvia una funzione in Visual Studio.

  1. Per testare la funzione, impostare un punto di interruzione nel codice della funzione dell'attività Hello (in Hello/run.ps1). Selezionare F5 o Debug: avvia debug nel riquadro comandi per avviare il progetto di app per le funzioni. L'output da Core Tools è visualizzato nel pannello del terminale.

    Annotazioni

    Per altre informazioni sul debug, vedere Durable Functions diagnostics.

  2. Durable Functions richiede un account di archiviazione per funzionare. È possibile usare l'emulatore di archiviazione Azurite per lo sviluppo locale oppure creare un account di archiviazione Azure quando richiesto. Se Visual Studio Code chiede di selezionare un account di archiviazione, scegliere Selezionare l'account di archiviazione.

  3. Quando richiesto, specificare le informazioni seguenti per creare un nuovo account di archiviazione in Azure.

    Rapido Action Descrizione
    Selezionare la sottoscrizione Selezionare il nome della sottoscrizione. La sottoscrizione di Azure.
    Selezionare un account di archiviazione Selezionare Crea un nuovo account di archiviazione.
    Immettere il nome del nuovo account di archiviazione Immettere un nome univoco. Nome dell'account di archiviazione da creare.
    Selezionare un gruppo di risorse Immettere un nome univoco. Nome del gruppo di risorse da creare.
    Selezionare una posizione Selezionare un'area di Azure. Selezionare un'area vicina.
  4. Nel pannello Terminale copiare l'endpoint dell'URL della funzione attivata da HTTP.

  5. Usare il browser o uno strumento di test HTTP per inviare una richiesta HTTP POST all'endpoint URL.

    Sostituire l'ultimo segmento con il nome della funzione dell'agente di orchestrazione (HelloOrchestrator). L'URL sarà simile a http://localhost:7071/api/orchestrators/HelloOrchestrator.

    La risposta è il risultato iniziale della funzione HTTP. Informa che l'orchestrazione durevole è stata avviata correttamente. Non visualizza ancora il risultato finale dell'orchestrazione. La risposta include alcuni URL utili. Per il momento eseguire una query relativa allo stato dell'orchestrazione.

  6. Copiare il valore dell'URL per statusQueryGetUri, incollarlo nella barra degli indirizzi del browser ed eseguire la richiesta. È anche possibile continuare a usare lo strumento di test HTTP per inviare la richiesta GET.

    La richiesta esegue una query per determinare lo stato dell'istanza di orchestrazione. Verrà visualizzata una risposta che mostra l'istanza completata, con gli output della funzione durevole:

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  7. Per arrestare il debug, in Visual Studio Code selezionare MAIUSC+F5.

Dopo aver verificato che la funzione venga eseguita correttamente nel computer locale, è possibile pubblicare il progetto in Azure.

Accedere ad Azure

Prima di poter creare risorse di Azure o pubblicare l'app, è necessario accedere ad Azure.

  1. Se non hai già effettuato l'accesso, nella barra delle attività, seleziona l'icona di Azure. Successivamente, in Risorse, selezionare Accedi ad Azure.

    Screenshot della finestra di accesso ad Azure in Visual Studio Code.

    Se si è già connessi e si possono visualizzare le sottoscrizioni esistenti, passare alla sezione successiva. Se non si dispone ancora di un account Azure, selezionare Crea un account Azure. Gli studenti possono selezionare Creare un account Azure per studenti.

  2. Quando viene richiesto nel browser, selezionare l'account Azure e accedere usando le credenziali dell'account Azure. Se si crea un nuovo account, è possibile accedere dopo la creazione dell'account.

  3. Dopo avere eseguito l'accesso, è possibile chiudere la nuova finestra del browser. Le sottoscrizioni che appartengono all'account Azure vengono visualizzate nella barra laterale.

Creare l'app per le funzioni in Azure

In questa sezione viene creata un'app per le funzioni nel piano Flex Consumption insieme alle risorse correlate nella sottoscrizione Azure. Molte delle decisioni di creazione delle risorse vengono prese in base ai comportamenti predefiniti. Per un maggiore controllo sulle risorse create, è invece necessario creare l'app per le funzioni con opzioni avanzate.

  1. In Visual Studio Code selezionare F1 per aprire il riquadro comandi. Al prompt (>), immettere e selezionare Funzioni di Azure: Crea app per le funzioni in Azure.

  2. Alle richieste, inserire le informazioni seguenti:

    Rapido Action
    Selezionare la sottoscrizione Selezionare la sottoscrizione Azure da usare. Il prompt non è visualizzato quando è visibile una sola sottoscrizione in Risorse.
    Immettere un nuovo nome dell'app per le funzioni Immettere un nome univoco globale valido in un percorso URL. Il nome immesso viene convalidato per assicurarsi che sia univoco in Funzioni di Azure.
    Selezionare una località per le nuove risorse Selezionare un'area di Azure. Per prestazioni ottimali, scegliere un'area vicina. Vengono visualizzate solo le aree supportate dai piani Flex Consumption.
    Selezionare uno stack di esecuzione Selezionare la versione della lingua attualmente eseguita in locale.
    Selezionare il tipo di autenticazione della risorsa Selezionare Identità gestita, che rappresenta l'opzione più sicura per la connessione all'account di archiviazione host predefinito.

    Nel pannello Azure: Activity Log, l'estensione di Azure mostra lo stato delle singole risorse man mano che vengono create in Azure.

    Screenshot che mostra il log della creazione di risorse Azure.

  3. Quando viene creata l'app per le funzioni, nella sottoscrizione di Azure vengono create le risorse correlate seguenti. Le risorse vengono denominate in base al nome immesso per l'app per le funzioni.

    • Un gruppo di risorse, ovvero un contenitore logico di risorse correlate.
    • Un'app per le funzioni, che fornisce l'ambiente per l'esecuzione del codice della funzione. 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 all'interno dello stesso piano di hosting.
    • Un piano di Servizio app di Azure, che definisce l'host sottostante per l'app per le funzioni.
    • Un account di archiviazione di Azure standard, usato dall'host delle Funzioni per mantenere lo stato e altre informazioni sull'applicazione delle funzioni.
    • Istanza di Application Insights connessa all'app per le funzioni e che tiene traccia dell'uso delle funzioni nell'app.
    • Identità gestita assegnata dall'utente aggiunta al ruolo Collaboratore dati BLOB di archiviazione nel nuovo account di archiviazione dell'host predefinito.

    Dopo la creazione dell'app per le funzioni e dopo l'applicazione del pacchetto di distribuzione viene visualizzata una notifica.

    Suggerimento

    Per impostazione predefinita, le risorse di Azure richieste dall'app per le funzioni vengono create in base al nome immesso per l'app per le funzioni. Per impostazione predefinita, le risorse vengono create con l'app per le funzioni nello stesso gruppo di risorse. Per personalizzare i nomi delle risorse associate o riutilizzare le risorse esistenti, pubblicare il progetto con le opzioni di creazione avanzate.

Distribuire il progetto in Azure

Importante

La distribuzione in un'applicazione di funzione esistente sovrascriverà sempre il contenuto di tale app in Azure.

  1. Nel riquadro comandi immettere e quindi selezionare Funzioni di Azure: Deploy to Function App.

  2. Selezionare l'app per le funzioni appena creata. Quando viene richiesto di sovrascrivere le distribuzioni precedenti, selezionare Distribuisci per distribuire il codice della funzione nella nuova risorsa dell'app per le funzioni.

  3. Al termine della distribuzione, selezionare Visualizza output per visualizzare i risultati della creazione e della distribuzione, incluse le risorse di Azure create. Se non si riesce a visualizzare la notifica, selezionare l'icona della campana nell'angolo in basso a destra per visualizzarla di nuovo.

    Screenshot della finestra Visualizza output.

Testare la funzione in Azure

  1. Nel portale di Azure (o usando il interfaccia della riga di comando di Azure), verificare che l'impostazione dell'app ExternalDurablePowerShellSDK sia impostata su true. Se manca, aggiungerlo in Impostazioni>variabili di ambiente e riavviare l'applicazione di funzione.

  2. Copiare l'URL del trigger HTTP dal pannello Output. L'URL deve essere in questo formato:

    https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  3. Inviare una richiesta HTTP POST all'URL. Si dovrebbe ottenere la stessa risposta di stato ottenuta durante il test in locale.

Se l'agente di orchestrazione non viene avviato, controllare i log dell'app per le funzioni nel Portale di Azure in Monitor>Flusso di log per errori correlati alla connettività di importazione o archiviazione dell'SDK.

Pulire le risorse

Se non sono più necessarie le risorse create per completare la guida introduttiva, per evitare i costi correlati nella sottoscrizione Azure, delete il gruppo di risorse e tutte le risorse correlate.