Creare la prima funzione permanente in JavaScript

Durable Functions è un'estensione di Funzioni di Azure che consente di scrivere funzioni con stato in un ambiente senza server. L'estensione gestisce automaticamente lo stato, i checkpoint e i riavvii.

Questo articolo spiega come l'estensione di Funzioni di Azure in Visual Studio Code per creare e testare una funzione durevole "hello world" in locale. Questa funzione orchestrerà e concatenerà le chiamate ad altre funzioni. Il codice della funzione verrà quindi pubblicato in Azure.

Importante

Il contenuto di questo articolo cambia in base alla scelta del modello di programmazione Node.js nel selettore nella parte superiore della pagina. Il modello v4 è disponibile a livello generale ed è progettato per offrire un'esperienza più flessibile e intuitiva per gli sviluppatori JavaScript e TypeScript. Altre informazioni sulle differenze tra v3 e v4 sono disponibili nella guida alla migrazione.

Screenshot di una finestra di Edge. La finestra mostra l'output della chiamata di una semplice funzione durevole in Azure.

Prerequisiti

Per completare questa esercitazione:

  • Durable Functions richiede un account di archiviazione di Azure. È necessaria una sottoscrizione di Azure.
  • Assicurarsi di avere installato la versione 16.x+ di Node.js .
  • Assicurarsi di avere installato la versione 18.x+ di Node.js .

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

Creare il progetto locale

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

  1. In Visual Studio Code premere F1 (o CTRL/CMD+MAIUSC+P) per aprire il riquadro comandi. Nel riquadro comandi cercare e selezionare Azure Functions: Create New Project....

    Screenshot del riquadro comandi di Visual Studio Code. Il comando intitolato

  2. Scegliere una cartella vuota come posizione del progetto e quindi Seleziona.

  1. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Selezionare un linguaggio per il progetto di app per le funzioni JavaScript Creare un progetto Funzioni Node.js locale.
    Selezionare un modello di programmazione JavaScript Model V3 Scegliere il modello di programmazione V3.
    Selezionare una versione Funzioni di Azure v4 Questa opzione viene visualizzata solo quando gli strumenti Core Tools non sono già installati. In questo caso, gli strumenti Core Tools vengono installati la prima volta che si esegue l'app.
    Selezionare un modello per la prima funzione del progetto Ignorare per ora
    Specificare come aprire il progetto Open in current window (Apri nella finestra corrente) Riapre VS Code nella cartella selezionata.
  1. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Selezionare un linguaggio per il progetto di app per le funzioni JavaScript Creare un progetto Funzioni Node.js locale.
    Selezionare un modello di programmazione JavaScript Modello V4 Scegliere il modello di programmazione V4.
    Selezionare una versione Funzioni di Azure v4 Questa opzione viene visualizzata solo quando gli strumenti Core Tools non sono già installati. In questo caso, gli strumenti Core Tools vengono installati la prima volta che si esegue l'app.
    Selezionare un modello per la prima funzione del progetto Ignorare per ora
    Specificare come aprire il progetto Open in current window (Apri nella finestra corrente) Riapre VS Code nella cartella selezionata.

Se necessario, Visual Studio Code installa Azure Functions Core Tools. 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 creato anche un package.json file nella cartella radice.

Installare il pacchetto npm di Durable Functions

Per utilizzare Durable Functions in un'app per le funzioni Node.js, si usa una libreria denominata durable-functions.

Per usare il modello di programmazione V4, è necessario installare la versione di anteprima v3.x di durable-functions.

  1. Usare il menu Visualizza o CTRL+ MAIUSC + ' per aprire un nuovo terminale in VS Code.
  1. Installare il durable-functionspacchetto npm eseguendonpm install durable-functions nella directory radice dell'app per le funzioni.
  1. Installare la durable-functions versione di anteprima del pacchetto npm eseguendo npm install durable-functions@preview nella directory radice dell'app per le funzioni.

Creazione delle funzioni

