Condividi tramite


Concetti relativi a trigger e associazioni in Funzioni di Azure

In questo articolo vengono illustrati i concetti generali relativi ai trigger e alle associazioni delle funzioni.

I trigger sono 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. I trigger possono anche passare dati alla funzione, come si farebbe con le chiamate al metodo.

L'associazione a una funzione è un modo per connettere in modo dichiarativo le funzioni ad altre risorse; le associazioni passano i dati alla funzione (un'associazione di input) o consentono di scrivere dati dalla funzione (un'associazione di output) usando i parametri di associazione. Il trigger di funzione è essenzialmente un tipo speciale di associazione di input.

È possibile combinare e associare associazioni diverse in base allo scenario specifico della funzione. 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
Arriva un nuovo messaggio della 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 dall'archivio 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

* Rappresenta code diverse

Questi esempi non sono concepiti per essere esaustivi, ma vengono forniti per illustrare come è possibile usare trigger e associazioni insieme. Per un set più completo di scenari, vedere Scenari di Funzioni di Azure.

Suggerimento

Funzioni di Azure non richiede l'uso di associazioni di input e output per connettersi ai servizi di Azure. È sempre possibile creare un client Azure SDK nel codice e usarlo per i trasferimenti di dati. Per altre informazioni, vedere Connettersi ai servizi.

Definizioni di trigger e binding

Una funzione ha un singolo trigger e una o più associazioni. Il tipo di associazione è input o output. Non tutti i servizi supportano sia associazioni di input che di output. Vedere l'estensione di associazione specifica per esempi di codice di associazione specifici.

I trigger e i binding vengono definiti in modo diverso a seconda del linguaggio di sviluppo. Assicurarsi di selezionare la lingua nella parte superiore dell'articolo.

Questo esempio mostra una funzione attivata da HTTP con un'associazione di output che scrive un messaggio in una coda di Archiviazione di Azure.

Per le funzioni della libreria di classi C#, i trigger e le associazioni vengono configurati decorando metodi e parametri con attributi C#, in cui l'attributo specifico applicato può dipendere dal modello di runtime C#:

Il trigger HTTP (HttpTrigger) viene definito nel metodo Run per una funzione denominata HttpExample che restituisce un oggetto MultiResponse :

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
    FunctionContext executionContext)
{

Questo esempio mostra la definizione dell'oggetto MultiResponse che restituisce un oggetto HttpResponse alla richiesta HTTP e scrive anche un messaggio in una coda di archiviazione usando un'associazione QueueOutput:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public HttpResponseData HttpResponse { get; set; }
}

Per altre informazioni, vedere la guida al modello del ruolo di lavoro isolato C#.

Le funzioni script C# legacy usano un file di definizione function.json. Per altre informazioni, vedere le informazioni di riferimento per gli sviluppatori di script C# di Funzioni di Azure (con estensione csx).

Per le funzioni Java, i trigger e le associazioni vengono configurati annotando metodi e parametri specifici. Questo trigger HTTP (@HttpTrigger) viene definito nel metodo run per una funzione denominata HttpTriggerQueueOutput, che scrive in una coda di archiviazione definita dall'annotazione @QueueOutput nel parametro message:

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

Per altre informazioni, vedere la Guida per sviluppatori Java.

Il modo in cui vengono definiti trigger e associazioni per le funzioni di Node.js dipende dalla versione specifica di Node.js per Funzioni:

In Node.js per Funzioni versione 4 si configurano trigger e associazioni usando oggetti esportati dal modulo @azure/functions. Per ulteriori informazioni, vedere la Guida per sviluppatori di Node.js.

Questo esempio è una funzione attivata da HTTP che crea un elemento della coda per ogni richiesta HTTP ricevuta.

Il metodo http nell'oggetto app esportato definisce un trigger HTTP e il metodo storageQueue su output definisce un'associazione di output su questo trigger.

const { app, output } = require('@azure/functions');

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: async (request, context) => {
        const body = await request.text();
        context.extraOutputs.set(queueOutput, body);
        return { body: 'Created queue item.' };
    },
});

Il metodo http nell'oggetto app esportato definisce un trigger HTTP e il metodo storageQueue su output definisce un'associazione di output su questo trigger.

import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const body = await request.text();
    context.extraOutputs.set(queueOutput, body);
    return { body: 'Created queue item.' };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: httpTrigger1,
});

Questo file function.json di esempio definisce la funzione:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Per altre informazioni, vedere la Guida per sviluppatori di PowerShell.

Il modo in cui viene definita la funzione dipende dalla versione di Python per Funzioni:

In Python per Funzioni versione 2 si definisce la funzione direttamente nel codice usando elementi decorator.

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

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.

Funzioni di Azure supporta più associazioni, che devono essere configurate correttamente. Ad esempio, una funzione può leggere i dati da una coda (associazione di input) e scrivere dati in un database (associazione di output) contemporaneamente.

Binding supportati

Questa tabella mostra le associazioni supportate nelle versioni principali del runtime di Funzioni di Azure:

Type 1.x1 2.x e versioni successive2 Trigger Input Output
Archiviazione BLOB
Azure Cosmos DB
Esplora dati di Azure
Azure SQL
Dapr4
Griglia di eventi
Hub eventi
HTTP e webhook
Hub IoT
Kafka3
App per dispositivi mobili
Hub di notifica di Azure
Archiviazione code
Redis
RabbitMQ3
SendGrid
Bus di servizio
SignalR
Archiviazione tabelle
Timer
Twilio

Note:

  1. Il supporto terminerà per la versione 1.x del runtime di Funzioni di Azure il 14 settembre 2026. È consigliabile eseguire la migrazione delle app alla versione 4.x per il supporto completo.
  2. A partire dal runtime della versione 2.x, devono essere registrate tutte le associazioni tranne HTTP e Timer. Vedere Registrare le estensioni delle associazioni.
  3. I trigger non sono supportati nel piano A consumo. Richiede trigger basati sul runtime.
  4. Supportati 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 se 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 ulteriori 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.

Il codice di associazione per C# dipende dal modello di processo specifico.

Service Esempi Esempi
Archiviazione BLOB Trigger
Input
Output
Collegamento
Azure Cosmos DB Trigger
Input
Output
Collegamento
Esplora dati di Azure Input
Output
Collegamento
Azure SQL Trigger
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
Service Esempi Esempi
Archiviazione BLOB Trigger
Input
Output
Collegamento
Azure Cosmos DB Trigger
Input
Output
Collegamento
Esplora dati di Azure Input
Output
Collegamento
Azure SQL Trigger
Input
Output
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
Service Esempi Esempi
Archiviazione BLOB Trigger
Input
Output
Collegamento
Azure Cosmos DB Trigger
Input
Output
Collegamento
Esplora dati di Azure Input
Output
Azure SQL Trigger
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
Service Esempi Esempi
Archiviazione BLOB Trigger
Input
Output
Collegamento
Azure Cosmos DB Trigger
Input
Output
Collegamento
Azure SQL Trigger
Input
Output
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

Il codice di associazione per Python dipende dalla versione del modello Python.

Service Esempi Esempi
Archiviazione BLOB Trigger
Input
Output
Collegamento
Azure Cosmos DB Trigger
Input
Output
Collegamento
Esplora dati di Azure Input
Output
Azure SQL Trigger
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 utilizzate da qualsiasi linguaggio supportato. Per altre informazioni sulla creazione di associazioni personalizzate, vedere Creazione di associazioni di input e output personalizzate.