Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In Azure Functions tutte le funzioni condividono alcuni concetti e componenti tecnici di base, indipendentemente dal linguaggio o dall'ambiente di sviluppo preferito. Questo articolo è specifico della lingua. Scegliere la lingua preferita nella parte superiore dell'articolo.
Questo articolo presuppone che l'utente abbia già letto Azure Functions panoramica.
Se si preferisce iniziare subito, è possibile completare un'esercitazione di avvio rapido usando Visual Studio, Visual Studio Code o dal prompt comando.
Se si preferisce iniziare subito, è possibile completare un'esercitazione introduttiva usando Maven (riga di comando), Eclipse, IntelliJ IDEA, Gradle, Quarkus, Spring Cloud, o Visual Studio Code.
Se si preferisce iniziare subito, è possibile completare un'esercitazione introduttiva usando Visual Studio Code o dal prompt comando.
Se si preferisce iniziare subito, è possibile completare un'esercitazione introduttiva usando Visual Studio Code o dal prompt comando.
Se si preferisce iniziare subito, è possibile completare un'esercitazione introduttiva usando Visual Studio Code o dal prompt comando.
Se si preferisce iniziare subito, è possibile completare un'esercitazione introduttiva usando Visual Studio Code o dal prompt comando.
Progetto di codice
Al centro di Azure Functions è un progetto di codice specifico del linguaggio che implementa una o più unità di esecuzione del codice denominate functions. Le funzioni sono semplicemente metodi eseguiti nel cloud Azure in base agli eventi, in risposta alle richieste HTTP o in base a una pianificazione. Si pensi al progetto di codice Azure Functions come un meccanismo per organizzare, distribuire e gestire collettivamente le singole funzioni nel progetto quando vengono eseguite in Azure. Per altre informazioni, vedere Organizzare le funzioni.
Il modo in cui si dispone il progetto di codice e come indicare quali metodi nel progetto sono funzioni dipende dal linguaggio di sviluppo del progetto. Per indicazioni dettagliate specifiche del linguaggio, vedere la Guida per sviluppatori C#.
Il modo in cui si dispone il progetto di codice e come indicare quali metodi nel progetto sono funzioni dipende dal linguaggio di sviluppo del progetto. Per indicazioni specifiche del linguaggio, vedere la guida per sviluppatori Java.
Il modo in cui si dispone il progetto di codice e come indicare quali metodi nel progetto sono funzioni dipende dal linguaggio di sviluppo del progetto. Per indicazioni specifiche del linguaggio, vedere la Guida per sviluppatori Node.js.
Il modo in cui si dispone il progetto di codice e come indicare quali metodi nel progetto sono funzioni dipende dal linguaggio di sviluppo del progetto. Per indicazioni specifiche del linguaggio, vedere la Guida per sviluppatori PowerShell.
Il modo in cui si dispone il progetto di codice e come indicare quali metodi nel progetto sono funzioni dipende dal linguaggio di sviluppo del progetto. Per indicazioni specifiche del linguaggio, vedere la guida per sviluppatori Python.
Tutte le funzioni devono avere un trigger, che definisce l'avvio della funzione e può fornirle input. Le funzioni possono facoltativamente definire associazioni di input e output. Queste associazioni semplificano le connessioni ad altri servizi senza dover usare SDK client. Per altre informazioni, vedere Azure Functions trigger e concetti relativi alle associazioni.
Azure Functions fornisce un set di modelli di funzione e progetto specifici del linguaggio che semplificano la creazione di nuovi progetti di codice e l'aggiunta di funzioni al progetto. È possibile usare uno degli strumenti che supportano Azure Functions sviluppo per generare nuove app e funzioni usando questi modelli.
Strumenti di sviluppo
Gli strumenti seguenti offrono un'esperienza di sviluppo e pubblicazione integrata per Azure Functions nel linguaggio preferito:
Azure Functions Core Tools (prompt dei comandi)
Questi strumenti si integrano con Azure Functions Core Tools in modo da poter eseguire ed eseguire il debug nel computer locale usando il runtime di Funzioni. Per altre informazioni, vedere Code e testare Azure Functions in locale.
È disponibile anche un editor nel portale di Azure che consente di aggiornare il codice e il file di definizione function.json direttamente nel portale. È consigliabile usare questo editor solo per piccole modifiche o creare funzioni di verifica. È consigliabile sviluppare sempre le funzioni in locale, quando possibile. Per altre informazioni, vedere Creare la prima funzione nel portale di Azure.
La modifica del portale è supportata solo per Node.js versione 3, che usa il file function.json.
Distribuzione
Quando si pubblica il progetto di codice in Azure, si distribuisce essenzialmente il progetto in una risorsa dell'app per le funzioni esistente. Un'app per le funzioni fornisce un contesto di esecuzione in Azure in cui vengono eseguite le funzioni. Di conseguenza, è l'unità di distribuzione e gestione per le funzioni. Dal punto di vista della risorsa Azure, un'app per le funzioni equivale a una risorsa del sito (Microsoft.Web/sites) in Azure App Service, equivalente a un'app Web.
Un'app per le funzioni è costituita da una o più singole funzioni gestite, distribuite e ridimensionate insieme. Tutte le funzioni in un'app per le funzioni condividono lo stesso piano tariffario, lo stesso metodo di distribuzione e la stessa versione di runtime. Per altre informazioni, vedere Come gestire un'app per le funzioni.
Quando l'app per le funzioni e tutte le altre risorse necessarie non esistono già in Azure, è prima necessario creare queste risorse prima di poter distribuire i file di progetto. È possibile creare queste risorse in uno dei modi seguenti:
- Durante la pubblicazione Visual Studio
Uso di Visual Studio Code
A livello di codice usando Azure CLI, Azure PowerShell, ARM templates o Bicep file
Nel portale Azure
Oltre alla pubblicazione basata su strumenti, Funzioni supporta altre tecnologie per la distribuzione del codice sorgente in un'app per le funzioni esistente. Per altre informazioni, vedere Deployment technologies in Azure Functions.
Connettersi ai servizi
Un requisito principale di qualsiasi servizio di calcolo basato sul cloud consiste nel leggere i dati e scrivere dati in altri servizi cloud. Funzioni offre un ampio set di associazioni che semplifica la connessione ai servizi senza dover usare SDK client.
Indipendentemente dal fatto che si usino le estensioni di associazione offerte da Funzioni o si usino direttamente gli SDK client, si archiviano in modo sicuro i dati di connessione senza includerli nel codice. Per altre informazioni, vedere Connections.
Collegamenti
Funzioni fornisce associazioni per molti servizi di Azure e alcuni servizi di terze parti, implementati come estensioni. Per altre informazioni, vedere l'elenco completo delle associazioni supportate.
Le estensioni di associazione possono supportare sia input che output e molti trigger fungono anche da associazioni di input. Le associazioni consentono di configurare la connessione ai servizi in modo che l'host di Funzioni possa gestire automaticamente l'accesso ai dati. Per altre informazioni, vedere Azure Functions trigger e concetti relativi alle associazioni.
Se si verificano problemi con gli errori provenienti dalle associazioni, vedere la documentazione Azure Functions Codici di errore di binding.
Client SDK
Sebbene Funzioni offra associazioni per semplificare l'accesso ai dati nel codice della funzione, è comunque possibile usare un SDK client nel progetto per accedere direttamente a un determinato servizio, se si preferisce. Potrebbe essere necessario usare direttamente SDK client se le funzioni richiedono una funzionalità dell'SDK sottostante non supportata dall'estensione di associazione.
Quando si usano SDK client, è consigliabile usare lo stesso processo per archiviare e accedere alle stringhe di connessione usate dalle estensioni di associazione.
Quando si crea un'istanza dell'SDK client nelle funzioni, è necessario ottenere le informazioni di connessione richieste dal client dalle variabili di ambiente.
Quando si crea un'istanza dell'SDK client nelle funzioni, è necessario ottenere le informazioni di connessione richieste dal client dalle variabili di ambiente.
Quando si crea un'istanza dell'SDK client nelle funzioni, è necessario ottenere le informazioni di connessione richieste dal client dalle variabili di ambiente.
Quando si crea un'istanza dell'SDK client nelle funzioni, è necessario ottenere le informazioni di connessione richieste dal client dalle variabili di ambiente.
Quando si crea un'istanza dell'SDK client nelle funzioni, è necessario ottenere le informazioni di connessione richieste dal client dalle variabili di ambiente.
Connessioni
Come procedura consigliata per la sicurezza, Azure Functions sfrutta le funzionalità delle impostazioni dell'applicazione di Azure App Service per consentire di archiviare in modo più sicuro stringhe, chiavi e altri token necessari per connettersi ad altri servizi. Le impostazioni dell'applicazione in Azure vengono archiviate crittografate e possono essere accessibili in fase di esecuzione dall'app come variabile di ambiente namevalue coppie. Per i trigger e le associazioni che richiedono una proprietà di connessione, impostare il nome dell'impostazione dell'applicazione anziché il connection string effettivo. Non è possibile configurare un'associazione direttamente con un connection string o una chiave.
Si consideri, ad esempio, una definizione di trigger con una proprietà connection. Anziché la connection string, impostare connection sul nome di una variabile di ambiente che contiene il connection string. L'uso di questa strategia di accesso ai segreti rende le app più sicure e semplifica la modifica delle connessioni tra ambienti. Per una maggiore sicurezza, è possibile usare connessioni basate su identità.
Il provider di configurazione predefinito usa le variabili di ambiente. Queste variabili vengono definite in impostazioni di applicazione durante l'esecuzione nel Azure e nel file delle impostazioni locali durante lo sviluppo in locale.
Valori di connessione
Quando il nome della connessione viene risolto in un singolo valore esatto, il runtime identifica il valore come connection string, che in genere include un segreto. I dettagli di un connection string dipendono dal servizio a cui ci si connette.
Tuttavia, un nome di connessione può anche fare riferimento a una raccolta di più elementi di configurazione, utile per configurare le connessioni basate su identità. Le variabili di ambiente possono essere considerate come una raccolta usando un prefisso condiviso che termina con caratteri di sottolineatura doppia __. È quindi possibile fare riferimento al gruppo impostando il nome della connessione su questo prefisso.
Ad esempio, la proprietà connection per una definizione di trigger BLOB Azure potrebbe essere Storage1. Se non esiste un singolo valore stringa configurato da una variabile di ambiente denominata Storage1, è possibile usare una variabile di ambiente denominata Storage1__blobServiceUri per informare la proprietà blobServiceUri della connessione. Le proprietà di connessione sono diverse per ogni servizio. Fare riferimento alla documentazione relativa al componente che usa la connessione.
Note
Quando si usa Azure App Configuration o Key Vault per fornire le impostazioni per le connessioni identità gestite, i nomi delle impostazioni devono usare un separatore di chiavi valido, ad esempio : o / al posto del __ per assicurarsi che i nomi vengano risolti correttamente.
Ad esempio: Storage1:blobServiceUri.
Configurare una connessione basata su identità
Alcune connessioni in Azure Functions possono essere configurate per l'uso di un'identità anziché di un segreto. Il supporto dipende dalla versione di runtime e dall'estensione che usa la connessione. In alcuni casi, un connection string potrebbe essere ancora necessario in Funzioni anche se il servizio a cui ci si connette supporta connessioni basate su identità. Per un'esercitazione sulla configurazione delle app per le funzioni con identità gestite, vedere l'esercitazione Creazione di un'app per le funzioni con connessioni basate sull'identità.
Note
Quando si esegue in un piano a consumo o Elastic Premium, l'app usa le impostazioni WEBSITE_AZUREFILESCONNECTIONSTRING e WEBSITE_CONTENTSHARE durante la connessione a Azure Files nell'account di archiviazione usato dall'app per le funzioni. Azure Files non supporta l'uso dell'identità gestita durante l'accesso alla condivisione file. Per altre informazioni, vedere Azure Files scenari di autenticazione supportati
Le connessioni basate su identità sono supportate solo in Funzioni 4.x. Se si usa la versione 1.x, è prima necessario eseguire la migrazione alla versione 4.x.
I componenti seguenti supportano connessioni basate su identità:
Se ospitata nel servizio Azure Functions, le connessioni basate su identità usano un'identità managed identity. Per impostazione predefinita, viene usata l’identità assegnata a livello di sistema, ma è comunque possibile specificare un’identità assegnata dall’utente a cui siano associate le proprietà credential e clientID. Si noti che la configurazione di un'identità assegnata dall'utente con un ID risorsa non è supportata. Quando viene eseguita in altri contesti, ad esempio lo sviluppo locale, viene usata l'identità dello sviluppatore, anche se può essere personalizzata. Vedere Sviluppo locale con connessioni basate su identità.
Concedere l'autorizzazione all'identità
Qualsiasi identità in uso deve disporre delle autorizzazioni per eseguire le azioni desiderate. Per la maggior parte dei servizi di Azure, è necessario assegnare un ruolo in Azure controllo degli accessi in base al ruolo, usando ruoli predefiniti o personalizzati che forniscono tali autorizzazioni.
Importante
Alcune autorizzazioni potrebbero essere esposte dal servizio di destinazione che non sono necessarie per tutti i contesti. Laddove possibile, rispettare il principio dei privilegi minimi e concedere all’identità solo i privilegi necessari. Ad esempio, se l'app deve essere in grado di leggere solo da un'origine dati, usare un ruolo che disponga solo dell'autorizzazione per la lettura. Sarebbe inappropriato assegnare un ruolo che consenta anche la scrittura in tale servizio, in quanto sarebbe eccessiva l'autorizzazione per un'operazione di lettura. Analogamente, è consigliabile assicurarsi che l'assegnazione di ruolo sia con ambito solo sulle risorse che devono essere lette.
Scegliere una di queste schede per ottenere informazioni sulle autorizzazioni per ogni componente:
- estensione BLOB Azure
- estensione code Azure
- estensione tabelle Azure
- Estensione Hub eventi
- estensione Service Bus
- Estensione Griglia di eventi
- estensione Azure Cosmos DB
- Azure estensione SignalR
- estensione Azure Web PubSub
- provider di archiviazione Durable Functions
- Archiviazione host di Funzioni
È necessario creare un'assegnazione di ruolo che fornisca l'accesso al contenitore BLOB in fase di esecuzione. I ruoli di gestione come Proprietario non sono sufficienti. Nella tabella seguente vengono illustrati i ruoli predefiniti consigliati quando si usa l'estensione Blob Storage nel normale funzionamento. L'applicazione potrebbe richiedere ulteriori autorizzazioni in base al codice scritto.
| Tipo di associazione | Ruoli predefiniti di esempio |
|---|---|
| Attivatore |
Proprietario dei dati del BLOB di archiviazioneeCollaboratore ai dati della coda di archiviazione1 È necessario concedere autorizzazioni aggiuntive anche alla connessione AzureWebJobsStorage.2 |
| Binding di input | Lettore dei dati del BLOB di archiviazione |
| Binding di output | proprietario dei dati dei BLOB di archiviazione |
1 Il trigger BLOB gestisce l'errore tra più tentativi scrivendo BLOB non elaborabili in una coda nell'account di archiviazione specificato dalla connessione.
2 La connessione AzureWebJobsStorage viene usata internamente per BLOB e code che abilitano il trigger. Se è configurato per l'uso di una connessione basata su identità, sono necessarie autorizzazioni aggiuntive oltre il requisito predefinito. Le autorizzazioni necessarie sono coperte dai ruoli Proprietario dei dati del BLOB di archiviazione, Collaboratore ai dati della coda di archiviazione e Collaboratore dell'account di archiviazione. Per altre informazioni, vedere Connessione all'archiviazione host con un'identità.
Proprietà comuni per le connessioni basate su identità
Una connessione basata su identità per un servizio Azure accetta le proprietà comuni seguenti, in cui <CONNECTION_NAME_PREFIX> è il valore della proprietà connection nella definizione del trigger o dell'associazione:
| Proprietà | Modello di variabile di ambiente | Descrizione |
|---|---|---|
| Credenziali token | <CONNECTION_NAME_PREFIX>__credential |
Questa proprietà determina come ottenere un token per la connessione. La proprietà non deve essere impostata negli scenari di sviluppo locali. Quando si intende usare l'autenticazione dell'identità gestita, impostare questa proprietà su managedidentity. Quando si intende connettersi a una risorsa in un altro tenant, si dovrebbe invece usare managedidentityasfederatedidentity. |
| ID client | <CONNECTION_NAME_PREFIX>__clientId |
Quando credential è impostato su managedidentity, questa proprietà può essere impostata per specificare l'identità assegnata dall'utente da usare per ottenere un token. La proprietà accetta un ID client corrispondente a un'identità assegnata dall'utente assegnata all'applicazione. Non è valido specificare sia un ID risorsa che un ID client. Se non viene specificato nessuno dei due valori, viene usata l'identità assegnata dal sistema.Questa proprietà viene usata in modo diverso negli scenari tra tenant. Consulta la sezione Scenari tra tenant. Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. |
| ID risorsa | <CONNECTION_NAME_PREFIX>__managedIdentityResourceId |
Quando credential è impostato su managedidentity, questa proprietà può essere impostata per specificare l'identità assegnata dall'utente da usare per ottenere un token. La proprietà accetta un identificatore di risorsa corrispondente a un'identità assegnata all'applicazione dall'utente. Non è valido specificare sia un ID risorsa che un ID client. Se non viene specificato nessuno dei due valori, viene usata l'identità assegnata dal sistema. |
Altre opzioni possono essere supportate per un determinato tipo di connessione. Vedere la documentazione relativa al componente che effettua la connessione.
Variabili di ambiente Azure SDK
Attenzione
L'uso delle variabili di ambiente di Azure SDK EnvironmentCredential non è consigliato a causa dell'impatto potenzialmente involontario su altre connessioni. Non sono inoltre completamente supportati quando vengono distribuiti in Azure Functions.
È anche possibile impostare le variabili di ambiente associate al EnvironmentCredential del Azure SDK, ma non vengono elaborate dal servizio Funzioni per il ridimensionamento nei piani a consumo. Queste variabili di ambiente non sono specifiche di una connessione e verranno applicate come impostazione predefinita, a meno che una proprietà corrispondente non sia impostata per una determinata connessione. Ad esempio, se AZURE_CLIENT_ID è impostato, verrà usato come se <CONNECTION_NAME_PREFIX>__clientId fosse stato configurato. L'impostazione <CONNECTION_NAME_PREFIX>__clientId esplicita sostituisce questa impostazione predefinita.
Sviluppo locale con connessioni basate su identità
Note
Lo sviluppo locale con connessioni basate su identità richiede la versione 4.0.3904 di Azure Functions Core Tools o una versione successiva.
Quando si esegue il progetto di funzione in locale, la configurazione precedente indica al runtime di usare l'identità dello sviluppatore locale. La connessione tenta di ottenere un token dalle posizioni seguenti, in ordine:
- Una cache locale condivisa tra le applicazioni Microsoft
- Contesto utente corrente in Visual Studio
- Contesto utente corrente in Visual Studio Code
- Contesto utente corrente nel Azure CLI
Se nessuna di queste opzioni ha esito positivo, si verifica un errore.
L'identità potrebbe avere già alcune assegnazioni di ruolo rispetto alle risorse Azure usate per lo sviluppo, ma questi ruoli potrebbero non fornire l'accesso ai dati necessario. I ruoli di gestione come Proprietario non sono sufficienti. Verificare le autorizzazioni necessarie per le connessioni per ogni componente e assicurarsi di averlo assegnato a se stessi.
In alcuni casi, è possibile specificare l'uso di un'identità diversa. È possibile aggiungere proprietà di configurazione per la connessione che puntano all'identità alternativa in base a un ID client e a un segreto client per un'entità servizio Microsoft Entra. Questa opzione di configurazione non è supportata quando è ospitata nel servizio Azure Functions. Per usare un ID e un segreto nel computer locale, definire la connessione con le proprietà aggiuntive seguenti:
| Proprietà | Modello di variabile di ambiente | Descrizione |
|---|---|---|
| ID tenant | <CONNECTION_NAME_PREFIX>__tenantId |
ID Microsoft Entra tenant (directory). |
| ID client | <CONNECTION_NAME_PREFIX>__clientId |
L'ID client (applicazione) di una registrazione dell'app nel tenant. |
| Segreto client | <CONNECTION_NAME_PREFIX>__clientSecret |
Segreto client generato per la registrazione dell'app. |
Ecco un esempio di proprietà local.settings.json necessarie per la connessione basata su identità ai BLOB Azure:
{
"IsEncrypted": false,
"Values": {
"<CONNECTION_NAME_PREFIX>__blobServiceUri": "<blobServiceUri>",
"<CONNECTION_NAME_PREFIX>__queueServiceUri": "<queueServiceUri>",
"<CONNECTION_NAME_PREFIX>__tenantId": "<tenantId>",
"<CONNECTION_NAME_PREFIX>__clientId": "<clientId>",
"<CONNECTION_NAME_PREFIX>__clientSecret": "<clientSecret>"
}
}
Connessione all'archiviazione host con un'identità
L'host Azure Functions usa la connessione di archiviazione impostata in AzureWebJobsStorage per abilitare comportamenti di base, ad esempio coordinare l'esecuzione singleton dei trigger timer e l'archiviazione delle chiavi dell'app predefinita. Questa connessione può essere configurata anche per l'uso di un'identità.
Attenzione
Altri componenti in Funzioni si basano su AzureWebJobsStorage per i comportamenti predefiniti. Non è consigliabile spostarlo in una connessione basata su identità se si usano versioni precedenti di estensioni che non supportano questo tipo di connessione, inclusi trigger e associazioni per i BLOB Azure, Hub eventi e Durable Functions. Analogamente, AzureWebJobsStorage viene usato per gli artefatti di distribuzione quando si usa la compilazione lato server a consumo per Linux e, se abilitato, sarà necessario eseguire la distribuzione tramite un pacchetto di distribuzione esterno.
Inoltre, l'app per le funzioni potrebbe riutilizzare AzureWebJobsStorage per altre connessioni di archiviazione nei trigger, nelle associazioni e/o nel codice della funzione. Assicurarsi che tutti gli usi di AzureWebJobsStorage siano in grado di usare il formato di connessione basato sull'identità prima di modificare questa connessione da un connection string.
Per usare una connessione basata su identità per AzureWebJobsStorage, configurare le impostazioni dell'app seguenti:
| Impostazione | Descrizione | Valore di esempio |
|---|---|---|
AzureWebJobsStorage__blobServiceUri |
URI del piano dati del servizio BLOB dell'account di archiviazione, usando lo schema HTTPS. | <https://storage_account_name.blob.core.windows.net> |
AzureWebJobsStorage__queueServiceUri |
URI del piano dati del servizio di accodamento dell'account di archiviazione, usando lo schema HTTPS. | <https://storage_account_name.queue.core.windows.net> |
AzureWebJobsStorage__tableServiceUri |
URI del piano dati di un servizio tabelle dell'account di archiviazione, usando lo schema HTTPS. | <https:// storage_account_name.table.core.windows.net> |
Anche le proprietà comuni per le connessioni basate su identità possono essere impostate.
Se si configura
| Impostazione | Descrizione | Valore di esempio |
|---|---|---|
AzureWebJobsStorage__accountName |
Il nome dell'account di un account di archiviazione, valido solo se l'account non si trova in un cloud sovrano e non ha un DNS personalizzato. Questa sintassi è univoca per AzureWebJobsStorage e non può essere usata per altre connessioni basate su identità. |
<nome_account_archiviazione> |
È necessario creare un'assegnazione di ruolo che fornisce l'accesso all'account di archiviazione per "AzureWebJobsStorage" in fase di esecuzione. I ruoli di gestione come Proprietario non sono sufficienti. Il ruolo Proprietario dei dati dei BLOB di archiviazione copre le esigenze di base dell'archiviazione host di Funzioni: il runtime richiede sia l'accesso in lettura che in scrittura ai BLOB e la possibilità di creare contenitori. Diverse estensioni usano questa connessione come percorso predefinito per BLOB, code e tabelle e questi usi possono aggiungere requisiti come indicato nella tabella seguente. Potrebbero essere necessarie altre autorizzazioni anche se si usa "AzureWebJobsStorage" per altri scopi.
| Estensione | Ruoli necessari | Spiegazione |
|---|---|---|
| nessuna estensione (solo host) | proprietario dei dati dei BLOB di archiviazione | Funzioni usa l'archiviazione BLOB per il coordinamento generale e come archivio chiavi predefinito. Questo scenario rappresenta il set minimo di autorizzazioni per il normale funzionamento, ma non include il supporto per gli eventi di diagnostica1. |
| No extension (host only), with support for diagnostic events1 Nessuna estensione (solo host), con supporto per eventi di diagnostica 1 |
Proprietario dei dati del BLOB di archiviazione, Contributore dati di Storage Table |
Gli eventi di diagnostica sono archiviati nell'archiviazione di tabelle usando la connessione AzureWebJobsStorage. |
| AZURE BLOB (solo trigger) | Tutti i valori con: Collaboratore account di archiviazione, Proprietario dei dati del BLOB di archiviazione, Collaboratore ai dati della coda di archiviazione |
Il trigger BLOB usa internamente Azure code e scrive blob ricevute. Usa la connessione AzureWebJobsStorage per questi scopi, indipendentemente dalla connessione configurata per il trigger. |
| Azure Event Hubs (solo trigger) | (nessuna modifica rispetto al requisito predefinito) proprietario dei dati dei BLOB di archiviazione |
I checkpoint vengono salvati in modo permanente nei BLOB usando la connessione AzureWebJobsStorage. |
| Trigger timer | (nessuna modifica rispetto al requisito predefinito) proprietario dei dati dei BLOB di archiviazione |
Per garantire un'esecuzione per evento, i blocchi vengono acquisiti con i BLOB usando la connessione AzureWebJobsStorage. |
| Durable Functions | Tutti i valori con: Collaboratore ai dati del BLOB di archiviazione, Collaboratore ai dati della coda di archiviazione, Contributore dati di Storage Table |
Durable Functions usa BLOB, code e tabelle per coordinare le funzioni di attività e mantenere lo stato di orchestrazione. Usa la connessione AzureWebJobsStorage per impostazione predefinita, ma è possibile specificare una connessione diversa nella configurazione dell'estensione Durable Functions. |
1 Per alcuni tipi di problemi, Azure Functions può generare un evento di diagnostica che possa facilitare la risoluzione dei problemi, anche quando il problema impedisce l'avvio dell'app per le funzioni. Se non è assegnato collaboratore ai dati della tabella di archiviazione, potrebbero essere visualizzati avvisi nei log sull'impossibilità di scrivere questi eventi.
Connessione a una risorsa in un altro tenant
Se la funzione deve connettersi a una risorsa in un tenant di Microsoft Entra diverso, la connessione deve usare una credenziale di identità federated identity. Ciò richiede un'identità gestita assegnata dall'utente e una registrazione dell'app Entra ID multi-tenant. Non è possibile usare un'identità gestita assegnata dal sistema per le connessioni tra tenant.
Importante
Quando si configura un trigger per una connessione tra tenant nei tipi di piano Consumo o Consumo flessibile, la piattaforma non ridimensiona più l'app per le funzioni in base a tale trigger.
Per configurare una connessione basata su identità tra tenant, è prima necessario configurare l'infrastruttura seguendo questa procedura:
- Nel tenant in cui viene distribuita la tua app per le funzioni, crea una nuova identità gestita assegnata all'utente.
- Assegnare tale identità all'app per le funzioni.
- Nello stesso tenant creare una registrazione dell'app Entra multi-tenant che rappresenta la risorsa tra tenant a cui si vuole accedere.
- Aggiungere l'identità gestita come credenziale di identità federata per la registrazione dell'app.
- Nel tenant in cui viene distribuita la risorsa creare un'applicazione aziendale per la registrazione dell'app.
- Assegnare le autorizzazioni per l'applicazione aziendale per accedere alla risorsa.
Una connessione basata su identità tra tenant utilizza le seguenti proprietà, dove <CONNECTION_NAME_PREFIX> è il valore della tua proprietà connection nella definizione del trigger o dell'associazione.
| Proprietà | Modello di variabile di ambiente | Descrizione |
|---|---|---|
| Credenziali token | <CONNECTION_NAME_PREFIX>__credential |
Obbligatorio. Quando ci si connette a una risorsa in un altro tenant, impostare questa proprietà su managedidentityasfederatedidentity. |
| Azure Cloud | <CONNECTION_NAME_PREFIX>__azureCloud |
Obbligatorio. Questa proprietà determina l'ambiente cloud Azure. I valori consentiti sono "public" per Azure Public Cloud, "usgov" per Azure US Government Cloud e "china" per Azure gestito da 21Vianet. |
| ID client | <CONNECTION_NAME_PREFIX>__clientId |
Obbligatorio. Quando credential è impostato su managedidentityasfederatedidentity, impostare questa proprietà sull'ID client (ID app) della registrazione dell'app.Questa proprietà viene usata in modo diverso nelle connessioni basate su identità per un singolo tenant. Vedere la sezione delle proprietà comuni . Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. |
| ID tenant | <CONNECTION_NAME_PREFIX>__tenantId |
Obbligatorio. Quando credential è impostato su managedidentityasfederatedidentity, impostare questa proprietà sull'ID tenant del tenant della risorsa.Questa proprietà viene usata in modo diverso in scenari di sviluppo locale, quando non è consigliabile impostare credential. |
| ID client dell'identità gestita | <CONNECTION_NAME_PREFIX>__managedIdentityClientId |
Quando credential è impostato su managedidentityasfederatedidentity, questa proprietà specifica l'identità assegnata dall'utente configurata come credenziale di identità federata e assegnata all'applicazione.1 La proprietà accetta un ID client corrispondente all'identità assegnata dall'utente. |
| ID oggetto dell'identità gestita | <CONNECTION_NAME_PREFIX>__managedIdentityObjectId |
Quando credential è impostato su managedidentityasfederatedidentity, questa proprietà specifica l'identità assegnata dall'utente configurata come credenziale di identità federata e assegnata all'applicazione.1 La proprietà accetta un ID oggetto (ID entità) corrispondente all'identità assegnata dall'utente. |
| ID oggetto dell'identità gestita | <CONNECTION_NAME_PREFIX>__managedIdentityResourceId |
Quando credential è impostato su managedidentityasfederatedidentity, questa proprietà specifica l'identità assegnata dall'utente configurata come credenziale di identità federata e assegnata all'applicazione.1 La proprietà accetta un identificatore di risorsa corrispondente all'identità assegnata dall'utente. |
1 Quando credential è impostato su managedidentityasfederatedidentity, la connessione deve specificare esattamente uno di managedIdentityClientId, managedIdentityObjectIdo managedIdentityResourceId.
Questo è anche documentato dal Azure SDK in un formato JSON.
Segnalazione di problemi
| Elemento | Descrizione | Collegamento |
|---|---|---|
| Runtime | Host di script, trigger e associazioni, supporto del linguaggio | File an Issue |
| Modelli | Problemi di codice nel modello di creazione | File an Issue |
Repository open source
Il codice per Azure Functions è open source ed è possibile trovare i componenti chiave in questi repository GitHub:
modelli Azure Functions
Passaggi successivi
Per altre informazioni, vedere le seguenti risorse:
- scenari Azure Functions
- Code e testare Azure Functions in locale
- procedure Best per Azure Functions