L'app Durable Functions più semplice contiene le tre funzioni seguenti.

  • Funzione dell'agente di orchestrazione: descrive un flusso di lavoro che orchestra le altre funzioni.
  • Funzione dell'attività: chiamata dalla funzione dell'agente di orchestrazione, esegue le operazioni e restituisce facoltativamente un valore.
  • Funzione client: normale funzione di Azure che avvia una funzione dell'agente di orchestrazione. Questo esempio usa una funzione attivata tramite HTTP.

Funzione dell'agente di orchestrazione

Per creare il codice della funzione durevole nel progetto si usa un modello.

  1. Nel riquadro comandi cercare e selezionare Azure Functions: Create Function....

  2. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Select a template for your function (Selezionare un modello per la funzione) Durable Functions Orchestrator Creare un'orchestrazione Durable Functions
    Scegliere un tipo di archiviazione durevole. Archiviazione di Azure (impostazione predefinita) Selezionare il back-end di archiviazione usato per Durable Functions.
    Specificare un nome di funzione HelloOrchestrator Nome della funzione durevole

È stato aggiunto un agente di orchestrazione per coordinare le funzioni dell'attività. Aprire HelloOrchestrator/index.js per visualizzare la funzione dell'agente di orchestrazione. Ogni chiamata a context.df.callActivity richiama una funzione dell'attività denominata Hello.

Si aggiungerà ora la funzione dell'attività Hello cui viene fatto riferimento.

Funzione dell'attività

  1. Nel riquadro comandi cercare e selezionare Azure Functions: Create Function....

  2. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Select a template for your function (Selezionare un modello per la funzione) Durable Functions Activity Creare una funzione dell'attività
    Specificare un nome di funzione Buongiorno Nome della funzione dell'attività

È stata aggiunta la funzione dell'attività Hello richiamata dall'agente di orchestrazione. Aprire Hello/index.js per verificare che accetti un nome come input e restituisca un messaggio di saluto. Una funzione di attività è la posizione in cui si esegue "il lavoro reale" nel flusso di lavoro, ad esempio eseguendo una chiamata al database o eseguendo un calcolo non deterministico.

Si aggiungerà infine una funzione attivata tramite HTTP che avvia l'orchestrazione.

Funzione client (Http Starter)

  1. Nel riquadro comandi cercare e selezionare Azure Functions: Create Function....

  2. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Select a template for your function (Selezionare un modello per la funzione) Durable Functions Http Starter Creare una funzione Http Starter
    Specificare un nome di funzione DurableFunctionsHttpStart Nome della funzione dell'attività
    Livello di autorizzazione Anonimo A scopo dimostrativo, consentire la chiamata della funzione senza autenticazione

È stata aggiunta una funzione attivata tramite HTTP che avvia un'orchestrazione. Aprire DurableFunctionsHttpStart/index.js per verificare che usi client.startNew per avviare una nuova orchestrazione. Userà quindi client.createCheckStatusResponse per restituire una risposta HTTP contenente gli URL che possono essere usati per monitorare e gestire la nuova orchestrazione.

È ora disponibile un'app Durable Functions eseguibile in locale e distribuibile in Azure.

Uno dei vantaggi del modello di programmazione V4 è la flessibilità della scrittura delle funzioni. Nel modello V4 è possibile usare un singolo modello per creare tutte e tre le funzioni in un unico file del progetto.

  1. Nel riquadro comandi cercare e selezionare Azure Functions: Create Function....

  2. Seguire le istruzioni e specificare le informazioni seguenti:

    Richiesta Valore Descrizione
    Select a template for your function (Selezionare un modello per la funzione) Durable Functions Orchestrator Creare un file con un'orchestrazione di Durable Functions, una funzione Activity e una funzione di avvio durable client.
    Scegliere un tipo di archiviazione durevole Archiviazione di Azure (impostazione predefinita) Selezionare il back-end di archiviazione usato per Durable Functions.
    Specificare un nome di funzione hello Nome usato per le funzioni durevoli

Aprire src/functions/hello.js per visualizzare le funzioni create.

È stato creato un agente di orchestrazione chiamato helloOrchestrator per coordinare le funzioni di attività. Ogni chiamata a context.df.callActivity richiama una funzione di attività denominata hello.

