Eseményindítók és kötések létrehozása

Befejeződött

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 dataTypefunction.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 és out
  • Egyes kötések speciális irányt inouttámogatnak. Ha használja inout, 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 queueNamevan, és a kapcsolati sztring az alkalmazás által connectionazonosí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 tableNamevan, és a kapcsolati sztring az alkalmazás által connectionazonosí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 orderbiztosító paraméter neve ; ez a név azért szükséges, mert a namefunction.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: