Condividi tramite


Chiamare Funzioni di Azure dai flussi di lavoro in App per la logica di Azure

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

Per eseguire codice che esegue un processo specifico nel flusso di lavoro dell'App per la logica, non è necessario creare un'app o un'infrastruttura completa. È invece possibile creare e chiamare una funzione di Azure. Funzioni di Azure offre l'elaborazione serverless nel cloud e la possibilità di eseguire le attività seguenti:

  • Estendere il comportamento del flusso di lavoro eseguendo funzioni create usando Node.js o C#.
  • Eseguire i calcoli nel flusso di lavoro.
  • Applicare formattazione avanzata o campi di elaborazione nel flusso di lavoro.

Questa guida pratica illustra come chiamare una funzione di Azure esistente dal flusso di lavoro a consumo o Standard. Per eseguire codice senza usare Funzioni di Azure, vedere la documentazione seguente:

Limiti

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

  • Risorsa dell'app per le funzioni di Azure, che contiene una o più funzioni di Azure.

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

    • La risorsa dell'app per le funzioni deve usare .NET o Node.js come stack di runtime.

    • Quando si aggiunge una nuova funzione alle app per le funzioni, è possibile selezionare C# o JavaScript.

  • Funzione di Azure che si desidera chiamare. È possibile creare questa funzione usando gli strumenti seguenti:

    • Azure portal

    • Visual Studio

    • Visual Studio Code

    • Interfaccia della riga di comando di Azure

    • Azure PowerShell

    • Modello ARM

    • La funzione deve usare il modello di trigger HTTP.

      Il modello di trigger HTTP può accettare contenuto del tipo application/json del 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.

    • Il codice della funzione deve includere la risposta e il payload che si desidera restituire al flusso di lavoro al termine della funzione. L'oggetto context fa riferimento al messaggio inviato dal flusso di lavoro tramite il parametro di azione di Funzioni di Azure denominato Corpo della richiesta più avanti in questa guida.

      Questa guida usa la funzione di esempio seguente, denominata FabrikamAzureFunction:

      module.exports = function (context, data) {
      
         var input = data;
      
         // Function processing logic
         // Function response for later use
         context.res = {
            body: {
              content:"Thank you for your feedback: " + input
            }
         };
         context.done();
      }
      

      Per accedere alle proprietà dell'oggetto context all'interno della funzione, usare la sintassi seguente:

      context.body.<property-name>

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

      context.body.content

      Il codice 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 link per context.body.

      Nota

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

    • La funzione non può usare route personalizzate a meno che non sia stata definita una definizione OpenAPI.

      Quando stata specificata una definizione OpenAPI per la funzione, Progettazione flussi di lavoro offre un'esperienza più completa quando si usano parametri di funzione. Prima che il flusso di lavoro possa trovare e accedere alle funzioni con definizioni OpenAPI, impostare l'app per le funzioni seguendo questa procedura.

  • Flusso di lavoro dell'App per la logica a consumo o Standard che inizia con qualsiasi trigger.

    Gli esempi in questa guida usano il trigger di Office 365 Outlook denominato Quando arriva una nuova e-mail.

  • Per creare e chiamare una funzione di Azure che chiama un altro flusso di lavoro, assicurarsi che il flusso di lavoro secondario inizi con un trigger che fornisce un endpoint chiamabile.

    Ad esempio, è possibile avviare il flusso di lavoro con il trigger HTTP o Richiesta generale oppure è possibile usare un trigger basato sul servizio, ad esempio Code di Azure o Griglia di eventi. All'interno della funzione inviare una richiesta HTTP POST all'URL del trigger e includere il payload che si desidera elaborare il flusso di lavoro secondario. Per altre informazioni, vedere Chiamare, attivare o annidare flussi di lavoro di App per la logica.

Suggerimenti per l'uso delle funzioni di Azure

Trovare funzioni con definizioni OpenAPI

Per configurare l'app per le funzioni in modo che il flusso di lavoro possa trovare e usare funzioni con definizioni OpenAPI, seguire questa procedura:

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

  2. Nell'app per le funzioni impostare la Condivisione di risorse tra le origini (CORS) in modo che tutte le origini siano consentite, eseguendo la procedura seguente:

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

    2. In Origini consentite 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 CORS e il carattere jolly * immessi in Origini consentite.

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

Le funzioni basate su webhook possono accettare richieste HTTP come input e passarle ad altre funzioni. Sebbene App per la logica di Azure disponga ad esempio di funzioni che convertono i valori DateTime, questa funzione JavaScript di esempio basilare mostra come accedere a una proprietà all'interno di un oggetto richiesta HTTP passato alla funzione ed eseguire le operazioni sul valore di tale 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, quindi assegna l'oggetto body, che si trova all'interno dell'oggetto request, alla variabile. 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 una funzione di Azure al flusso di lavoro.

Passare parametri URI a una funzione

Se è necessario passare un parametro URI alla funzione, è possibile usare i parametri di query nell'URL dell'endpoint della funzione.

  1. Con la finestra di progettazione del flusso di lavoro aperta per l'app per la logica e il riquadro delle informazioni sulla funzione viene aperto dall'elenco Parametri avanzati selezionare Query.

    Viene visualizzata una tabella in cui è possibile immettere l'input del parametro come coppie chiave-valore.

  2. Immettere la coppia chiave-valore per il parametro, ad esempio:

    Screenshot che mostra il riquadro informazioni sulla funzione con il parametro Query e gli input chiave-valore di esempio.

Aggiungere una funzione al flusso di lavoro (flussi di lavoro a consumo e standard)

Per chiamare una funzione di Azure dal flusso di lavoro, è possibile aggiungere tali funzioni come qualsiasi altra azione nella finestra di progettazione.

  1. Nel 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. Nel riquadro Aggiungi un'azione seguire questa procedura:

    1. Nell'elenco delle app per le funzioni selezionare l'app per le funzioni, selezionare la funzione e quindi selezionare Aggiungi azione, ad esempio:

      Screenshot che mostra il flusso di lavoro Consumo con un'app per le funzioni e una funzione selezionati.

  4. Dopo aver visualizzato la casella delle informazioni della funzione, seguire questa procedura:

    1. Per Corpo della richiesta specificare l'input della funzione, che deve usare il formato per un oggetto Json (JavaScript Object Notation), ad esempio:

      {"context": <selected-input> }

      Questo input descrive il carico contesto di ambiente o il messaggio che il flusso di lavoro invia alla funzione.

      • Per selezionare i token che rappresentano gli output dei passaggi precedenti, selezionare all'interno della casella Corpo della richiesta, quindi selezionare l'opzione per aprire l'elenco di contenuto dinamico (icona a forma di fulmine).

      • Per creare un'espressione, selezionare all'interno della casella Corpo della richiesta, quindi selezionare l'opzione per aprire l'editor di espressioni (icona della formula).

      L'esempio seguente specifica un oggetto JSON con l'attributo content e un token che rappresenta l'output Da del trigger di e-mail come valore di Corpo della richiesta:

      Screenshot che mostra il flusso di lavoro Consumo e una funzione con un esempio di corpo della richiesta per il payload dell'oggetto di contesto.

      Qui non viene eseguito il cast dell'oggetto di contesto come stringa, quindi il contenuto dell'oggetto viene aggiunto direttamente al payload JSON. Ecco un esempio completo:

      Screenshot che mostra il flusso di lavoro Consumo e una funzione con un esempio completo di corpo della richiesta per il payload dell'oggetto di contesto.

      Se si fornisce un contesto di ambiente non differente da un token JSON che passa una stringa, un oggetto JSON o un array JSON, viene visualizzato un errore. Tuttavia, è possibile eseguire il cast dell'oggetto contesto come stringa racchiudendo il token tra virgolette (""), ad esempio, se si desidera usare il token Ora di ricezione:

      Screenshot che mostra il flusso di lavoro Consumption e un esempio di Corpo della richiesta che esegue il cast dell'oggetto contesto come stringa.

    2. Per specificare altri dettagli, ad esempio il metodo da usare, le intestazioni delle richieste, i parametri di query oppure l'autenticazione, aprire l'elenco Parametri avanzati e selezionare il parametro desiderato. 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 di Azure (solo flussi di lavoro a consumo)

