Condividi tramite


Trigger e associazioni di Funzioni di Azure

In questo articolo vengono illustrati i concetti generali relativi a trigger e associazioni per le funzioni.

I trigger causano l'esecuzione di una funzione. Un trigger definisce il modo in cui viene richiamata una funzione 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. I binding 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 in base allo scenario specifico della funzione. Le associazioni sono facoltative e una funzione potrebbe avere una o più associazioni di input e/o output.

I trigger e le associazioni consentono di evitare di impostare l'accesso ad altri servizi come hardcoded. 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 le funzioni:

Scenario di esempio Attivatore Binding di input Binding di output
Arriva un nuovo messaggio della coda che esegue una funzione per scriverla in un'altra coda. Coda* Nessuno Coda*
Un processo pianificato legge il contenuto di Archiviazione BLOB di Azure e crea un nuovo documento di Azure Cosmos DB. Temporizzatore Archiviazione BLOB Azure Cosmos DB, un servizio di database distribuito globale di Microsoft
Griglia di eventi di Azure 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

* Rappresenta code diverse

Questi esempi non sono concepiti per essere esaustivi, ma illustrano 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 associazioni

L'esempio seguente illustra una funzione attivata da HTTP con un collegamento all'output che scrive un messaggio in una coda di archiviazione su Azure.

