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 (consumo + 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 fornisce 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 calcoli nel flusso di lavoro.
  • Applicare campi di formattazione o calcolo avanzati 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 all'app per le funzioni, è possibile selezionare C# o JavaScript.

  • Funzione di Azure che si vuole 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 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.

    • 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 Funzioni di Azure denominato Corpo 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 context proprietà dell'oggetto dall'interno della funzione, usare la sintassi seguente:

      context.body.<property-name>

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

      context.body.content

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

      Nota

      La body proprietà qui si applica all'oggetto context e non è uguale al token Body nell'output di un'azione, che è anche possibile passare alla funzione.

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

      Quando si dispone di una definizione OpenAPI per la funzione, la finestra di progettazione del flusso di lavoro offre un'esperienza più completa quando si utilizzano parametri di funzione. Prima che il flusso di lavoro possa trovare e accedere alle funzioni con definizioni OpenAPI, configurare 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 un nuovo messaggio di posta elettronica.

  • 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 Request 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 vuole elaborare il flusso di lavoro secondario. Per altre informazioni, vedere Chiamare, attivare o annidare flussi di lavoro dell'app per la logica.

Suggerimenti per l'uso delle funzioni di Azure

Generare una definizione OpenAPI o un file Swagger per la funzione

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 configurare l'app per le funzioni in modo che il flusso di lavoro possa trovare e usare funzioni con descrizioni di Swagger, seguire questa procedura:

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

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

    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 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 passare tali richieste 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 mostra come accedere a una proprietà all'interno di un oggetto richiesta HTTP 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 data variabile e quindi assegna l'oggetto body , che si trova all'interno dell'oggetto request , alla variabile . La funzione usa l'operatore dot (.) per fare riferimento all'oggetto body all'interno dell'oggetto request :

    var data = request.body;
    
  2. La funzione può ora accedere alla date proprietà tramite la variabile e convertire il valore della data proprietà dal tipo DateTime al tipo DateString chiamando la ToDateString() funzione . 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.

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. 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. Nel riquadro Crea Connessione ion seguire questa procedura:

    1. Specificare un nome di Connessione ion per la connessione all'app per le funzioni.

    2. Nell'elenco delle app per le funzioni selezionare l'app per le funzioni desiderata.

    3. Nell'elenco delle 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. Nella casella azione della funzione selezionata seguire questa procedura:

    1. Per Corpo della richiesta specificare l'input della funzione, che deve essere formattato come oggetto Json (JavaScript Object Notation). Questo input è il payload dell'oggetto di contesto o il messaggio inviato dal flusso di lavoro alla funzione.

      • Per selezionare i token che rappresentano gli output dei passaggi precedenti, selezionare all'interno della casella Corpo richiesta e 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 e 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 From del trigger di posta elettronica 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 l'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 specifica un oggetto di contesto diverso da un token JSON che passa una stringa, un oggetto JSON o una matrice JSON, viene visualizzato un errore. Tuttavia, è possibile eseguire il cast dell'oggetto contesto come stringa racchiudendo il token tra virgolette ("", ad esempio, se si vuole usare il token Ora ricevuta:

      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 della richiesta, i parametri di query o l'autenticazione, aprire l'elenco Parametri avanzati e selezionare i parametri desiderati. 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 Go.

    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 dal 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 tale proprietà e impostare il valore.

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

  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 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-AzureAccount o 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 Entra.

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

    • Assegnata dal sistema

      Copiare l'ID oggetto (entità) 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.

    • Utente assegnato

      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 oggetto (entità) 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 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 Entra denominata Tutte le applicazioni, con l'ID oggetto applicazione aziendale nella casella di ricerca e l'ID applicazione corrispondente 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. 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 la pagina Autenticazione e l'opzione selezionata denominata Aggiungi provider di identità.

  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) <application-ID> 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> 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>/<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/<Entra-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 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 più avanti nella proprietà Audience dell'azione 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