Il flusso di lavoro a consumo può usare un'identità gestita per autenticare una chiamata di funzione di Azure e accedere alle risorse protette da Microsoft Entra ID. L'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 di Azure chiamata dal flusso di lavoro può usare la stessa identità gestita per l'autenticazione.

Nota

Solo i flussi di lavoro a consumo supportano l'autenticazione per una chiamata 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 l'azione per chiamare una funzione di Azure.

Per altre informazioni, consultare 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 anonymous. 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>Vai.

    Screenshot che mostra il menu dell'app per le funzioni con le opzioni selezionate per Strumenti avanzati e Go.

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

    Screenshot che mostra la pagina Servizi Kudu con il menu Console di debug aperto e l'opzione selezionata denominata CMD.

  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 le cartelle aperte per il sito, wwwroot e la funzione.

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

    Screenshot che mostra il file function.json con il comando di modifica selezionato.

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

    Screenshot che mostra l'oggetto binding con la proprietà authLevel impostata su anonima.

  7. Al termine, salvare le modifiche. Passare alla 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 usare l'identità gestita e l'autenticazione di Microsoft Entra, è necessario trovare e salvare i valori seguenti seguendo la procedura descritta in questa sezione.

  1. Trovare l'ID tenant per il tenant di Microsoft Entra.

  2. Trovare l'ID oggetto per l'identità gestita.

  3. Trovare l'ID applicazione per l'applicazione Enterprise associata all'identità gestita.

Trovare l'ID tenant per il tenant di Microsoft Entra

Eseguire il comando di PowerShell denominato Get-AzureAccounto nel portale di Azure, seguire questa procedura:

  1. Nel portale di Azure aprire il tenant di Microsoft Entra.

    Questa guida usa Fabrikam come tenant di esempio.

  2. Nel menu del tenant selezionare Panoramica.

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

    Screenshot che mostra la pagina Proprietà ID Microsoft Entra con il pulsante copia dell'ID tenant selezionato.

Trovare l'ID oggetto per l'identità gestita

Dopo aver abilitato l'identità gestita per la risorsa dell'App per la logica a consumo, trovare l'oggetto per l'identità gestita. Questo ID verrà usato per trovare l'applicazione Enterprise associata nel tenant di Microsoft Entra.

  1. Nel menu dell'App per la logica, in Impostazioni selezionare Identità e successivamente Assegnata dal sistema o Assegnata dall'utente.

    • Assegnata dal sistema

      Copiare l'ID (entità di sicurezza) oggetto dell'identità:

      Screenshot che mostra la pagina Identità dell'App per la logica a consumo con la scheda selezionata denominata System assigned.Screenshot shows Consumption logic app's Identity page with selected tab named System assigned.

    • Assegnata dall'utente

      1. Selezionare l'identità:

        Screenshot che mostra la pagina Identità dell'App per la logica a consumo con la scheda selezionata denominata Utente assegnato.

      2. Copiare l'ID (entità di sicurezza) oggetto dell'identità:

        Screenshot che mostra la pagina Panoramica dell'identità assegnata dall'utente dell'App per la logica a consumo con l'ID oggetto (entità) selezionato.

Trovare l'ID applicazione per l'applicazione Azure Enterprise associata all'identità gestita

