Creare ed eseguire codice dai flussi di lavoro in App per la logica di Azure usando Funzioni di Azure

Si applica a: App per la logica di Azure (consumo + standard)

Quando si vuole eseguire codice che esegue un processo specifico nel flusso di lavoro dell'app per la logica, è possibile creare una funzione usando Funzioni di Azure. Questo servizio consente di creare funzioni Node.js, C# ed F#, in modo da non dover creare un'app completa o l'infrastruttura per l'esecuzione del codice. Funzioni di Azure fornisce l'elaborazione serverless nel cloud ed è utile per eseguire determinate attività, ad esempio:

  • Estendere il comportamento dell'app per la logica con funzioni in Node.js o C#.
  • Eseguire i calcoli nel flusso di lavoro dell'app per la logica.
  • Applicare campi di formattazione o calcolo avanzati nei flussi di lavoro dell'app per la logica.

Questa guida pratica illustra come chiamare una funzione di Azure da un flusso di lavoro dell'app per la logica. Per eseguire frammenti di codice senza usare Funzioni di Azure, vedere Aggiungere ed eseguire codice inline. Per chiamare e attivare un flusso di lavoro dell'app per la logica dall'interno di una funzione, il flusso di lavoro deve iniziare con un trigger che fornisce un endpoint chiamabile. Ad esempio, è possibile avviare il flusso di lavoro con il trigger HTTP, Request, Azure Queues o Griglia di eventi. All'interno della funzione inviare una richiesta HTTP POST all'URL del trigger e includere il payload da elaborare. Per altre informazioni, vedere Chiamare, attivare o annidare flussi di lavoro dell'app per la logica.

Limiti

  • È possibile creare una funzione direttamente dall'interno di un flusso di lavoro dell'app per la logica a consumo, ma non da un flusso di lavoro dell'app per la logica Standard. Tuttavia, è possibile creare funzioni in altri modi. Per altre informazioni, vedere Creare funzioni dall'interno dei flussi di lavoro dell'app per la logica.

  • Solo i flussi di lavoro a consumo supportano l'autenticazione delle chiamate di funzioni di Azure usando un'identità gestita con l'autenticazione di Microsoft Entra. I flussi di lavoro standard non sono attualmente supportati nella sezione su come abilitare l'autenticazione per le chiamate di funzione.

  • App per la logica di Azure non supporta l'uso di Funzioni di Azure con gli slot di distribuzione abilitati. Anche se questo scenario può talvolta funzionare, questo comportamento è imprevedibile e può causare problemi di autorizzazione quando il flusso di lavoro tenta di chiamare la funzione di Azure.

Prerequisiti

  • Account e sottoscrizione di Azure. Se non si ha una sottoscrizione, è possibile iscriversi per creare un account Azure gratuito.

  • Una risorsa dell'app per le funzioni di Azure, ovvero un contenitore per una funzione che è possibile creare usando Funzioni di Azure, insieme alla funzione che si vuole usare.

    Se non si dispone di un'app per le funzioni, occorre prima di tutto crearne una. È quindi possibile creare la funzione all'esterno del flusso di lavoro dell'app per la logica usando Funzioni di Azure nel portale di Azure o dall'interno del flusso di lavoro dell'app per la logica nella finestra di progettazione.

  • Quando si lavora con le risorse dell'app per la logica, gli stessi requisiti si applicano sia alle app per le funzioni che alle funzioni, esistenti o nuove:

    • La risorsa dell'app per le funzioni e la risorsa dell'app per la logica devono usare la stessa sottoscrizione di Azure.

    • Le nuove app per le funzioni devono usare .NET o JavaScript come stack di runtime. Quando si aggiunge una nuova funzione alle app per le funzioni esistenti, è possibile selezionare C# o JavaScript.

    • La funzione usa il modello di trigger HTTP.

      Il modello di trigger HTTP può accettare contenuto con application/json tipo dal flusso di lavoro dell'app per la logica. Quando si aggiunge una funzione al flusso di lavoro, la finestra di progettazione mostra le funzioni personalizzate create da questo modello all'interno della sottoscrizione di Azure.

    • La funzione non usa route personalizzate a meno che non sia stata definita una definizione OpenAPI (file Swagger).

    • Se si dispone di una definizione OpenAPI per la funzione, la finestra di progettazione del flusso di lavoro offre un'esperienza più completa quando si lavora con i parametri di funzione. Prima che il flusso di lavoro dell'app per la logica possa trovare e accedere alle funzioni con definizioni OpenAPI, configurare l'app per le funzioni seguendo questa procedura successiva.

  • Per seguire l'esempio in questa guida pratica, è necessaria una risorsa dell'app per la logica a consumo e un flusso di lavoro con un trigger come primo passaggio. Anche se è possibile usare qualsiasi trigger per lo scenario, questo esempio usa il trigger di Office 365 Outlook denominato Quando arriva un nuovo messaggio di posta elettronica.

