Tetikleyiciler ve bağlamalar oluşturma
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 binary
ayarlayındataType
:
{
"dataType": "binary",
"type": "httpTrigger",
"name": "req",
"direction": "in"
}
için dataType
diğer seçenekler ve'dir stream
string
.
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
in
out
- Bazı bağlamalar özel bir yönü
inout
destekler. 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 queueName
ve bağlantı dizesi tarafından connection
tanı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 tableName
ve bağlantı dizesi tarafından connection
tanı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 order
dikkat edin; function.json dosyasındaki name
özellik değeri olduğundan order
bu 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: