Megosztás a következőn keresztül:


Azure Functions-eseményindítók és -kötések – fogalmak

Ebben a cikkben megismerheti a függvények eseményindítóit és kötéseit körülvevő magas szintű fogalmakat.

Az eseményindítók egy függvény futtatását okozzák. Egy eseményindító definiálja egy függvény meghívásának módját, és egy függvényhez pontosan egy eseményindító tartozhat. Az eseményindítók a metódushívásokhoz hasonlóan adatokat is továbbíthatnak a függvénybe.

A függvényhez kötéssel deklaratív módon csatlakoztathatja a függvényeket más erőforrásokhoz; a kötések vagy adatokat adnak át a függvénybe (bemeneti kötés), vagy lehetővé teszik az adatok írását a függvényből (kimeneti kötésből) kötési paraméterek használatával. A függvény eseményindítója lényegében egy speciális típusú bemeneti kötés.

A függvény adott forgatókönyvének megfelelően különböző kötéseket keverhet és egyeztethet. A kötések opcionálisak, és egy függvény egy vagy több bemeneti, illetve kimeneti kötéssel is rendelkezhet.

Az eseményindítók és kötések segítségével elkerülheti a más szolgáltatásokhoz való hozzáférés korlátozását. A függvény függvényparaméterekben kapja meg az adatokat (például egy üzenetsor üzenetének tartalmát). Az adatokat (például egy üzenetsor üzenetének tartalmát) a függvény által visszaadott értékek használatával küldheti el.

Tekintse meg az alábbi példákat arra, hogyan implementálhat különböző függvényeket.

Példaforgatókönyv Eseményindító Bemeneti kötés Kimeneti kötés
Megérkezik egy új üzenetsor, amely egy függvényt futtat egy másik üzenetsorba való íráshoz. Sor* Egyik sem Sor*
Egy ütemezett feladat beolvassa a Blob Storage tartalmát, és létrehoz egy új Azure Cosmos DB-dokumentumot. Időzítő Blob Storage Azure Cosmos DB
Az Event Grid a Blob Storage-ból származó kép és az Azure Cosmos DB-ből származó dokumentumok olvasására szolgál e-mail küldéséhez. Event Grid Blob Storage és Azure Cosmos DB SendGrid

* Különböző üzenetsorokat jelöl

Ezek a példák nem a teljesség igénye nélkül, hanem az eseményindítók és kötések együttes használatának szemléltetésére szolgálnak. Az átfogóbb forgatókönyvekért tekintse meg az Azure Functions-forgatókönyveket.

Tipp.

A függvényekhez nem szükséges bemeneti és kimeneti kötéseket használnia az Azure-szolgáltatásokhoz való csatlakozáshoz. A kódban mindig létrehozhat egy Azure SDK-ügyfelet, és használhatja azt az adatátvitelhez. További információ: Csatlakozás a szolgáltatásokhoz.

Trigger- és kötésdefiníciók

Egy függvény egyetlen eseményindítóval és egy vagy több kötéssel rendelkezik. A kötés típusa bemenet vagy kimenet. Nem minden szolgáltatás támogatja mind a bemeneti, mind a kimeneti kötéseket. Konkrét kötéskód-példákért tekintse meg az adott kötésbővítményt.

Az eseményindítók és kötések a fejlesztési nyelvtől függően eltérően vannak definiálva. Ügyeljen arra, hogy a cikk tetején válassza ki a nyelvet.

Ez a példa egy HTTP által aktivált függvényt mutat be egy kimeneti kötéssel, amely üzenetet ír egy Azure Storage-üzenetsorba.

C#-osztálytárfüggvények esetén az eseményindítók és kötések c# attribútumokkal rendelkező dekorálási metódusokkal és paraméterekkel vannak konfigurálva, ahol az alkalmazott attribútum a C# futtatókörnyezeti modelltől függhet:

A HTTP-eseményindító (HttpTrigger) egy objektumot visszaadó MultiResponse függvény metódusán Run van definiálvaHttpExample:

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

Ez a példa azt az MultiResponse objektumdefiníciót mutatja be, amely mindkettő egy HTTP-kérésnek ad vissza, HttpResponse és egy üzenetsorba is ír egy kötéssel QueueOutput :

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