Trovare funzioni con descrizioni OpenAPI

Per un'esperienza più completa quando si utilizzano parametri di funzione nella finestra di progettazione del flusso di lavoro, generare una definizione OpenAPI o un file Swagger per la funzione. Per impostare la propria app per le funzioni in modo che l'app per la logica possa trovare e usare funzioni che includono le descrizioni Swagger, eseguire la procedura seguente:

  1. Nella portale di Azure aprire l'app per le funzioni. Assicurarsi che l'app per le funzioni sia in esecuzione attivamente.

  2. Configurare la condivisione di risorse tra le origini (CORS) per l'app per le funzioni in modo che tutte le origini siano consentite seguendo questa procedura:

    1. Nel menu delle risorse dell'app per le funzioni, in API selezionare CORS.

      Screenshot che mostra il portale di Azure, il menu delle risorse dell'app per le funzioni con l'opzione

    2. In CORS aggiungere il carattere jolly asterisco (*), ma rimuovere tutte le altre origini nell'elenco e selezionare Salva.

      Screenshot che mostra il portale di Azure, il riquadro

Accedere ai valori delle proprietà all'interno delle richieste HTTP

Le funzioni webhook possono accettare richieste HTTP come input e passarle ad altre funzioni. Ad esempio, anche se App per la logica di Azure dispone di funzioni che converte valori DateTime, questa funzione JavaScript di esempio di base illustra come accedere a una proprietà all'interno di un oggetto richiesta passato alla funzione ed eseguire operazioni su tale valore della proprietà. Per accedere alle proprietà all'interno di oggetti, questo esempio usa l'operatore punto (.):

function convertToDateString(request, response){
   var data = request.body;
   response = {
      body: data.date.ToDateString();
   }
}

Ecco cosa accade all'interno di questa funzione:

  1. La funzione crea una variabile data e le assegna l'oggetto body all'interno dell'oggetto request. La funzione usa l'operatore punto (.) per fare riferimento all'oggetto body all'interno dell'oggetto request:

    var data = request.body;
    
  2. La funzione può ora accedere alla proprietà date attraverso la variabile data e convertire il valore della proprietà dal tipo DateTime nel tipo DateString chiamando la funzione ToDateString(). La funzione restituisce anche il risultato tramite la proprietà body nella risposta della funzione:

    body: data.date.ToDateString();
    

Dopo aver creato la funzione in Azure, seguire la procedura per aggiungere funzioni alle app per la logica.

Creare funzioni dall'interno dei flussi di lavoro dell'app per la logica (solo flussi di lavoro a consumo)

È possibile creare funzioni direttamente dall'interno del flusso di lavoro a consumo usando l'azione predefinita Funzioni di Azure nella finestra di progettazione del flusso di lavoro, ma è possibile usare questo metodo solo per le funzioni scritte in JavaScript. Per altri linguaggi, è possibile creare funzioni tramite l'esperienza di Funzioni di Azure nel portale di Azure. Tuttavia, prima di poter creare la funzione in Azure, è necessario avere già una risorsa dell'app per le funzioni, ovvero un contenitore per le funzioni. Se non si dispone di un'app per le funzioni, occorre prima di tutto crearne una. Per altre informazioni, vedere Creare la prima funzione nel portale di Azure.