Quando si abilita un'identità gestita nella risorsa dell'App per la logica, Azure crea automaticamente un'applicazione Azure Enterprise associata con lo stesso nome. È ora necessario trovare l'applicazione Enterprise associata e copiarne l'ID applicazione. Successivamente, si usa questo ID applicazione per aggiungere un provider di identità per l'app per le funzioni creando una registrazione dell'app.

  1. Nella portale di Azure trovare e aprire il tenant di Microsoft Entra.

  2. Nel menu del tenant, in Gestisci, selezionare Applicazioni aziendali.

  3. Nella casella di ricerca della pagina Tutte le applicazioni immettere l'ID oggetto per l'identità gestita. Dai risultati trovare l'applicazione aziendale corrispondente e copiare l'ID applicazione:

    Screenshot che mostra la pagina del tenant di Microsoft Entra denominata Tutte le applicazioni, con l'ID oggetto applicazione aziendale nella casella di ricerca e l'ID applicazione selezionato.

  4. Usare ora l'ID applicazione copiato per aggiungere un provider di identità all'app per le funzioni.

Aggiungere il provider di identità per l'app per le funzioni (solo flussi di lavoro a consumo)

Ora che si dispone dell'ID tenant e dell'ID applicazione, è possibile configurare l'app per le funzioni per l'uso dell'autenticazione di Microsoft Entra aggiungendo un provider di identità e creando una registrazione dell'app.

  1. Aprire l'app per le funzioni nel portale di Azure.

  2. Nel menu dell'app per le funzioni, in Impostazioniselezionare Autenticazione e successivamente Aggiungi provider di identità.

    Screenshot che mostra il menu dell'app per le funzioni con la pagina Autenticazione e l'opzione selezionata denominata Aggiungi provider di identità.

  3. Nel riquadro Aggiungi provider di identità in Dati principali 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) <ID applicazione> Identificatore univoco da usare per la registrazione dell'app. Per questo esempio, usare l'ID applicazione copiato per l'applicazione Enterprise associata all'identità gestita.
    Segreto client Facoltativo, ma consigliato <client-secret> IL valore 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_SECRET.

    - Assicurarsi di ruotare regolarmente i segreti e archiviarli in modo sicuro. Ad esempio, gestire i segreti in Azure Key Vault in cui è possibile usare un'identità gestita per recuperare la chiave senza esporre il valore a un utente non autorizzato. È possibile aggiornare questa impostazione per usare i riferimentia 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. Questo metodo restituisce direttamente solo un token ID o un token di accesso. Questi token vengono inviati dal provider e archiviati nell'archivio token EasyAuth.

    Importante: a causa dei rischi per la sicurezza, il flusso di concessione implicita non è più un metodo di autenticazione appropriato. Usare invece il flusso del codice di autorizzazione con i codici di autorizzazione Proof Key for Code Exchange (PKCE) o i codici di autorizzazione dell'applicazione a pagina singola (SPA).
    URL autorità di certificazione No <authentication-endpoint-URL>/<Microsoft-Entra-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/<Microsoft-Entra-tenant-ID>
    Destinatari 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 desidera consentire i token di autenticazione da un'app Web, aggiungere l'URI dell'ID applicazione per l'app Web. L'ID client configurato viene sempre considerato implicitamente come destinatario consentito.

    Per questo scenario, il valore è https://management.azure.com. Successivamente, è possibile usare lo stesso URI nella proprietà Destinatari 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 del 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à. È possibile personalizzare questo comportamento ora oppure modificare queste impostazioni in un secondo momento nella pagina Autenticazione principale selezionando Modifica accanto a Impostazioni autenticazione. Per altre informazioni su queste opzioni, vedere Flusso di autenticazione - Autenticazione e autorizzazione in Servizio app di Azure 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 applicazione (client) della registrazione dell'app. L'app per le funzioni può ora usare questa registrazione dell'app per l'autenticazione.

  6. Copiare l'ID app (client) di registrazione dell'app da usare in un secondo momento nella proprietà Destinatari dell'azione di Funzioni di Azure per il flusso di lavoro.

    Screenshot che mostra il nuovo provider di identità per l'app per le funzioni.

  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