További információkért tekintse meg a C# izolált feldolgozómodell-útmutatót.

Az örökölt C# szkriptfüggvények function.json definíciós fájlt használnak. További információ: Azure Functions C# szkript (.csx) fejlesztői referencia.

Java-függvények esetén az eseményindítók és kötések adott metódusok és paraméterek megjegyzésével vannak konfigurálva. Ez a HTTP-eseményindító (@HttpTrigger) egy nevű HttpTriggerQueueOutputfüggvény metódusán van definiálva, amely a paraméter megjegyzése által @QueueOutput meghatározott tárolási üzenetsorba message ír:run

@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.");

További információt a Java fejlesztői útmutatójában talál.

Az eseményindítók és kötések Node.js függvényekhez való definiálásának módja a függvények Node.js adott verziójától függ:

A Functions 4-es verziójának Node.js eseményindítókat és kötéseket konfigurálhat a @azure/functions modulból exportált objektumok használatával. További információ: Node.js fejlesztői útmutató.

Ez a példa egy HTTP által aktivált függvény, amely minden fogadott HTTP-kéréshez létrehoz egy üzenetsor-elemet.

Az http exportált app objektum metódusa egy HTTP-eseményindítót határoz meg, a storageQueue metódus output pedig egy kimeneti kötést határoz meg ezen az eseményindítón.

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.' };
    },
});

Az http exportált app objektum metódusa egy HTTP-eseményindítót határoz meg, a storageQueue metódus output pedig egy kimeneti kötést határoz meg ezen az eseményindítón.

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,
});

Ez a példafájl function.json határozza meg a függvényt:

    {
      "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"
    }
  ]
}

További információt a PowerShell fejlesztői útmutatójában talál.

A függvény definiálásának módja a Python for Functions verziójától függ:

A Python for Functions 2-es verziójában a függvényt közvetlenül kódban definiálja dekorátorok használatával.

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.')

Kötések hozzáadása függvényhez

A függvényt bemeneti vagy kimeneti kötések használatával csatlakoztathatja más szolgáltatásokhoz. Adjon hozzá egy kötést úgy, hogy hozzáadja annak meghatározott definícióit a függvényhez. További információ: Kötések hozzáadása meglévő függvényekhez az Azure Functionsben.

Az Azure Functions több kötést is támogat, amelyeket megfelelően kell konfigurálni. A függvények például beolvashatják az adatokat egy üzenetsorból (bemeneti kötésből), és adatokat írhatnak egy adatbázisba (kimeneti kötésbe).

Támogatott kötések

Ez a táblázat az Azure Functions-futtatókörnyezet fő verzióiban támogatott kötéseket mutatja be:

Típus 1.x1 2.x és magasabb2 Eseményindító Bevitel Hozam
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Event Grid
Event Hubs
HTTP > webhookok
IoT hub
Kafka3
Mobile Apps
Értesítési központ
Queue Storage
Redis
RabbitMQ3
SendGrid
Szolgáltatásbusz
SignalR
Table Storage
Időzítő
Twilio

Megjegyzések:

  1. Az Azure Functions-futtatókörnyezet 1.x verziójának támogatása 2026. szeptember 14-én megszűnik. Javasoljuk, hogy a teljes támogatás érdekében migrálja az alkalmazásokat a 4.x-es verzióra.
  2. A 2.x-es futtatókörnyezettől kezdve a HTTP és az Időzítő kivételével minden kötést regisztrálni kell. Lásd: Kötésbővítmények regisztrálása.
  3. Az eseményindítók nem támogatottak a Használat csomagban. Futásidejű eseményindítókat igényel.
  4. Csak a Kubernetesben, az IoT Edge-ben és más saját üzemeltetésű módokban támogatott.

További információ arról, hogy mely kötések vannak előzetes verzióban, vagy melyeket hagytak jóvá éles használatra, lásd a támogatott nyelveket.

Az egyes kötésbővítmény-verziók csak akkor támogatottak, ha a mögöttes szolgáltatás SDK támogatott. A mögöttes szolgáltatás SDK-verziójának támogatása hatással van a fogyasztó bővítmény támogatására.

Kötések – kódpéldák