I flussi di lavoro standard attualmente non supportano questa opzione per la creazione di una funzione dall'interno di un flusso di lavoro, ma è possibile creare la funzione nei modi seguenti e quindi chiamare tale funzione dal flusso di lavoro dell'app per la logica Standard usando l'operazione di Funzioni di Azure denominata Chiamare una funzione di Azure.

  1. Nella portale di Azure aprire l'app per la logica a consumo e il flusso di lavoro nella finestra di progettazione.

  2. Nella finestra di progettazione seguire questa procedura generale per aggiungere l'azione Funzioni di Azure denominata Scegliere una funzione di Azure.

  3. Nell'elenco delle app per le funzioni visualizzato selezionare l'app per le funzioni. Nell'elenco di azioni visualizzato selezionare l'azione denominata Crea nuova funzione.

    Screenshot che mostra la selezione dell'operazione con

  4. Nell'editor delle definizioni di funzione definire la funzione:

    1. Nella casella Nome funzione immettere un nome per la funzione.

    2. Nella casella Codice aggiungere il codice al modello di funzione, inclusi la risposta e il payload che devono essere restituiti all'app per la logica al termine dell'esecuzione della funzione. Al termine, selezionare Crea, ad esempio:

    Screenshot che mostra l'editor di creazione di funzioni con la definizione della funzione modello.

    Nel codice del modello, l'oggetto context fa riferimento al messaggio inviato dal flusso di lavoro tramite la proprietà Corpo della richiesta in un passaggio successivo. Per accedere alle context proprietà dell'oggetto dall'interno della funzione, usare la sintassi seguente:

    context.body.<property-name>

    Ad esempio, per fare riferimento alla content proprietà all'interno dell'oggetto context , utilizzare la sintassi seguente:

    context.body.content

    Il codice del modello include anche una variabile input,che archivia il valore dal parametro data, in modo che la funzione possa eseguire operazioni su tale valore. All'interno di funzioni JavaScript, la variabile data rappresenta anche un collegamento per context.body.

    Nota

    La proprietà body si applica qui all'oggetto context e non corrisponde al token Corpo di un'azione di output, che può essere passato anch'esso alla funzione.

  5. Nella casella Corpo della richiesta, specificare l'input della funzione, che deve essere formattato in JSON (JavaScript Object Notation).

    Questo input descrive ilcontesto di ambiente o il messaggio che l'app per la logica invia alla funzione. Quando si fa clic nel campo Corpo della richiesta, viene visualizzato l'elenco del contenuto dinamico per consentire la selezione dei token per gli output disponibili dai passaggi precedenti. In questo esempio viene specificato che il payload di contesto contiene una proprietà denominata content con valore del token Da estratto dal trigger di posta elettronica.

    Screenshot che mostra la funzione e la proprietà

    Qui non viene eseguito il cast dell'oggetto di contesto come stringa, quindi il contenuto dell'oggetto viene aggiunto direttamente al payload JSON. Se tuttavia il contesto di ambiente non è un token JSON che passa una stringa, un oggetto JSON o una matrice JSON, viene visualizzato un errore. Pertanto, se in questo esempio è stato usato il token Ora ricevuta , è possibile eseguire il cast dell'oggetto contesto come stringa aggiungendo virgolette doppie, ad esempio:

    Screenshot che mostra la proprietà

  6. Per specificare altri dettagli, ad esempio il metodo da usare, le intestazioni delle richieste, i parametri di query oppure l'autenticazione, aprire l'elenco Aggiungi nuovo parametro e selezionare le opzioni desiderate. Per l'autenticazione, le opzioni variano in base alla funzione selezionata. Per altre informazioni, vedere Abilitare l'autenticazione per le funzioni.

Aggiungere funzioni esistenti ai flussi di lavoro dell'app per la logica (flussi di lavoro a consumo e standard)