Per le funzioni della libreria di classi C#, è possibile configurare trigger e associazioni decoratando metodi e parametri con attributi C#. 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)
{

In questo esempio viene illustrata la definizione dell'oggetto MultiResponse . La definizione dell'oggetto restituisce HttpResponse alla richiesta HTTP e scrive un messaggio in una coda di archiviazione usando un binding QueueOutput.

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

Per altre informazioni, vedere la Guida di C# per i modelli di lavoro isolati.

Le funzioni script C# legacy usano un file di function.json definizione. 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, è possibile configurare trigger e associazioni annotando metodi e parametri specifici. Questo trigger HTTP (@HttpTrigger) viene definito nel run metodo per una funzione denominata HttpTriggerQueueOutput. La funzione scrive in una coda di archiviazione che l'annotazione @QueueOutput definisce 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 si definiscono trigger e associazioni per le funzioni di Node.js dipende dalla versione specifica di Node.js per Funzioni di Azure:

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

Il http metodo nell'oggetto esportato app definisce un trigger HTTP. Il metodo storageQueue su output definisce un vincolo di output per 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 http metodo nell'oggetto esportato app definisce un trigger HTTP. Il metodo storageQueue su output definisce un vincolo di output per 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 di Azure:

In Python per Funzioni di Azure versione 2 si definisce la funzione direttamente nel codice usando 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.')

Considerazioni sui vincoli

  • Non tutti i servizi supportano sia associazioni di input che di output. Consulta l'estensione di binding specifica per esempi di codice specifici relativi alle associazioni.

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

  • I nomi dei trigger e delle associazioni sono limitati ai caratteri alfanumerici e _, il carattere di sottolineatura.

Attività per 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:

TIPO 1.x1 2.x e versioni successive2 Attivatore Input Risultato
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
Protocollo di contesto del modello
Hub di notifica di Azure
Archiviazione code
Redis
RabbitMQ3
SendGrid
Bus di servizio
Servizio Azure SignalR
Archiviazione tabelle
Temporizzatore
Twilio

1Il 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 dalla versione 2.x runtime, tutte le associazioni tranne HTTP e timer devono essere registrate. Consulta Registrare le estensioni di associazione delle Funzioni di Azure.

3 I trigger non sono supportati nel Piano di consumo. Questo tipo di associazione richiede trigger basati sul runtime.

4 Questo tipo di associazione è supportato solo in Kubernetes, Azure IoT Edge e in 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 delle estensioni 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 per i binding

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.

Servizio Esempi Esempi
Archiviazione BLOB Trigger
Inserimento
Risultato
Collegamento
Azure Cosmos DB, un servizio di database distribuito globale di Microsoft Trigger
Inserimento
Risultato
Collegamento
Esplora dati di Azure Inserimento
Risultato
Collegamento
SQL di Azure Trigger
Inserimento
Risultato
Collegamento
Griglia di eventi Trigger
Risultato
Collegamento
Hub eventi Trigger
Risultato
Hub IoT Trigger
Risultato
Protocollo HTTP Trigger Collegamento
Archiviazione code Trigger
Risultato
Collegamento
RabbitMQ Trigger
Risultato
SendGrid Risultato
Bus di servizio Trigger
Risultato
Collegamento
Servizio Azure SignalR Trigger
Inserimento
Risultato
Archiviazione di Tabelle Inserimento
Risultato
Temporizzatore Trigger Collegamento
Twilio Risultato Collegamento
Servizio Esempi Esempi
Archiviazione BLOB Trigger
Inserimento
Risultato
Collegamento
Azure Cosmos DB, un servizio di database distribuito globale di Microsoft Trigger
Inserimento
Risultato
Collegamento
Esplora dati di Azure Inserimento
Risultato
Collegamento
SQL di Azure Trigger
Inserimento
Risultato
Griglia di eventi Trigger
Risultato
Collegamento
Hub eventi Trigger
Risultato
Hub IoT Trigger
Risultato
Protocollo HTTP Trigger Collegamento
Archiviazione code Trigger
Risultato
Collegamento
RabbitMQ Trigger
Risultato
SendGrid Risultato
Bus di servizio Trigger
Risultato
Collegamento
Servizio Azure SignalR Trigger
Inserimento
Risultato
Archiviazione di Tabelle Inserimento
Risultato
Temporizzatore Trigger Collegamento
Twilio Risultato
Servizio Esempi Esempi
Archiviazione BLOB Trigger
Inserimento
Risultato
Collegamento
Azure Cosmos DB, un servizio di database distribuito globale di Microsoft Trigger
Inserimento
Risultato
Collegamento
Esplora dati di Azure Inserimento
Risultato
SQL di Azure Trigger
Inserimento
Risultato
Collegamento
Griglia di eventi Trigger
Risultato
Hub eventi Trigger
Risultato
Hub IoT Trigger
Risultato
Protocollo HTTP Trigger Collegamento
Archiviazione code Trigger
Risultato
Collegamento
RabbitMQ Trigger
Risultato
SendGrid Risultato
Bus di servizio Trigger
Risultato
Collegamento
Servizio Azure SignalR Trigger
Inserimento
Risultato
Archiviazione di Tabelle Inserimento
Risultato
Temporizzatore Trigger
Twilio Risultato
Servizio Esempi Esempi
Archiviazione BLOB Trigger
Inserimento
Risultato
Azure Cosmos DB, un servizio di database distribuito globale di Microsoft Trigger
Inserimento
Risultato
SQL di Azure Trigger
Inserimento
Risultato
Griglia di eventi Trigger
Risultato
Hub eventi Trigger
Risultato
Hub IoT Trigger
Risultato
Protocollo HTTP Trigger Collegamento
Archiviazione code Trigger
Risultato
RabbitMQ Trigger
Risultato
SendGrid Risultato
Bus di servizio Trigger
Risultato
Servizio Azure SignalR Trigger
Inserimento
Risultato
Archiviazione di Tabelle Inserimento
Risultato
Temporizzatore Trigger
Twilio Risultato

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

Servizio Esempi Esempi
Archiviazione BLOB Trigger
Inserimento
Risultato
Collegamento
Azure Cosmos DB, un servizio di database distribuito globale di Microsoft Trigger
Inserimento
Risultato
Collegamento
Esplora dati di Azure Inserimento
Risultato
SQL di Azure Trigger
Inserimento
Risultato
Collegamento
Griglia di eventi Trigger
Risultato
Hub eventi Trigger
Risultato
Hub IoT Trigger
Risultato
Protocollo HTTP Trigger Collegamento
Archiviazione code Trigger
Risultato
RabbitMQ Trigger
Risultato
SendGrid Risultato
Bus di servizio Trigger
Risultato
Collegamento
Servizio Azure SignalR Trigger
Inserimento
Risultato
Archiviazione di Tabelle Inserimento
Risultato
Temporizzatore Trigger
Twilio Risultato

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.