Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, işlevler için tetikleyicileri ve bağlamaları çevreleyen üst düzey kavramları öğreneceksiniz.
Tetikleyiciler bir işlevin çalışmasına neden olur. Tetikleyici, bir işlevin nasıl çağrıldığı tanımlar ve bir işlevin tam olarak bir tetikleyicisi olmalıdır. Tetikleyiciler, yöntem çağrılarında olduğu gibi işlevinize de veri geçirebilir.
İşleve bağlama, işlevlerinizi bildirim temelli olarak diğer kaynaklara bağlamanın bir yoludur. Bağlamalar işlevinize veri geçirir (giriş bağlaması) veya bağlama parametrelerini kullanarak işlevinizden (çıkış bağlaması) veri yazmanızı sağlar. İşlev tetikleyiciniz temelde özel bir giriş bağlama türüdür.
Bağlamaları işlevinizin özel senaryosuna uyacak şekilde karıştırabilir ve eşleştirebilirsiniz. Bağlamalar isteğe bağlıdır ve bir işlevin bir veya birden çok giriş ve/veya çıkış bağlaması olabilir.
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.
İşlevleri nasıl uygulayabileceğinize ilişkin aşağıdaki örnekleri göz önünde bulundurun:
| Örnek senaryo | Tetikle | Girdi bağlama | Çıkış bağlantısı |
|---|---|---|---|
| Başka bir kuyruğa yazmak için bir işlev çalıştıran yeni bir kuyruk iletisi gelir. | Kuyruk* | Hiçbiri | Kuyruk* |
| Zamanlanmış bir iş, Azure Blob Depolama içeriğini okur ve yeni bir Azure Cosmos DB belgesi oluşturur. | Zamanlayıcı | Blob Depolama | Azure Cosmos DB veritabanı |
| Azure Event Grid, Blob Depolama'dan bir görüntüyü ve e-posta göndermek için Azure Cosmos DB'den bir belgeyi okumak için kullanılır. | Etkinlik Ağı | Blob Depolama ve Azure Cosmos DB | SendGrid |
* Farklı kuyrukları temsil eder.
Bu örneklerin kapsamlı olması amaçlanmamıştır, ancak tetikleyicileri ve bağlamaları birlikte nasıl kullanabileceğinizi gösterir. Daha kapsamlı bir senaryo kümesi için bkz. Azure İşlevleri senaryolar.
İpucu
Azure İşlevleri, Azure hizmetlerine bağlanmak için giriş ve çıkış bağlamalarını kullanmanızı gerektirmez. İstediğiniz zaman kodunuzda bir Azure SDK istemcisi oluşturabilir ve bunu veri aktarımlarınız için kullanabilirsiniz. Daha fazla bilgi için bkz . Hizmetlere bağlanma.
Tetikleyici ve bağlama tanımları
Aşağıdaki örnekte, Azure Depolama kuyruğuna ileti yazan bir çıkış bağlamasına sahip HTTP ile tetiklenen bir işlev gösterilmektedir.
C# sınıf kitaplığı işlevleri için, C# öznitelikleriyle yöntemleri ve parametreleri süsleyerek tetikleyicileri ve bağlamaları yapılandırabilirsiniz. Uyguladığınız belirli öznitelik C# çalışma zamanı modeline bağlı olabilir:
HTTP tetikleyicisi (HttpTrigger), Run adlı bir işlev için HttpExample yönteminde ve MultiResponse nesnesini döndüren bir işlev olarak tanımlanır.
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
Bu örnekte nesne tanımı gösterilmektedir MultiResponse . Nesne tanımı, HttpResponse değerini HTTP isteğine geri döndürür ve bir QueueOutput bağlama kullanarak depolama kuyruğuna ileti yazar.
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
Daha fazla bilgi için C# yalıtılmış çalışan modelleri kılavuzuna bakın.
Eski C# betik işlevleri bir function.json tanım dosyası kullanır. Daha fazla bilgi için Azure İşlevleri C# betiği (.csx) geliştirici başvurusuna bakın.
Java işlevleri için, belirli yöntemlere ve parametrelere ek açıklama ekleyerek tetikleyicileri ve bağlamaları yapılandırabilirsiniz. Bu HTTP tetikleyicisi (@HttpTrigger), run yöntemi üzerinde HttpTriggerQueueOutput adlı bir işlev için tanımlanır. İşlev, @QueueOutput açıklamasının message parametresinde tanımladığı bir depolama kuyruğuna yazar.
@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.");
Daha fazla bilgi için bkz . Java geliştirici kılavuzu.
Node.js işlevleri için tetikleyicileri ve bağlamaları tanımlama şekliniz, Azure İşlevleri için Node.js'nin belirli sürümüne bağlıdır:
İhraç edilen http nesnesindeki app yöntemi bir HTTP tetikleyicisini tanımlar.
storageQueue üzerinde output yöntemi, bu tetikleyicinin çıkış bağlamasını tanımlar.
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.' };
},
});
İhraç edilen http nesnesindeki app yöntemi bir HTTP tetikleyicisini tanımlar.
storageQueue üzerinde output yöntemi, bu tetikleyicinin çıkış bağlamasını tanımlar.
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,
});
Bu örnek function.json dosya işlevi tanımlar:
{
"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"
}
]
}
Daha fazla bilgi için bkz . PowerShell geliştirici kılavuzu.
İşlevin tanımlanma şekli, Azure İşlevleri için Python sürümüne bağlıdır:
Azure İşlevleri için Python sürüm 2'de, dekoratörleri kullanarak işlevi doğrudan kodda tanımlarsınız:
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.')
Bağlama ile ilgili dikkat edilmesi gerekenler
Tüm hizmetler hem giriş hem de çıkış bağlamalarını desteklemez. Bağlamalar için belirli kod örnekleri için belirli bağlama uzantınıza bakın.
Tetikleyiciler ve bağlamalar geliştirme diline bağlı olarak farklı şekilde tanımlanır. Bu makalenin en üstünde dilinizi seçtiğinizden emin olun.
Tetikleyici ve bağlama adları alfasayısal karakterlerle ve
_alt çizgiyle sınırlıdır.
İşleve bağlama ekleme görevi
Giriş veya çıkış bağlamalarını kullanarak işlevinizi diğer hizmetlere bağlayabilirsiniz. İşlevinize belirli tanımlarını ekleyerek bağlama ekleyin. Nasıl yapılacağını öğrenmek için bkz. Azure İşlevleri'da var olan bir işleve bağlama ekleme.
Azure İşlevleri doğru yapılandırılması gereken birden çok bağlamayı destekler. Örneğin, bir işlev bir kuyruktan (giriş bağlaması) verileri okuyabilir ve verileri aynı anda bir veritabanına (çıkış bağlaması) yazabilir.
Desteklenen bağlamalar
Bu tabloda, Azure İşlevleri çalışma zamanının ana sürümlerinde desteklenen bağlamalar gösterilmektedir:
| Tür | 1.x1 | 2.x ve üzeri2 | Tetikle | Girdi | Çıktı |
|---|---|---|---|---|---|
| Blob Depolama | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Veri Gezgini | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Event Grid | ✔ | ✔ | ✔ | ✔ | |
| Event Hubs | ✔ | ✔ | ✔ | ✔ | |
| HTTP ve web kancaları | ✔ | ✔ | ✔ | ✔ | |
| IoT Hub | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Mobile Apps | ✔ | ✔ | ✔ | ||
| Model Bağlam Protokolü | ✔ | ✔ | |||
| Notification Hubs | ✔ | ✔ | |||
| Kuyruk Depolama | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Servis Veri Yolu | ✔ | ✔ | ✔ | ✔ | |
| Azure SignalR Hizmeti | ✔ | ✔ | ✔ | ✔ | |
| Tablo Saklama | ✔ | ✔ | ✔ | ✔ | |
| Zamanlayıcı | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1Azure İşlevleri çalışma zamanının 1.x sürümü için destek 14 Eylül 2026'da sona erecektir. Tam destek için uygulamalarınızı 4.x sürümüne geçirmenizi kesinlikle öneririz.
2 Sürüm 2.x çalışma zamanından itibaren HTTP ve zamanlayıcı dışındaki tüm bağlamaların kaydedilmesi gerekir. Bkz Azure İşlevleri için bağlama uzantılarını kaydetme.
3 Tetikleyiciler Tüketim planında desteklenmez. Bu bağlama türü , çalışma zamanı temelli tetikleyiciler gerektirir.
4 Bu bağlama türü yalnızca Kubernetes, Azure IoT Edge ve diğer şirket içinde barındırılan modlarda desteklenir.
Hangi bağlamaların önizleme aşamasında olduğu veya üretim kullanımı için onaylandığı hakkında bilgi için bkz . Desteklenen diller.
Bağlama uzantılarının belirli sürümleri yalnızca temel hizmet SDK'sı desteklenirken desteklenir. Temel alınan hizmet SDK'sı sürümünde yapılan destek değişiklikleri, tüketen uzantı desteğini etkiler.
Bağlamalar için kod örnekleri
İşlevlerinizdeki bağlamalarla nasıl çalışabileceğinizi gösteren belirli bağlama türlerinin daha fazla örneğini bulmak için aşağıdaki tabloyu kullanın. İlk olarak, projenize karşılık gelen dil sekmesini seçin.
C# için bağlama kodu, belirli işlem modeline bağlıdır.
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Cosmos DB veritabanı |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Veri Gezgini |
Girdi Çıktı |
Bağlantı |
| Azure SQL |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Etkinlik Ağı |
Tetikleyici Çıktı |
Bağlantı |
| Event Hubs |
Tetikleyici Çıktı |
|
| IoT Merkezi |
Tetikleyici Çıktı |
|
| HTTP | Tetikleyici | Bağlantı |
| Sıra Depolama |
Tetikleyici Çıktı |
Bağlantı |
| RabbitMQ |
Tetikleyici Çıktı |
|
| SendGrid | Çıktı | |
| Hizmet Otobüsü |
Tetikleyici Çıktı |
Bağlantı |
| Azure SignalR Hizmeti |
Tetikleyici Girdi Çıktı |
|
| Tablo Saklama |
Girdi Çıktı |
|
| Zamanlayıcı | Tetikleyici | Bağlantı |
| Twilio | Çıktı | Bağlantı |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Cosmos DB veritabanı |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Veri Gezgini |
Girdi Çıktı |
Bağlantı |
| Azure SQL |
Tetikleyici Girdi Çıktı |
|
| Etkinlik Ağı |
Tetikleyici Çıktı |
Bağlantı |
| Event Hubs |
Tetikleyici Çıktı |
|
| IoT Merkezi |
Tetikleyici Çıktı |
|
| HTTP | Tetikleyici | Bağlantı |
| Sıra Depolama |
Tetikleyici Çıktı |
Bağlantı |
| RabbitMQ |
Tetikleyici Çıktı |
|
| SendGrid | Çıktı | |
| Hizmet Otobüsü |
Tetikleyici Çıktı |
Bağlantı |
| Azure SignalR Hizmeti |
Tetikleyici Girdi Çıktı |
|
| Tablo Saklama |
Girdi Çıktı |
|
| Zamanlayıcı | Tetikleyici | Bağlantı |
| Twilio | Çıktı |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Cosmos DB veritabanı |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Veri Gezgini |
Girdi Çıktı |
|
| Azure SQL |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Etkinlik Ağı |
Tetikleyici Çıktı |
|
| Event Hubs |
Tetikleyici Çıktı |
|
| IoT Merkezi |
Tetikleyici Çıktı |
|
| HTTP | Tetikleyici | Bağlantı |
| Sıra Depolama |
Tetikleyici Çıktı |
Bağlantı |
| RabbitMQ |
Tetikleyici Çıktı |
|
| SendGrid | Çıktı | |
| Hizmet Otobüsü |
Tetikleyici Çıktı |
Bağlantı |
| Azure SignalR Hizmeti |
Tetikleyici Girdi Çıktı |
|
| Tablo Saklama |
Girdi Çıktı |
|
| Zamanlayıcı | Tetikleyici | |
| Twilio | Çıktı |
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Tetikleyici Girdi Çıktı |
|
| Azure Cosmos DB veritabanı |
Tetikleyici Girdi Çıktı |
|
| Azure SQL |
Tetikleyici Girdi Çıktı |
|
| Etkinlik Ağı |
Tetikleyici Çıktı |
|
| Event Hubs |
Tetikleyici Çıktı |
|
| IoT Merkezi |
Tetikleyici Çıktı |
|
| HTTP | Tetikleyici | Bağlantı |
| Sıra Depolama |
Tetikleyici Çıktı |
|
| RabbitMQ |
Tetikleyici Çıktı |
|
| SendGrid | Çıktı | |
| Hizmet Otobüsü |
Tetikleyici Çıktı |
|
| Azure SignalR Hizmeti |
Tetikleyici Girdi Çıktı |
|
| Tablo Saklama |
Girdi Çıktı |
|
| Zamanlayıcı | Tetikleyici | |
| Twilio | Çıktı |
Python için bağlama kodu, Python modeli sürümüne bağlıdır.
| Hizmet | Örnekler | Örnekler |
|---|---|---|
| Blob Depolama |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Cosmos DB veritabanı |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Azure Veri Gezgini |
Girdi Çıktı |
|
| Azure SQL |
Tetikleyici Girdi Çıktı |
Bağlantı |
| Etkinlik Ağı |
Tetikleyici Çıktı |
|
| Event Hubs |
Tetikleyici Çıktı |
|
| IoT Merkezi |
Tetikleyici Çıktı |
|
| HTTP | Tetikleyici | Bağlantı |
| Sıra Depolama |
Tetikleyici Çıktı |
|
| RabbitMQ |
Tetikleyici Çıktı |
|
| SendGrid | Çıktı | |
| Hizmet Otobüsü |
Tetikleyici Çıktı |
Bağlantı |
| Azure SignalR Hizmeti |
Tetikleyici Girdi Çıktı |
|
| Tablo Saklama |
Girdi Çıktı |
|
| Zamanlayıcı | Tetikleyici | |
| Twilio | Çıktı |
Özel bağlamalar
Özel giriş ve çıkış bağlamaları oluşturabilirsiniz. Bağlamaların .NET'te yazılması gerekir, ancak desteklenen herhangi bir dilden kullanılabilir. Özel bağlamalar oluşturma hakkında daha fazla bilgi için bkz . Özel giriş ve çıkış bağlamaları oluşturma.