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

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 kapcsolatok segítségével elkerülheti, hogy a más szolgáltatásokhoz való hozzáférés kódba legyen ágyazva. 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 üzenetsori üzenetet) a függvény visszatérési értékének 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 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 egy képet olvas be a Blob Storage-ból és egy dokumentumot az Azure Cosmos DB-ből azzal a céllal, hogy e-mailt küldjön. 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. A forgatókönyvek átfogóbb készletét a Azure Functions forgatókönyvekben talál.

Jótanács

Azure Functions nem kötelező 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

Az alábbi példa egy HTTP-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 MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

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 IActionResult 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ében 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 HttpExample nevű függvénynek. A függvény egy olyan tárolási sorba outqueue ír, amelyet a @QueueOutput annotáció határoz meg a msg 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ó: Java fejlesztői útmutató.

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

A Node.js Azure Functions 4-es verziójához az eseményindítókat és kötéseket a @azure/functions modulból exportált objektumokkal konfigurálhatja. 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 a Azure Functions Python verziójától függ:

A Azure Functions 2- es verziójának Python 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é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ó: Megkötések hozzáadása meglévő függvényhez Azure Functions.

Azure Functions több kötést 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 a Azure Functions futtatókörnyezet fő verzióiban támogatott kötéseket mutatja be:

Típus 4.x1 1.x2 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 Service
Table Storage
időzítő
Twilio
  1. Regisztrálja az összes kötést a HTTP és az időzítő kivételével. Lásd Az Azure Functions kötési bővítményeinek regisztrálása. Ez a lépés nem szükséges a Functions-futtatókörnyezet 1.x-es verziójának használatakor.
  2. A Azure Functions futtatókörnyezet 1.x-es verziójának támogatásának vége 2026. szeptember 14-én. Az alkalmazások áttelepítése a 4.x verzióra a teljes támogatás érdekében.
  3. A triggerek nem támogatottak a Fogyasztási csomagban. Ez a kötéstípus futásidejű triggereket igényel.
  4. Ez a kötéstípus csak a Kubernetesben, a Azure IoT Edge é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.

SDK-típusok

Azure Functions kötésbővítmények Azure szolgáltatás SDK-kkal csatlakoznak Azure szolgáltatásokhoz. A kötések által használt SDK-típusok hatással lehetnek a függvényekben lévő adatok kezelésére. Egyes kötések támogatják az SDK-specifikus típusokat, amelyek gazdagabb funkcionalitást és jobb integrációt biztosítanak a szolgáltatással, míg mások általánosabb típusokat, például sztringeket vagy bájttömböket használnak. Ha elérhető, az SDK-specifikus típusok olyan előnyöket biztosíthatnak, mint a jobb típusbiztonság, az egyszerűbb adatkezelés és a szolgáltatásspecifikus funkciókhoz való hozzáférés.

Ez a táblázat az SDK-típusokat jelenleg támogató kötésbővítményeket jelzi:

Extension Types Támogatási szint
Azure Blob-tároló BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Eseményindító: GA
Bemenet: GA
Azure Cosmos DB CosmosClient
Database
Container
Bemenet: GA
Azure Event Grid CloudEvent
EventGridEvent
Eseményindító: GA
Azure-eseményközpontok EventData
EventHubProducerClient
Eseményindító: GA
Azure Queue Storage QueueClient
QueueMessage
Eseményindító: GA
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Eseményindító: GA
Azure Table Storage TableClient
TableEntity
Bemenet: GA

Az SDK-típusok szempontjai:

  • Az eseményindítók adataira támaszkodó kötési kifejezések használata esetén maga az eseményindító SDK-típusai nem használhatók.
  • Olyan kimeneti forgatókönyvek esetén, ahol SDK-típust használhat, hozzon létre és működjön együtt közvetlenül az SDK-ügyfelekkel a kimeneti kötés használata helyett.
  • A Azure Cosmos DB eseményindító a Azure Cosmos DB változáscsatornát használja, és JSON-szerializálható típusokként teszi elérhetővé a változáscsatorna elemeit. Ennek eredményeképpen az SDK-típusok nem támogatottak az eseményindítóhoz.

További információ: SDK-típusok a C# fejlesztői útmutatójában.

Extension Types Támogatási szint Minták
Azure Blob-tároló BlobClient
ContainerClient
StorageStreamDownloader
Eseményindító: GA
Bemenet: GA
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Bemenet: előzetes verzió Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure-eseményközpontok EventData Eseményindító: előzetes verzió Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Eseményindító: előzetes verzió Quickstart
ServiceBusReceivedMessage

Az SDK-típusok szempontjai:

  • Olyan kimeneti forgatókönyvek esetén, ahol SDK-típust használhat, hozzon létre és működjön együtt közvetlenül az SDK-ügyfelekkel a kimeneti kötés használata helyett.
  • A Azure Cosmos DB eseményindító a Azure Cosmos DB változáscsatornát használja, és JSON-szerializálható típusokként teszi elérhetővé a változáscsatorna elemeit. Ennek eredményeképpen az SDK-típusok nem támogatottak az eseményindítóhoz.

Az SDK-típusok csak a Python v2 programozási modell használatakor támogatottak. További információ: SDK típusú kötések a Python fejlesztői útmutatójában.

Extension Types Támogatási szint
Azure Blob-tároló BlobClient
ContainerClient
ReadableStream
Preview
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Preview

Az SDK-típusok csak a Node v4 programozási modell használatakor támogatottak. További információ: SDK-típusok a Node.js fejlesztői útmutatóban.

Extension Types Támogatási szint
Azure Blob-tároló BlobClient
BlobContainerClient
Preview

További információ: SDK-típusok a Java fejlesztői útmutatójában.

Fontos

Az SDK-típusok jelenleg nem támogatottak a PowerShell-alkalmazásokban.

A Go támogatja az SDK-ügyfélinjektálást olyan triggerekhez, amelyek Azure SDK ügyfeleket biztosítanak. A nyilvános előzetes verzió során a Blob Storage-eseményindítók közvetlenül a kezelőfüggvényben kaphatnak egy hitelesített Azure SDK-*blob.Clientpéldányt.

Extension Types Támogatási szint
Azure Blob-tároló *blob.Client Preview

További információ: Bővítmény-eseményindítók a Go fejlesztői referenciájában.

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 Trigger
Bemenet
Kimenet
Link
Azure Cosmos DB Trigger
Bemenet
Kimenet
Link
Azure Data Explorer Bemenet
Kimenet
Link
Azure SQL Trigger
Bemenet
Kimenet
Link
Event Grid Trigger
Kimenet
Link
Event Hubs Trigger
Kimenet
IoT Hub Trigger
Kimenet
HTTP Trigger Link
Queue Storage Trigger
Kimenet
Link
RabbitMQ Trigger
Kimenet
SendGrid Kimenet
Service Bus Trigger
Kimenet
Link
Azure SignalR Service Trigger
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Trigger Link
Twilio Kimenet Link
Szolgáltatás Példák Minták
Blob Storage Trigger
Bemenet
Kimenet
Link
Azure Cosmos DB Trigger
Bemenet
Kimenet
Link
Azure Data Explorer Bemenet
Kimenet
Link
Azure SQL Trigger
Bemenet
Kimenet
Event Grid Trigger
Kimenet
Link
Event Hubs Trigger
Kimenet
IoT Hub Trigger
Kimenet
HTTP Trigger Link
Queue Storage Trigger
Kimenet
Link
RabbitMQ Trigger
Kimenet
SendGrid Kimenet
Service Bus Trigger
Kimenet
Link
Azure SignalR Service Trigger
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Trigger Link
Twilio Kimenet
Szolgáltatás Példák Minták
Blob Storage Trigger
Bemenet
Kimenet
Link
Azure Cosmos DB Trigger
Bemenet
Kimenet
Link
Azure Data Explorer Bemenet
Kimenet
Azure SQL Trigger
Bemenet
Kimenet
Link
Event Grid Trigger
Kimenet
Event Hubs Trigger
Kimenet
IoT Hub Trigger
Kimenet
HTTP Trigger Link
Queue Storage Trigger
Kimenet
Link
RabbitMQ Trigger
Kimenet
SendGrid Kimenet
Service Bus Trigger
Kimenet
Link
Azure SignalR Service Trigger
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Trigger
Twilio Kimenet
Szolgáltatás Példák Minták
Blob Storage Trigger
Bemenet
Kimenet
Azure Cosmos DB Trigger
Bemenet
Kimenet
Azure SQL Trigger
Bemenet
Kimenet
Event Grid Trigger
Kimenet
Event Hubs Trigger
Kimenet
IoT Hub Trigger
Kimenet
HTTP Trigger Link
Queue Storage Trigger
Kimenet
RabbitMQ Trigger
Kimenet
SendGrid Kimenet
Service Bus Trigger
Kimenet
Azure SignalR Service Trigger
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Trigger
Twilio Kimenet

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

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

Egyéni kötések

Létrehozhat egyéni bemeneti és kimeneti kötéseket. A kötéseket .NET-ben kell megírni, de bármely támogatott nyelvről fogyaszthatók. További információ az egyéni kötések létrehozásáról: Egyéni bemeneti és kimeneti kötések létrehozása.