Eseményindítók és kötések létrehozása
Az eseményindítók okozzák a függvények futtatását. Az eseményindítók határozzák meg a függvények meghívásának módját, és a függvényeknek pontosan egy eseményindítóval kell rendelkezniük. A triggerekhez társított adatok tartoznak, amelyek gyakran a függvény hasznos adataiként vannak megadva.
A függvényhez kötéssel deklaratív módon csatlakoztathat egy másik erőforrást a függvényhez; a kötések bemeneti kötésként, kimeneti kötésként vagy mindkettőként csatlakoztathatók. A kötések adatai a függvények számára paraméterekként vannak megadva.
A különböző kötéseket igény szerint kombinálhatja. 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.
Trigger- és kötésdefiníciók
Az eseményindítók és kötések a fejlesztési nyelvtől függően eltérően vannak meghatározva.
Nyelv | Az eseményindítókat és kötéseket a... |
---|---|
C#-osztálytár | metódusok és paraméterek dekorálása C#-attribútumokkal |
Java | Metódusok és paraméterek dekorálása Java-széljegyzetekkel |
JavaScript/PowerShell/Python/TypeScript | a function.json séma frissítése |
A function.json függvényt használó nyelvek esetében a portál egy felhasználói felületet biztosít a kötések hozzáadásához az Integráció lapon. A fájlt közvetlenül a portálon is szerkesztheti a függvény Kód + teszt lapján.
A .NET-ben és a Java-ban a paramétertípus határozza meg a bemeneti adatok adattípusát. Például egy üzenetsor-eseményindító szövegéhez, egy binárisként olvasható bájttömbhöz, valamint egy egyéni típushoz, a szerializálás egy objektumhoz való törléséhez használható string
. Mivel a .NET-osztálytár függvényei és a Java-függvények nem függenek a function.json függvénnyel a kötésdefiníciókhoz, nem hozhatók létre és szerkeszthetők a portálon. A C#-portál szerkesztése C# szkripten alapul, amely attribútumok helyett function.json fájlt használ.
A dinamikusan beírt nyelvekhez, például a JavaScripthez használja a dataType
function.json fájl tulajdonságát . Ha például egy HTTP-kérelem tartalmát bináris formátumban szeretné olvasni, állítsa a dataType
következőre binary
:
{
"dataType": "binary",
"type": "httpTrigger",
"name": "req",
"direction": "in"
}
Egyéb lehetőségek a következőkre dataType
: stream
és string
.
Kötés iránya
Az összes eseményindító és kötés rendelkezik egy iránytulajdonságsal a function.json fájlban:
- Eseményindítók esetén az irány mindig
in
- Bemeneti és kimeneti kötések használata
in
ésout
- Egyes kötések speciális irányt
inout
támogatnak. Ha használjainout
, csak a Speciális szerkesztő érhető el a portál Integrálás lapján.
Ha attribútumokat használ egy osztálytárban az eseményindítók és kötések konfigurálásához, az irányt egy attribútumkonstruktor adja meg, vagy a paramétertípusból következtet.
Azure Functions-eseményindító és -kötés – példa
Tegyük fel, hogy új sort szeretne írni az Azure Table Storage-ba, amikor új üzenet jelenik meg az Azure Queue Storage-ban. Ez a működés megvalósítható egy Azure Queue-tárolóbeli eseményindítóval, és egy Azure Table-tárolóbeli kimeneti kötéssel.
Íme egy function.json fájl ehhez a forgatókönyvhöz.
{
"bindings": [
{
"type": "queueTrigger",
"direction": "in",
"name": "order",
"queueName": "myqueue-items",
"connection": "MY_STORAGE_ACCT_APP_SETTING"
},
{
"type": "table",
"direction": "out",
"name": "$return",
"tableName": "outTable",
"connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
}
]
}
A tömb első eleme a bindings
Queue Storage-eseményindító. Az type
eseményindító és direction
a tulajdonságok azonosítják az eseményindítót. A name
tulajdonság azonosítja az üzenetsor-tartalmat fogadó függvényparamétert. A monitorozni kívánt üzenetsor neve benne queueName
van, és a kapcsolati sztring az alkalmazás által connection
azonosított beállításban van.
A tömb második eleme az bindings
Azure Table Storage kimeneti kötés. A type
kötés és direction
a tulajdonságok azonosítják a kötést. A name
tulajdonság azt határozza meg, hogy a függvény hogyan biztosítja az új táblasort, ebben az esetben a függvény visszatérési értékének használatával. A tábla neve benne tableName
van, és a kapcsolati sztring az alkalmazás által connection
azonosított beállításban van.
Példa C#-szkriptre
Az alábbi C# szkriptkód működik ezzel az eseményindítóval és kötéssel. Figyelje meg, hogy az üzenetsor üzenettartalmat order
biztosító paraméter neve ; ez a név azért szükséges, mert a name
function.json tulajdonság értéke .order
#r "Newtonsoft.Json"
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
// From an incoming queue message that is a JSON object, add fields and write to Table storage
// The method return value creates a new row in Table Storage
public static Person Run(JObject order, ILogger log)
{
return new Person() {
PartitionKey = "Orders",
RowKey = Guid.NewGuid().ToString(),
Name = order["Name"].ToString(),
MobileNumber = order["MobileNumber"].ToString() };
}
public class Person
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Name { get; set; }
public string MobileNumber { get; set; }
}
JavaScript-példa
Ugyanez a function.json fájl használható JavaScript-függvénnyel:
// From an incoming queue message that is a JSON object, add fields and write to Table Storage
module.exports = async function (context, order) {
order.PartitionKey = "Orders";
order.RowKey = generateRandomId();
context.bindings.order = order;
};
function generateRandomId() {
return Math.random().toString(36).substring(2, 15) +
Math.random().toString(36).substring(2, 15);
}
Példa osztálytárra
Az osztálytárakban ugyanazokat az eseményindító- és kötési információkat – az üzenetsor- és táblaneveket, a tárfiókokat, a bemenet és a kimenet függvényparamétereit – egy function.json fájl helyett attribútumok biztosítják. Bemutatunk egy példát:
public static class QueueTriggerTableOutput
{
[FunctionName("QueueTriggerTableOutput")]
[return: Table("outTable", Connection = "MY_TABLE_STORAGE_ACCT_APP_SETTING")]
public static Person Run(
[QueueTrigger("myqueue-items", Connection = "MY_STORAGE_ACCT_APP_SETTING")]JObject order,
ILogger log)
{
return new Person() {
PartitionKey = "Orders",
RowKey = Guid.NewGuid().ToString(),
Name = order["Name"].ToString(),
MobileNumber = order["MobileNumber"].ToString() };
}
}
public class Person
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Name { get; set; }
public string MobileNumber { get; set; }
}
További erőforrás
Az eseményindítókra és kötésekre vonatkozó részletesebb példákért tekintse meg a következőt:
Segítségre van szüksége? Tekintse meg a hibaelhárítási útmutatót, vagy küldjön visszajelzést hibák bejelentésével.