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ű HttpTriggerQueueOutput
fü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.");
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:
- 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.
- 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.
- Az eseményindítók nem támogatottak a Használat csomagban. Futásidejű eseményindítókat igényel.
- 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.