Per chiamare le funzioni esistenti dal flusso di lavoro dell'app per la logica, è possibile aggiungere funzioni come qualsiasi altra azione nella finestra di progettazione.

  1. Nella portale di Azure aprire il flusso di lavoro dell'app per la logica a consumo nella finestra di progettazione.

  2. Nella finestra di progettazione seguire questa procedura generale per aggiungere l'azione Funzioni di Azure denominata Scegliere una funzione di Azure.

  3. Nell'elenco delle app per le funzioni selezionare l'app per le funzioni desiderata. Nell'elenco delle funzioni visualizzato selezionare la funzione.

    Screenshot per Consumo che mostra un'app per le funzioni e una funzione selezionati.

    Per le funzioni che dispongono di definizioni API (descrizioni Swagger) e che sono impostate in modo che l'app per la logica le trovi e vi acceda, è possibile selezionare azioni Swagger.

    Screenshot per Consumo che mostra un'app per le funzioni selezionata e quindi in

  4. Nella casella Corpo della richiesta, specificare l'input della funzione, che deve essere formattato in JSON (JavaScript Object Notation).

    Questo input descrive ilcontesto di ambiente o il messaggio che l'app per la logica invia alla funzione. Quando si fa clic nel campo Corpo della richiesta, viene visualizzato l'elenco del contenuto dinamico per consentire la selezione dei token per gli output disponibili dai passaggi precedenti. In questo esempio viene specificato che il payload di contesto contiene una proprietà denominata content con valore del token Da estratto dal trigger di posta elettronica.

    Screenshot per Consumo che mostra la funzione con un esempio

    Qui non viene eseguito il cast dell'oggetto di contesto come stringa, quindi il contenuto dell'oggetto viene aggiunto direttamente al payload JSON. Se tuttavia il contesto di ambiente non è un token JSON che passa una stringa, un oggetto JSON o una matrice JSON, viene visualizzato un errore. Pertanto, se in questo esempio viene usato invece il token Ora di ricezione, è possibile eseguire il cast del contesto di ambiente sotto forma di stringa mediante l'aggiunta di virgolette doppie:

    Screenshot per Consumption che mostra la funzione con l'esempio

  5. Per specificare altri dettagli, ad esempio il metodo da usare, le intestazioni delle richieste, i parametri di query oppure l'autenticazione, aprire l'elenco Aggiungi nuovo parametro e selezionare le opzioni desiderate. Per l'autenticazione, le opzioni variano in base alla funzione selezionata. Per altre informazioni, vedere Abilitare l'autenticazione per le funzioni.

Abilitare l'autenticazione per le chiamate di funzione (solo flussi di lavoro a consumo)

Il flusso di lavoro A consumo può autenticare le chiamate di funzione e accedere alle risorse protette dall'ID Entra di Microsoft usando un'identità gestita (in precedenza nota come identità del servizio gestita o identità del servizio gestito). Questa identità gestita può autenticare l'accesso senza dover accedere e fornire credenziali o segreti. Azure gestisce questa identità per l'utente e consente di proteggere le proprie credenziali perché non è necessario fornire o ruotare i segreti. È possibile configurare l'identità assegnata dal sistema o un'identità assegnata dall'utente manualmente a livello di risorsa dell'app per la logica. La funzione chiamata dal flusso di lavoro può usare la stessa identità per l'autenticazione.

Nota

Attualmente, solo i flussi di lavoro a consumo supportano l'autenticazione per le chiamate di funzione di Azure usando un'identità gestita e l'autenticazione di Microsoft Entra. I flussi di lavoro standard attualmente non includono questo supporto quando si usa il connettore Funzioni di Azure.

Per altre informazioni, vedere la documentazione seguente:

Per configurare l'app per le funzioni e l'app per le funzioni in modo che possano usare l'identità gestita dell'app per la logica a consumo, seguire questi passaggi generali:

  1. Abilitare e configurare l'identità gestita dell'app per la logica.

  2. Configurare la funzione per l'autenticazione anonima.

  3. Trovare i valori necessari per configurare l'autenticazione di Microsoft Entra.

  4. Creare una registrazione dell'app per l'app per le funzioni.

Configurare la funzione per l'autenticazione anonima (solo flussi di lavoro a consumo)

Affinché la funzione usi l'identità gestita dell'app per la logica a consumo, è necessario impostare il livello di autenticazione della funzione su anonimo. In caso contrario, il flusso di lavoro genera un errore BadRequest .

  1. Nel portale di Azure trovare e selezionare l'app per le funzioni.

    La procedura seguente usa un'app per le funzioni di esempio denominata FabrikamFunctionApp.

  2. Nel menu delle risorse dell'app per le funzioni, in Strumenti di sviluppo selezionare Strumenti>avanzati Go.

    Screenshot che mostra il menu dell'app per le funzioni con l'opzione

  3. Dopo aver aperto la pagina Servizi Kudu, nella barra del titolo del sito Web Kudu scegliere CMD dal menu Console di debug.

    Screenshot che mostra la pagina servizi Kudu con il menu

  4. Quando viene visualizzata la pagina successiva, dall'elenco delle cartelle selezionare site>wwwroot>funzione.

    La procedura seguente usa una funzione di esempio denominata FabrikamAzureFunction.

    Screenshot che mostra l'elenco di cartelle con la funzione

  5. Aprire il file function.json per la modifica.

    Screenshot che mostra il file

  6. Nell'oggetto binding verificare se la proprietà authLevel esiste. Se la proprietà esiste, impostare il valore della proprietà su anonimo. In caso contrario, aggiungere la proprietà e impostare il valore.

    Screenshot che mostra l'oggetto

  7. Al termine, salvare le impostazioni. Continuare con la sezione successiva.

Trovare i valori necessari per configurare l'autenticazione di Microsoft Entra (solo flussi di lavoro a consumo)

Prima di poter configurare l'app per le funzioni per l'uso dell'autenticazione di Microsoft Entra, è necessario trovare e salvare i valori seguenti seguendo la procedura descritta in questa sezione.

  1. Trovare l'ID dell'oggetto (entità) per l'identità gestita dell'app per la logica.
  2. Trovare l'ID tenant per l'ID Microsoft Entra.

Trovare l'ID oggetto per l'identità gestita dell'app per la logica

  1. Dopo che l'app per la logica a consumo ha abilitato l'identità gestita, nel menu dell'app per la logica, in Impostazioni selezionare Identità e quindi selezionare Assegnata dal sistema o Assegnata dall'utente.

    • Assegnata dal sistema

      Per l'identità assegnata dal sistema, copiare l'ID oggetto dell'identità, ad esempio:

      Screenshot che mostra il riquadro

    • Utente assegnato

      1. Per l'identità assegnata dall'utente, selezionare l'identità per trovare l'ID client, ad esempio:

        Screenshot che mostra il riquadro

      2. Nel riquadro Panoramica dell'identità gestita è possibile trovare l'ID client dell'identità, ad esempio:

        Screenshot che mostra il riquadro

Trovare l'ID tenant per l'ID Microsoft Entra

Per trovare l'ID tenant di Microsoft Entra, eseguire il comando di PowerShell denominato Get-AzureAccount o nel portale di Azure seguire questa procedura:

  1. Nel portale di Azure aprire il tenant di Microsoft Entra. Questi passaggi usano Fabrikam come tenant di esempio.

  2. Nel menu tenant di Microsoft Entra, in Gestisci, selezionare Proprietà.

  3. Copiare e salvare l'ID tenant per usarlo in un secondo momento, ad esempio:

    Screenshot che mostra il riquadro

Creare la registrazione dell'app per le funzioni (solo flussi di lavoro a consumo)

