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


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

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. Az eseményindítók határozzák meg 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é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.

Különböző kapcsolatokat vagy összekötéseket tetszés szerint kombinálhat, hogy illeszkedjen a függvény adott forgatókönyvéhez. 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 Kiváltó 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* Nincs Sor*
Egy ütemezett feladat beolvassa a Blob Storage tartalmát, és létrehoz egy új Azure Cosmos DB-dokumentumot. Időzítő Blob-tárhely Azure Cosmos DB (adatbázis)
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. Eseményhálózat Blob Storage és Azure Cosmos DB SendGrid

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

Ezek a példák nem a teljesség igényével, 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.

Jótanács

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.

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

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) 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 azt az MultiResponse objektumdefiníciót mutatja be, amely visszaad egy HttpResponse a HTTP-kérésnek, és egy QueueOutput kötés segítségével ír egy üzenetet a tárolói sorba.

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) a run nevű függvény HttpTriggerQueueOutput metódusán van definiálva, amely a @QueueOutput paraméter message megjegyzése által meghatározott tárolási üzenetsorba ír.

@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 a 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 Kiváltó Bemenet Kimenet
Blob-tároló
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Event Grid
Event Hubs
HTTP > webhookok
IoT Hub
Kafka3
Mobilalkalmazások
Értesítési központ
Sor tároló
Redis
RabbitMQ3
SendGrid
Service Bus
SignalR
Táblatár
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. A triggerek nem támogatottak a Fogyasztási tervben. 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 bindingek vannak előzetes megtekintés alatt, vagy melyeket hagytak jóvá éles használatra, lásd a Támogatott nyelv.

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

Kód példák kötésekről

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.

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

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.