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:
Nella portale di Azure aprire l'app per le funzioni. Assicurarsi che l'app per le funzioni sia in esecuzione attivamente.
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:
Nel menu delle risorse dell'app per le funzioni, in API selezionare CORS.
In CORS aggiungere il carattere jolly asterisco (
*
), ma rimuovere tutte le altre origini nell'elenco e selezionare Salva.
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:
La funzione crea una variabile
data
e le assegna l'oggettobody
all'interno dell'oggettorequest
. La funzione usa l'operatore punto (.) per fare riferimento all'oggettobody
all'interno dell'oggettorequest
:var data = request.body;
La funzione può ora accedere alla proprietà
date
attraverso la variabiledata
e convertire il valore della proprietà dal tipo DateTime nel tipo DateString chiamando la funzioneToDateString()
. 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.
- Azure portal
- Visual Studio
- Visual Studio Code
- Interfaccia della riga di comando di Azure
- Azure PowerShell
- Modello ARM
Nella portale di Azure aprire l'app per la logica a consumo e il flusso di lavoro nella finestra di progettazione.
Nella finestra di progettazione seguire questa procedura generale per aggiungere l'azione Funzioni di Azure denominata Scegliere una funzione di Azure.
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.
Nell'editor delle definizioni di funzione definire la funzione:
Nella casella Nome funzione immettere un nome per la funzione.
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:
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 allecontext
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'oggettocontext
, utilizzare la sintassi seguente:context.body.content
Il codice del modello include anche una variabile
input
,che archivia il valore dal parametrodata
, in modo che la funzione possa eseguire operazioni su tale valore. All'interno di funzioni JavaScript, la variabiledata
rappresenta anche un collegamento percontext.body
.Nota
La proprietà
body
si applica qui all'oggettocontext
e non corrisponde al token Corpo di un'azione di output, che può essere passato anch'esso alla funzione.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.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:
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.
Nella portale di Azure aprire il flusso di lavoro dell'app per la logica a consumo nella finestra di progettazione.
Nella finestra di progettazione seguire questa procedura generale per aggiungere l'azione Funzioni di Azure denominata Scegliere una funzione di Azure.
Nell'elenco delle app per le funzioni selezionare l'app per le funzioni desiderata. Nell'elenco delle funzioni visualizzato selezionare la funzione.
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.
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.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:
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:
- Eseguire l'autenticazione dell'accesso con le identità gestite
- Aggiungere l'autenticazione alle chiamate in uscita
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:
Abilitare e configurare l'identità gestita dell'app per la logica.
Trovare i valori necessari per configurare l'autenticazione di Microsoft Entra.
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 .
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.
Nel menu delle risorse dell'app per le funzioni, in Strumenti di sviluppo selezionare Strumenti>avanzati Go.
Dopo aver aperto la pagina Servizi Kudu, nella barra del titolo del sito Web Kudu scegliere CMD dal menu Console di debug.
Quando viene visualizzata la pagina successiva, dall'elenco delle cartelle selezionare site>wwwroot>funzione.
La procedura seguente usa una funzione di esempio denominata FabrikamAzureFunction.
Aprire il file function.json per la modifica.
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.
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.
- Trovare l'ID dell'oggetto (entità) per l'identità gestita dell'app per la logica.
- Trovare l'ID tenant per l'ID Microsoft Entra.
Trovare l'ID oggetto per l'identità gestita dell'app per la logica
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:
Utente assegnato
Per l'identità assegnata dall'utente, selezionare l'identità per trovare l'ID client, ad esempio:
Nel riquadro Panoramica dell'identità gestita è possibile trovare l'ID client dell'identità, ad esempio:
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:
Nel portale di Azure aprire il tenant di Microsoft Entra. Questi passaggi usano Fabrikam come tenant di esempio.
Nel menu tenant di Microsoft Entra, in Gestisci, selezionare Proprietà.
Copiare e salvare l'ID tenant per usarlo in un secondo momento, ad esempio:
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.
Nella portale di Azure aprire l'app per le funzioni.
Nel menu dell'app per le funzioni, in Impostazioni, selezionare Autenticazione e quindi selezionare Aggiungi provider di identità.
Nel riquadro Aggiungi provider di identità in Informazioni di base selezionare Microsoft nell'elenco Provider di identità.
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) Sì <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:
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.
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.
Copiare l'ID app (ID client) per la funzione da usare nella proprietà Audience più avanti nel flusso di lavoro.
Tornare alla finestra di progettazione e seguire la procedura per autenticare l'accesso con l'identità gestita usando l'azione predefinita Funzioni di Azure.