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


Az Azure Functions eseményindítói és kötései

Ebben a cikkben megismerheti a függvények eseményindítóival és kötéseivel kapcsolatos magas szintű fogalmakat.

Az eseményindítók egy függvény futtatását okozzák. Az eseményindítók meghatározzák a függvények meghívásának módját, és egy függvénynek pontosan egy eseményindítóval kell rendelkeznie. Az eseményindítók a metódushívásokhoz hasonlóan adatokat is továbbíthatnak a függvénybe.

A függvényekhez való 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énynek ( bemeneti kötésnek), 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 kötéseket a függvény adott forgatókönyvének megfelelően kombinálhatja és egyeztetheti. A kötések nem kötelezőek, és egy függvény egy vagy több bemeneti és/vagy kimeneti kötéssel 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 a függvények implementálására:

Példaforgatókönyv Kiváltó Bemeneti kötés Kimeneti kötés
Amikor megérkezik egy új üzenet a sorba, egy függvény fut le, amely egy másik sorba ír. Sor* Nincs Sor*
Egy ütemezett feladat beolvassa az Azure Blob Storage tartalmát, és létrehoz egy új Azure Cosmos DB-dokumentumot. Időzítő Blob Storage Azure Cosmos DB
Az Azure Event Grid a Blob Storage-ból származó rendszerképek és az Azure Cosmos DB-ből származó dokumentumok olvasására szolgál e-mailek küldéséhez. Event Grid Blob Storage és Azure Cosmos DB SendGrid

* Különböző sorokat jelöl.

Ezek a példák nem teljes körűek, de bemutatják, hogyan használhatók együtt az eseményindítók és kötések. Az átfogóbb forgatókönyvekért tekintse meg az Azure Functions-forgatókönyveket.

Jótanács

Az Azure Functions nem követeli meg, hogy bemeneti és kimeneti kötéseket használjon 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

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

A C#-osztálytárfüggvények esetében az eseményindítókat és kötéseket metódusok és paraméterek C# attribútumokkal való dekorálásával konfigurálhatja. Az alkalmazott attribútum a C# futtatókörnyezeti modelltől függhet:

A HTTP-eseményindító (HttpTrigger) a `Run` nevű függvény `HttpExample` metódusán van definiálva, amely egy `MultiResponse` objektumot ad vissza.

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

Ez a példa az objektumdefiníciót MultiResponse mutatja be. Az objektumdefiníció visszatér HttpResponse a HTTP-kéréshez, és egy üzenetet egy kötéssel QueueOutput ír egy tárolósorba.

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

További információért tekintse meg a C# útmutatót izolált munkavállalói modellekhez.

Az örökölt C#-szkriptfüggvények definíciós function.json 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ókat és kötéseket meghatározott metódusok és paraméterek megjegyzésével konfigurálhatja. Ez a HTTP-eseményindító (@HttpTrigger) a run metóduson van definiálva a HttpTriggerQueueOutput nevű függvénynek. A függvény egy tárolási üzenetsorba ír, amelyet a @QueueOutput megjegyzés definiál a message paraméteren:

@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.

A Node.js függvények eseményindítóinak és kötéseinek definiálása az Azure Functions Node.js adott verziójától függ:

Az Azure 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ó.

Az http exportált app objektum metódusa EGY HTTP-eseményindítót határoz meg. A storageQueue metódus definiál egy kimeneti kötést ezzel az eseményindítóval output.

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 definiál egy kimeneti kötést ezzel az eseményindítóval output.

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 az Azure Functions Python verziójától függ:

Az Azure Functions 2-es verziójához készült Pythonban a függvényt közvetlenül kódban definiálhatja 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ési szempontok

  • Nem minden szolgáltatás támogatja mind a bemeneti, mind a kimeneti kötéseket. A kötésekre vonatkozó konkrét kód példákért tekintse meg az adott kötéskiterjesztést.

  • 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.

  • Az eseményindítók és kötések neve alfanumerikus karakterekre és _aláhúzásjelre korlátozódik.

A függvényhez kötéseket hozzáadni kívánt feladat

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 újabb2 Kiváltó Bemenet Kimenet
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Event Grid
Eseményközpontok
HTTP- és webhookok
IoT Hub
Kafka3
Mobilalkalmazások
Modellkörnyezeti protokoll
Értesítési központ
Sorok tárolása
Redis
RabbitMQ3
SendGrid
Service Bus
Azure SignalR Szolgáltatás
Table Storage
időzítő
Twilio

1 AzAzure 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: Azure Functions kötésbővítmények regisztrálása.

3 Az eseményindítók nem támogatottak a Használati tervben. Ez a kötéstípus futásidejű triggereket igényel.

4 Ez a kötéstípus csak a Kubernetesben, az Azure IoT Edge-ben és más saját üzemeltetésű módokban támogatott.

További információ arról, hogy mely bindingek vannak előzetes megtekintés alatt, vagy melyeket hagytak jóvá éles használatra, lásd a Támogatott nyelv.

A kötésbővítmények egyes verziói csak a mögöttes szolgáltatás SDK-jának támogatásával támogatottak. Az alapszolgáltatás SDK-verziójának támogatásában bekövetkező változások hatással vannak a fogyasztók által használt bővítmény támogatására.

Példakódok kötésekhez

Az alábbi táblázat segítségével találhat újabb példákat különféle kötéstípusokra, amelyek bemutatják, hogyan használhatja a kötéseket függvényeidben. 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 Minták
Blob Storage Eseményindító
Bemenet
Kimenet
Azure Cosmos DB Eseményindító
Bemenet
Kimenet
Azure SQL Eseményindító
Bemenet
Kimenet
Event Grid Eseményindító
Kimenet
Event Hubs Eseményindító
Kimenet
IoT Hub Eseményindító
Kimenet
HTTP Eseményindító Hivatkozás
Queue Storage Eseményindító
Kimenet
RabbitMQ Eseményindító
Kimenet
SendGrid Kimenet
Service Bus Eseményindító
Kimenet
Azure SignalR Service Eseményindító
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Eseményindító
Twilio Kimenet

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

Szolgáltatás Példák Minták
Blob Storage Eseményindító
Bemenet
Kimenet
Hivatkozás
Azure Cosmos DB Eseményindító
Bemenet
Kimenet
Hivatkozás
Azure Data Explorer Bemenet
Kimenet
Azure SQL Eseményindító
Bemenet
Kimenet
Hivatkozás
Event Grid Eseményindító
Kimenet
Event Hubs Eseményindító
Kimenet
IoT Hub Eseményindító
Kimenet
HTTP Eseményindító Hivatkozás
Queue Storage Eseményindító
Kimenet
RabbitMQ Eseményindító
Kimenet
SendGrid Kimenet
Service Bus Eseményindító
Kimenet
Hivatkozás
Azure SignalR Service Eseményindító
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Eseményindító
Twilio Kimenet

Egyéni kötések

Létrehozhat egyéni bemeneti és kimeneti kötéseket. A kötéseket a .NET-ben kell használni, 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.