È stata aggiunta anche la hello funzione di attività richiamata dall'agente di orchestrazione. Nello stesso file è possibile notare che accetta un nome come input e restituisce un messaggio di saluto. Una funzione di attività è la posizione in cui si esegue "il lavoro reale" nel flusso di lavoro, ad esempio eseguendo una chiamata al database o eseguendo un calcolo non deterministico.

Infine, è stata aggiunta anche una funzione attivata da HTTP che avvia un'orchestrazione. Nello stesso file è possibile notare che usa client.startNew per avviare una nuova orchestrazione. Userà quindi client.createCheckStatusResponse per restituire una risposta HTTP contenente gli URL che possono essere usati per monitorare e gestire la nuova orchestrazione.

È ora disponibile un'app Durable Functions eseguibile in locale e distribuibile in Azure.

Testare la funzione in locale

Azure Functions Core Tools consente di eseguire un progetto Funzioni di Azure nel computer di sviluppo locale. Viene richiesto di installare questi strumenti al primo avvio di una funzione da Visual Studio Code.

  1. Per testare la funzione, impostare un punto di interruzione nel codice della funzione dell'attività Hello (Hello/index.js). Premere F5 o selezionare Debug: Start Debugging nel riquadro comandi per avviare il progetto di app per le funzioni. L'output dagli strumenti di base viene visualizzato nel pannello Terminale.
  1. Per testare la funzione, impostare un punto di interruzione nel codice della funzione dell'attività hello (src/functions/hello.js). Premere F5 o selezionare Debug: Start Debugging nel riquadro comandi per avviare il progetto di app per le funzioni. L'output dagli strumenti di base viene visualizzato nel pannello Terminale.

Nota

Per altre informazioni sul debug, vedere Diagnostica in Durable Functions.

  1. Per l'esecuzione di Durable Functions è necessario un account di archiviazione di Azure. Quando VS Code richiede di selezionare un account di archiviazione, scegliere Select storage account (Seleziona account di archiviazione).

    Screenshot di una finestra di avviso di Visual Studio Code. La finestra indica

  2. Seguire le istruzioni e specificare le informazioni seguenti per creare un nuovo account di archiviazione in Azure.

    Richiesta Valore Descrizione
    Selezionare la sottoscrizione nome della sottoscrizione Selezionare la Sottoscrizione di Azure
    Select a storage account (Selezionare un account di archiviazione) Creare un nuovo account di archiviazione
    Enter the name of the new storage account (Immettere il nome del nuovo account di archiviazione) nome univoco Nome dell'account di archiviazione da creare
    Selezionare un gruppo di risorse nome univoco Nome del gruppo di risorse da creare
    Selezionare una località region Selezionare un'area nelle vicinanze
  3. Nel pannello Terminale copiare l'endpoint dell'URL della funzione attivata da HTTP.

    Screenshot del pannello del terminale di Visual Studio Code. Il terminale mostra l'output dell'esecuzione di un'app Durable Functions in locale. La tabella denominata

  1. Usare il browser o uno strumento come Postman o cURL 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.
  1. Usare il browser o uno strumento come Postman o cURL 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 che informa che l'orchestrazione durevole è stata avviata correttamente. Non è ancora il risultato finale dell'orchestrazione. La risposta include alcuni URL utili. Per il momento si eseguirà una query relativa allo stato dell'orchestrazione.

  1. Copiare il valore dell'URL per statusQueryGetUri, incollarlo nella barra degli indirizzi del browser ed eseguire la richiesta. In alternativa è possibile continuare a usare Postman per inviare la richiesta GET.

    La richiesta esegue una query sull'istanza di orchestrazione per lo stato. Si otterrà una risposta conclusiva in cui si specifica che l'istanza è stata completata e contenente l'output o i risultati della funzione durevole. L'aspetto sarà simile al seguente:

    {
        "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"
    }
    
    {
        "name": "helloOrchestrator",
        "instanceId": "6ba3f77933b1461ea1a3828c013c9d56",
        "runtimeStatus": "Completed",
        "input": "",
        "customStatus": null,
        "output": [
            "Hello, Tokyo",
            "Hello, Seattle",
            "Hello, Cairo"
        ],
        "createdTime": "2023-02-13T23:02:21Z",
        "lastUpdatedTime": "2023-02-13T23:02:25Z"
    }
    
  2. Per interrompere il debug, premere MAIUSC+F5 in VS Code.

