Concetti di Trigger e associazioni di Funzioni di Azure
In questo articolo vengono illustrati i concetti generali relativi ai trigger e alle associazioni delle funzioni.
I trigger causano l'esecuzione di una funzione. Un trigger definisce il modo in cui una funzione viene richiamata e una funzione deve avere esattamente un trigger. Ai trigger sono associati dati, che spesso vengono forniti come payload della funzione.
L’associazione di binding a una funzione rappresenta un modo dichiarativo per connettere un'altra risorsa alla funzione. I binding possono essere connessi come binding di input, binding di output o di entrambi i tipi. I dati dei binding vengono forniti alla funzione come parametri.
È possibile combinare binding diversi in base alle esigenze. I binding sono facoltativi e una funzione potrebbe avere uno o più binding di input e/o di output.
Trigger e binding consentono di evitare di impostare come hardcoded l'accesso ad altri servizi. La funzione riceve i dati, ad esempio il contenuto di un messaggio della coda, nei parametri della funzione. I dati vengono inviati, ad esempio per creare un messaggio della coda, usando il valore restituito della funzione.
Si considerino gli esempi seguenti di come implementare funzioni diverse.
Scenario di esempio | Trigger | Associazione di input | Associazione di output |
---|---|---|---|
Viene visualizzato un nuovo messaggio di coda che esegue una funzione per scrivere in un'altra coda. | Coda* | Nessuno | Coda* |
Un processo pianificato legge il contenuto dell'archiviazione BLOB e crea un nuovo documento di Azure Cosmos DB. | Timer | Archiviazione BLOB | Azure Cosmos DB |
Griglia di eventi viene usata per leggere un'immagine da Archiviazione BLOB e un documento da Azure Cosmos DB per inviare un messaggio di posta elettronica. | Griglia di eventi | Archiviazione BLOB e Azure Cosmos DB | SendGrid |
Webhook che usa Microsoft Graph per aggiornare un foglio di Excel. | HTTP | Nessuno | Microsoft Graph |
* Rappresenta code diverse
Questi esempi non sono destinati a essere esaustivi, ma vengono forniti per illustrare come è possibile usare trigger e associazioni insieme.
Definizioni di trigger e binding
I trigger e i binding vengono definiti in modo diverso a seconda del linguaggio di sviluppo.
Linguaggio | La configurazione di trigger e binding avviene nei seguenti modi: |
---|---|
Libreria di classi C# | decorazione di metodi e parametri con attributi C# |
Java | decorazione di metodi e parametri con annotazioni Java |
JavaScript/PowerShell/Python/TypeScript | aggiornamento di function.json (schema) |
Per le lingue basate su function.json, il portale fornisce un'interfaccia utente per aggiungere associazioni nella scheda Integrazione . È anche possibile modificare il file direttamente nel portale nella scheda Code + test della funzione. Visual Studio Code consente di aggiungere facilmente un'associazione a un file function.json seguendo un set pratico di richieste.
In .NET e Java il tipo di parametro definisce il tipo di dati per i dati di input. Ad esempio, string
consente di eseguire il binding al testo di un trigger di accodamento, una matrice di byte da leggere come binaria e un tipo personalizzato da de-serializzare in un oggetto. Poiché le funzioni della libreria di classi .NET e le funzioni Java non usano function.json per le definizioni dei binding, non è possibile crearle i modificarle nel portale. Il processo di modifica di C# nel portale è basato sullo script C#, che usa function.json anziché gli attributi.
Per altre informazioni su come aggiungere associazioni alle funzioni esistenti, vedere Connettere le funzioni ai servizi di Azure usando associazioni.
Per i linguaggi tipizzati in modo dinamico, ad esempio JavaScript, usare la proprietà dataType
nel file function.json. Ad esempio, per eseguire la lettura del contenuto di una richiesta HTTP in formato binario, impostare dataType
su binary
:
{
"dataType": "binary",
"type": "httpTrigger",
"name": "req",
"direction": "in"
}
Altre opzioni per dataType
sono stream
e string
.
Direzione dell'associazione
Tutti i trigger e le associazioni hanno una proprietà direction
nel file function.json:
- Per i trigger, la direzione è sempre
in
- Le associazioni di input e di output usano
in
eout
- Alcune associazioni supportano una direzione speciale
inout
. Se si usainout
, solo l’editor avanzato risulterà disponibile dalla scheda Integrazione del portale.
Quando si usano attributi in una libreria di classi per configurare trigger e associazioni, la direzione viene fornita in un costruttore di attributi o dedotto dal tipo di parametro.
Aggiungere associazioni a una funzione
È possibile connettere la funzione ad altri servizi usando associazioni di input o output. Aggiungere un'associazione aggiungendo le relative definizioni specifiche alla funzione. Per informazioni su come, vedere Aggiungere associazioni a una funzione esistente in Funzioni di Azure.
Binding supportati
Questa tabella mostra le associazioni supportate nelle versioni principali del runtime di Funzioni di Azure:
Type | 1.x | 2.x e versioni successive1 | Trigger | Input | Output |
---|---|---|---|---|---|
Archiviazione BLOB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure SQL (anteprima)2 | ✔ | ✔ | ✔ | ✔ | |
Dapr3 | ✔ | ✔ | ✔ | ✔ | |
Griglia di eventi | ✔ | ✔ | ✔ | ✔ | |
Hub eventi | ✔ | ✔ | ✔ | ✔ | |
Webhook HTTP & | ✔ | ✔ | ✔ | ✔ | |
Hub IoT | ✔ | ✔ | ✔ | ||
Kafka2 | ✔ | ✔ | ✔ | ||
App per dispositivi mobili | ✔ | ✔ | ✔ | ||
Hub di notifica di Azure | ✔ | ✔ | |||
Archiviazione code | ✔ | ✔ | ✔ | ✔ | |
RabbitMQ2 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Bus di servizio | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Archiviazione tabelle | ✔ | ✔ | ✔ | ✔ | |
Timer | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
1 A partire dalla versione 2.x del runtime, devono essere registrate tutte le associazioni tranne HTTP e Timer. Vedere Registrare le estensioni delle associazioni.
2 I trigger non sono supportati nel piano A consumo. Richiede trigger basati sul runtime.
3 Supportato solo in Kubernetes, IoT Edge e altre modalità self-hosted.
Per informazioni sulle associazioni in anteprima o approvate per l'uso in ambiente di produzione, vedere Linguaggi supportati .
Le versioni specifiche dell'estensione di associazione sono supportate solo mentre l'SDK del servizio sottostante è supportato. Le modifiche apportate al supporto nella versione dell'SDK del servizio sottostante influiscono sul supporto per l'estensione di utilizzo.
Esempi di codice di associazione
Usare la tabella seguente per trovare esempi di tipi di associazione specifici che illustrano come usare le associazioni nelle funzioni. Scegliere prima di tutto la scheda della lingua corrispondente al progetto.
Servizio | Esempio | Esempi |
---|---|---|
Archiviazione BLOB | Trigger Input Output |
Collegamento |
Azure Cosmos DB | Trigger Input Output |
Collegamento |
Azure SQL (anteprima) | Input Output |
Collegamento |
Griglia di eventi | Trigger Output |
Collegamento |
Hub eventi | Trigger Output |
|
Hub IoT | Trigger Output |
|
HTTP | Trigger | Collegamento |
Archiviazione code | Trigger Output |
Collegamento |
RabbitMQ | Trigger Output |
|
SendGrid | Output | |
Bus di servizio | Trigger Output |
Collegamento |
SignalR | Trigger Input Output |
|
Archiviazione tabelle | Input Output |
|
Timer | Trigger | Collegamento |
Twilio | Output | Collegamento |
Binding personalizzati
È possibile creare associazioni di input e output personalizzate. Le associazioni devono essere create in .NET, ma possono essere usate da qualsiasi linguaggio supportato. Per altre informazioni sulla creazione di associazioni personalizzate, vedere Creazione di associazioni di input e output personalizzate.
Risorse
- Modelli ed espressioni di associazione
- Uso del valore restituito della funzione di Azure
- Come registrare un'espressione di associazione
- Testing:
- Gestione degli errori di associazione