Az alábbi táblázat segítségével további példákat talál bizonyos kötéstípusokra, amelyek bemutatják, hogyan használhat kötéseket a függvényekben. Először válassza ki a projektnek megfelelő nyelvi lapot.

A C# kötéskódja az adott folyamatmodelltől függ.

Szolgáltatás Példák Példák
Blob Storage Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Cosmos DB Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Adatkezelő Input (Bemenet)
Hozam
Láncszem
Azure SQL Eseményindító
Input (Bemenet)
Hozam
Láncszem
Event Grid Eseményindító
Hozam
Láncszem
Event Hubs Eseményindító
Hozam
IoT Hub Eseményindító
Hozam
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Hozam
Láncszem
RabbitMQ Eseményindító
Hozam
SendGrid Hozam
Service Bus Eseményindító
Hozam
Láncszem
SignalR Eseményindító
Input (Bemenet)
Hozam
Table Storage Input (Bemenet)
Hozam
Időzítő Eseményindító Láncszem
Twilio Hozam Láncszem
Szolgáltatás Példák Példák
Blob Storage Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Cosmos DB Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Adatkezelő Input (Bemenet)
Hozam
Láncszem
Azure SQL Eseményindító
Input (Bemenet)
Hozam
Event Grid Eseményindító
Hozam
Láncszem
Event Hubs Eseményindító
Hozam
IoT Hub Eseményindító
Hozam
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Hozam
Láncszem
RabbitMQ Eseményindító
Hozam
SendGrid Hozam
Service Bus Eseményindító
Hozam
Láncszem
SignalR Eseményindító
Input (Bemenet)
Hozam
Table Storage Input (Bemenet)
Hozam
Időzítő Eseményindító Láncszem
Twilio Hozam Láncszem
Szolgáltatás Példák Példák
Blob Storage Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Cosmos DB Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Adatkezelő Input (Bemenet)
Hozam
Azure SQL Eseményindító
Input (Bemenet)
Hozam
Láncszem
Event Grid Eseményindító
Hozam
Láncszem
Event Hubs Eseményindító
Hozam
IoT Hub Eseményindító
Hozam
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Hozam
Láncszem
RabbitMQ Eseményindító
Hozam
SendGrid Hozam
Service Bus Eseményindító
Hozam
Láncszem
SignalR Eseményindító
Input (Bemenet)
Hozam
Table Storage Input (Bemenet)
Hozam
Időzítő Eseményindító Láncszem
Twilio Hozam Láncszem
Szolgáltatás Példák Példák
Blob Storage Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Cosmos DB Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure SQL Eseményindító
Input (Bemenet)
Hozam
Event Grid Eseményindító
Hozam
Láncszem
Event Hubs Eseményindító
Hozam
IoT Hub Eseményindító
Hozam
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Hozam
Láncszem
RabbitMQ Eseményindító
Hozam
SendGrid Hozam
Service Bus Eseményindító
Hozam
Láncszem
SignalR Eseményindító
Input (Bemenet)
Hozam
Table Storage Input (Bemenet)
Hozam
Időzítő Eseményindító Láncszem
Twilio Hozam Láncszem

A Python kötéskódja a Python-modell verziójától függ.

Szolgáltatás Példák Példák
Blob Storage Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Cosmos DB Eseményindító
Input (Bemenet)
Hozam
Láncszem
Azure Adatkezelő Input (Bemenet)
Hozam
Azure SQL Eseményindító
Input (Bemenet)
Hozam
Láncszem
Event Grid Eseményindító
Hozam
Láncszem
Event Hubs Eseményindító
Hozam
IoT Hub Eseményindító
Hozam
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Hozam
Láncszem
RabbitMQ Eseményindító
Hozam
SendGrid Hozam
Service Bus Eseményindító
Hozam
Láncszem
SignalR Eseményindító
Input (Bemenet)
Hozam
Table Storage Input (Bemenet)
Hozam
Időzítő Eseményindító Láncszem
Twilio Hozam Láncszem

Egyéni kötések

Létrehozhat egyéni bemeneti és kimeneti kötéseket. A kötéseket a .NET-ben kell megszerkesíteni, de bármely támogatott nyelvről felhasználhatók. Az egyéni kötések létrehozásával kapcsolatos további információkért lásd: Egyéni bemeneti és kimeneti kötések létrehozása.