Dopo aver trovato l'ID oggetto per l'identità gestita e l'ID tenant dell'app per la logica a consumo per l'ID Microsoft Entra, è possibile configurare l'app per le funzioni per usare l'autenticazione di Microsoft Entra creando una registrazione dell'app.

  1. Nella portale di Azure aprire l'app per le funzioni.

  2. Nel menu dell'app per le funzioni, in Impostazioni, selezionare Autenticazione e quindi selezionare Aggiungi provider di identità.

    Screenshot che mostra il menu dell'app per le funzioni con il riquadro

  3. Nel riquadro Aggiungi provider di identità in Informazioni di base selezionare Microsoft nell'elenco Provider di identità.

  4. In Registrazione app, per Tipo di registrazione app, selezionare Specificare i dettagli di una registrazione dell'app esistente e immettere i valori salvati in precedenza.

    Proprietà Richiesto Valore Descrizione
    ID applicazione (client) <object-ID> Identificatore univoco da usare per la registrazione dell'app. Per questo scenario, usare l'ID oggetto dell'identità gestita dell'app per la logica.
    Segreto client Facoltativo, ma consigliato <client-secret> Valore del segreto usato dall'app per dimostrare la propria identità quando si richiede un token. Il segreto client viene creato e archiviato nella configurazione dell'app come impostazione dell'applicazione slot-sticky denominata MICROSOFT_PROVIDER_AUTHENTICATION_edizione Standard CRET. Per gestire il segreto in Azure Key Vault, è invece possibile aggiornare questa impostazione in un secondo momento per usare i riferimenti a Key Vault.

    - Se si specifica un valore del segreto client, le operazioni di accesso usano il flusso ibrido, restituendo token di accesso e di aggiornamento.

    - Se non si specifica un segreto client, le operazioni di accesso usano il flusso di concessione implicita OAuth 2.0, restituendo solo un token ID.

    Questi token vengono inviati dal provider e archiviati nell'archivio token EasyAuth.
    URL autorità di certificazione No <authentication-endpoint-URL>/<Azure-AD-tenant-ID>/v2.0 Questo URL reindirizza gli utenti al tenant Microsoft Entra corretto e scarica i metadati appropriati per determinare le chiavi di firma del token appropriate e il valore dell'attestazione dell'autorità emittente del token. Per le app che usano Azure AD v1, omettere /v2.0 dall'URL.

    Per questo scenario, usare l'URL seguente: https://sts.windows.net/<Azure-AD-tenant-ID>
    Gruppi di destinatari dei token consentiti No <application-ID-URI> URI ID applicazione (ID risorsa) per l'app per le funzioni. Per un'app cloud o server in cui si vogliono consentire i token di autenticazione da un'app Web, aggiungere l'URI ID applicazione per l'app Web. L'ID client configurato viene sempre considerato in modo implicito come gruppo di destinatari consentito.

    Per questo scenario, il valore è https://management.azure.com. Successivamente, è possibile usare lo stesso URI nella proprietà Audience quando si configura l'azione della funzione nel flusso di lavoro per usare l'identità gestita.

    Importante: l'URI dell'ID applicazione (ID risorsa) deve corrispondere esattamente al valore previsto dall'ID Microsoft Entra, incluse le barre finali necessarie.

    A questo punto, la versione ha un aspetto simile all'esempio seguente:

    Screenshot che mostra la registrazione dell'app per la logica e il provider di identità per l'app per le funzioni.

    Se si configura l'app per le funzioni con un provider di identità per la prima volta, viene visualizzata anche la sezione impostazioni di autenticazione servizio app. Queste opzioni determinano il modo in cui l'app per le funzioni risponde alle richieste non autenticate. La selezione predefinita reindirizza tutte le richieste di accesso con il nuovo provider di identità. È ora possibile personalizzare questo comportamento o modificare queste impostazioni in un secondo momento dalla pagina Principale di autenticazione selezionando Modifica accanto a Impostazioni di autenticazione. Per altre informazioni su queste opzioni, vedere Flusso di autenticazione - Autenticazione e autorizzazione in app Azure Servizio e Funzioni di Azure.

    In caso contrario, è possibile continuare con il passaggio successivo.

  5. Per completare la creazione della registrazione dell'app, selezionare Aggiungi.

    Al termine, la pagina Autenticazione elenca ora il provider di identità e l'ID app (ID client) per la registrazione dell'app. L'app per le funzioni può ora usare questa registrazione dell'app per l'autenticazione.

  6. Copiare l'ID app (ID client) per la funzione da usare nella proprietà Audience più avanti nel flusso di lavoro.

  7. Tornare alla finestra di progettazione e seguire la procedura per autenticare l'accesso con l'identità gestita usando l'azione predefinita Funzioni di Azure.

Passaggi successivi