Dopo aver verificato la corretta esecuzione della funzione 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 è già stato eseguito l'accesso, scegliere l'icona di Azure nella barra attività. Quindi nell'area Risorse scegliere Accedi ad Azure....

    Screenshot della finestra di accesso ad Azure all'interno di VS Code.

    Se si è già connessi e si possono visualizzare le sottoscrizioni esistenti, passare alla sezione successiva. Se non si ha ancora un account Azure, scegliere Crea un account Azure. Gli studenti possono scegliere Crea un account Azure for Students...

  2. Quando viene visualizzata la richiesta nel browser, scegliere l'account Azure e accedere con le credenziali corrispondenti. 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 e le risorse correlate nella sottoscrizione di Azure.

  1. Scegliere l'icona di Azure nella barra attività. Nell'area Risorse selezionare quindi l'icona + e scegliere l'opzione Crea app per le funzioni in Azure .

    Creare una risorsa nella sottoscrizione di Azure

  2. Quando richiesto, immettere le informazioni seguenti:

    Prompt Selezione
    Selezionare la sottoscrizione scegliere la sottoscrizione da usare. Questa richiesta non verrà visualizzata quando è visibile una sola sottoscrizione in Risorse.
    Immettere un nome univoco globale per l'app per le funzioni digitare un nome valido in un percorso URL. Il nome digitato viene convalidato per assicurarsi che sia univoco in Funzioni di Azure.
    Selezionare uno stack di runtime Scegliere la versione della lingua in cui è stato eseguito localmente.
    Selezionare un percorso per le nuove risorse per prestazioni ottimali, scegliere un'area vicina.

    L'estensione mostra lo stato delle singole risorse durante la creazione in Azure nel pannello Azure: Log attività.

    Log della creazione di risorse di Azure

  3. Al termine della creazione, nella sottoscrizione vengono create le risorse di Azure seguenti. Le risorse sono denominate in base al nome dell'app per le funzioni:

    • Gruppo di risorse, che è un contenitore logico per le risorse correlate.
    • Un account Archiviazione di Azure standard, 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 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 servizio app, che definisce l'host sottostante per l'app per le funzioni.
    • Un'istanza di Application Insights connessa all'app per le funzioni, che tiene traccia dell'utilizzo delle funzioni nell'app.

    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 dell'app per le funzioni specificato. Per impostazione predefinita, vengono creati anche nello stesso nuovo gruppo di risorse con l'app per le funzioni. Se si desidera personalizzare i nomi di queste risorse o riutilizzare le risorse esistenti, è necessario pubblicare il progetto con opzioni di creazione avanzate.

Distribuire il progetto in Azure

Importante

La distribuzione in un'app per le funzioni esistente sovrascrive sempre il contenuto di tale app in Azure.

  1. Nell'area Risorse dell'attività di Azure individuare la risorsa dell'app per le funzioni appena creata, fare clic con il pulsante destro del mouse sulla risorsa e scegliere Distribuisci nell'app per le funzioni....

  2. 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

Nota

Per usare il modello di programmazione dei nodi V4, assicurarsi che l'app sia in esecuzione almeno nella versione 4.25 del runtime di Funzioni di Azure.

  1. Copiare l'URL del trigger HTTP dal pannello Output. L'URL che chiama la funzione attivata tramite HTTP deve essere nel formato https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Copiare l'URL del trigger HTTP dal pannello Output. L'URL che chiama la funzione attivata tramite HTTP deve essere nel formato https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. Incollare questo nuovo URL per la richiesta HTTP nella barra degli indirizzi del browser. Quando si usa l'app pubblicata si dovrebbe ottenere la stessa risposta di stato restituita in precedenza.

Passaggi successivi

Si è usato Visual Studio Code per creare e pubblicare un'app per le funzioni durevoli in JavaScript.