Tetikleyiciler ve bağlamalar oluşturma

Tamamlandı

Tetikleyiciler bir işlevin çalışmasına neden olur. Tetikleyici bir işlevin nasıl çağrılacağını tanımlar ve işlevin tam olarak bir tetikleyicisi olmalıdır. Tetikleyiciler, genellikle işlevin yükü olarak sağlanan ilgili verilere sahiptir.

İşleve bağlama, başka bir kaynağı işleve bildirimli olarak bağlamanın bir yoludur; bağlamaları giriş bağlamaları, çıkış bağlamaları veya her ikisi olarak bağlanabilir. Bağlamalardan alınan veriler işleve parametre olarak sağlanır.

İhtiyaçlarınıza göre farklı bağlama türlerini bir arada kullanabilirsiniz. Bağlamalar isteğe bağlıdır ve bir işlevde bir veya daha fazla giriş ve/veya çıkış bağlaması bulunabilir.

Tetikleyiciler ve bağlamalar, diğer hizmetlere sabit kodlama erişiminden kaçınmanıza olanak sağlar. İşleviniz verileri (bir kuyruk iletisinin içeriği gibi) işlev parametreleriyle alır. Verileri göndermek (bir kuyruk iletisi oluşturmak gibi) için işlevin dönüş değerini kullanırsınız.

Tetikleyici ve bağlama tanımları

Tetikleyiciler ve bağlamalar geliştirme diline bağlı olarak farklı şekilde tanımlanır.

Dil Tetikleyiciler ve bağlamalar...
C# sınıf kitaplığı C# öznitelikleriyle yöntemleri ve parametreleri süsleme
Java Java ek açıklamalarıyla yöntemleri ve parametreleri süsleme
JavaScript/PowerShell/Python/TypeScript function.json şemasını güncelleştirme

function.json kullanan diller için portal, Tümleştirme sekmesinde bağlama eklemeye yönelik bir kullanıcı arabirimi sağlar. Ayrıca, dosyayı doğrudan portalda işlevinizin Kod + test sekmesinde düzenleyebilirsiniz.

.NET ve Java'da parametre türü, giriş verileri için veri türünü tanımlar. Örneğin, kuyruk tetikleyicisinin metnine bağlanmak için kullanın string , ikili olarak okunacak bir bayt dizisi ve bir nesneye seri durumdan çıkarmak için özel bir tür kullanın. .NET sınıf kitaplığı işlevleri ve Java işlevleri bağlama tanımları için function.json'a güvenmediğinden portalda oluşturulamaz ve düzenlenemez. C# portalı düzenleme, öznitelikler yerine function.json kullanan C# betiğini temel alır.

JavaScript gibi dinamik olarak yazılan diller için function.json dosyasındaki özelliğini kullanındataType. Örneğin, bir HTTP isteğinin içeriğini ikili biçimde okumak için olarak binaryayarlayındataType:

{
    "dataType": "binary",
    "type": "httpTrigger",
    "name": "req",
    "direction": "in"
}

için dataType diğer seçenekler ve'dir streamstring.

Bağlama yönü

Tüm tetikleyicilerin ve bağlamaların function.json dosyasında bir direction özelliği vardır:

  • Tetikleyiciler için yön her zaman in
  • Giriş ve çıkış bağlamaları ve kullanır inout
  • Bazı bağlamalar özel bir yönü inoutdestekler. kullanıyorsanızinout, portaldaki Tümleştir sekmesi aracılığıyla yalnızca Gelişmiş düzenleyici kullanılabilir.

Tetikleyicileri ve bağlamaları yapılandırmak için sınıf kitaplığında öznitelikler kullandığınızda, yön bir öznitelik oluşturucusunda sağlanır veya parametre türünden çıkarılır.

Azure İşlevleri tetikleyici ve bağlama örneği

Azure Kuyruk depolama alanında her yeni ileti görüntülendiğinde Azure Tablo Depolama'ya yeni bir satır yazmak istediğinizi varsayalım. Bu senaryo bir Azure Kuyruk depolaması tetikleyicisi ve bir de Azure Tablo depolamasıçıkış bağlayıcısı kullanılarak gerçekleştirilir.

Bu senaryo için bir function.json dosyası aşağıdadır.

{
  "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"
    }
  ]
}

Dizideki bindings ilk öğe Kuyruk depolama tetikleyicisidir. type ve direction özellikleri tetikleyiciyi tanımlar. özelliği, name kuyruk iletisi içeriğini alan işlev parametresini tanımlar. İzlenecek kuyruğun adı içindedir queueNameve bağlantı dizesi tarafından connectiontanımlanan uygulama ayarındadır.

Dizideki bindings ikinci öğe, Azure Tablo Depolama çıkış bağlamasıdır. type ve direction özellikleri bağlamayı tanımlar. name özelliği, işlevin yeni tablo satırını nasıl sağladığını belirtir. Bu durumda işlev dönüş değeri kullanılır. Tablonun adı içindedir tableNameve bağlantı dizesi tarafından connectiontanımlanan uygulama ayarındadır.

C# betiği örneği

Bu tetikleyici ve bağlama ile çalışan C# betik kodu aşağıdadır. Kuyruk iletisi içeriğini sağlayan parametrenin adının olduğuna orderdikkat edin; function.json dosyasındaki nameözellik değeri olduğundan orderbu ad gereklidir.

#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 örneği

Aynı function.json dosyası bir JavaScript işleviyle kullanılabilir:

// 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);
}

Sınıf kitaplığı örneği

Sınıf kitaplığında aynı tetikleyici ve bağlama bilgileri (kuyruk ve tablo adları, depolama hesapları, giriş ve çıkış için işlev parametreleri) function.json dosyası yerine öznitelikler tarafından sağlanır. Bir örnek aşağıda verilmiştir:

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; }
}

Ek kaynak

Tetikleyicilerin ve bağlamaların daha ayrıntılı örnekleri için lütfen şu adresi ziyaret edin: