Azure İşlevleri tetikleyicileri ve bağlama kavramları
Bu makalede, işlevlerin tetikleyicilerini ve bağlamalarını çevreleyen üst düzey kavramları öğreneceksiniz.
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, yöntem çağrılarında olduğu gibi işlevinize de veri geçirebilir.
İşleve bağlama, işlevlerinizi diğer kaynaklara bildirim temelli olarak 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.
İşlevinizin özel senaryosuna uyacak şekilde farklı bağlamaları karıştırabilir ve eşleştirebilirsiniz. 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.
Farklı işlevleri nasıl uygulayabileceğinize ilişkin aşağıdaki örnekleri göz önünde bulundurun.
Örnek senaryo | Tetikle | Giriş bağlaması | Çıkış bağlaması |
---|---|---|---|
Başka bir kuyruğa yazmak için bir işlev çalıştıran yeni bir kuyruk iletisi gelir. | Sıra* | Hiçbiri | Sıra* |
Zamanlanmış bir iş Blob Depolama içeriğini okur ve yeni bir Azure Cosmos DB belgesi oluşturur. | Zamanlayıcı | Blob Depolama | Azure Cosmos DB |
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. | Event Grid | 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östermek için sağlanır. Daha kapsamlı bir senaryo kümesi için bkz. Azure İşlevleri senaryolar.
İpucu
İşlevler, 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ı
bir işlevin tek bir tetikleyicisi ve bir veya daha fazla bağlaması vardır. Bağlama türü giriş veya çıkıştır. Tüm hizmetler hem giriş hem de çıkış bağlamalarını desteklemez. Belirli bağlamalar 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. Makalenin üst kısmında dilinizi seçtiğinizden emin olun.
Bu ö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 tetikleyiciler ve bağlamalar, yöntemleri ve parametreleri C# öznitelikleriyle süsleyerek yapılandırılır ve burada uygulanan belirli öznitelik C# çalışma zamanı modeline bağlı olabilir:
HTTP tetikleyicisi (HttpTrigger
), nesnesini döndüren MultiResponse
adlı HttpExample
bir işlevin yönteminde Run
tanımlanır:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
Bu örnek, hem HTTP isteğine bir HttpResponse
döndüren hem de bağlama kullanarak QueueOutput
depolama kuyruğuna ileti yazan nesne tanımını gösterirMultiResponse
:
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 modeli 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 tetikleyiciler ve bağlamalar, belirli yöntemlere ve parametrelere ek açıklama eklenerek yapılandırılır. Bu HTTP tetikleyicisi (@HttpTrigger
), parametresindeki run
ek açıklama tarafından tanımlanan bir depolama kuyruğuna yazan adlı HttpTriggerQueueOutput
işlevin @QueueOutput
message
yönteminde tanımlanır:
@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.
tetikleyicilerin ve bağlamanın Node.js işlevleri için tanımlanma şekli, İşlevler için Node.js'nin belirli sürümüne bağlıdır:
Bu örnek, alınan her HTTP isteği için bir kuyruk öğesi oluşturan HTTP ile tetiklenen bir işlevdir.
Dışarı http
aktarılan app
nesnedeki yöntemi bir HTTP tetikleyicisi storageQueue
tanımlar ve üzerindeki output
yöntemi bu tetikleyicide bir çıkış bağlaması 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.' };
},
});
Dışarı http
aktarılan app
nesnedeki yöntemi bir HTTP tetikleyicisi storageQueue
tanımlar ve üzerindeki output
yöntemi bu tetikleyicide bir çıkış bağlaması 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, İşlevler için Python sürümüne bağlıdır:
İşlevler 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.')
İşleve bağlama ekleme
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 & web kancaları | ✔ | ✔ | ✔ | ✔ | |
IoT Hub | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Kuyruk depolama | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Tablo depolama | ✔ | ✔ | ✔ | ✔ | |
Zamanlayıcı | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Notlar:
- Azure İş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.
- Sürüm 2.x çalışma zamanından itibaren HTTP ve Zamanlayıcı dışındaki tüm bağlamaların kaydedilmesi gerekir. Bkz . Bağlama uzantılarını kaydetme.
- Tetikleyiciler Tüketim planında desteklenmez. Çalışma zamanı temelli tetikleyiciler gerektirir.
- Yalnızca Kubernetes, 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.
Belirli bağlama uzantısı sürümleri yalnızca temel alınan 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ğlama kodu ö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 | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Veri Gezgini | Girdi Çıktı |
Bağlantı |
Azure SQL | Tetikleyici Girdi Çıktı |
Bağlantı |
Event Grid | Tetikleyici Çıktı |
Bağlantı |
Event Hubs | Tetikleyici Çıktı |
|
IoT Hub | Tetikleyici Çıktı |
|
HTTP | Tetikleyici | Bağlantı |
Kuyruk depolama | Tetikleyici Çıktı |
Bağlantı |
RabbitMQ | Tetikleyici Çıktı |
|
SendGrid | Çıktı | |
Service Bus | Tetikleyici Çıktı |
Bağlantı |
SignalR | Tetikleyici Girdi Çıktı |
|
Tablo depolama | Girdi Çıktı |
|
Zamanlayıcı | Tetikleyici | Bağlantı |
Twilio | Çıktı | Bağlantı |
Hizmet | Örnekler | Örnekler |
---|---|---|
Blob depolama | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Cosmos DB | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Veri Gezgini | Girdi Çıktı |
Bağlantı |
Azure SQL | Tetikleyici Girdi Çıktı |
|
Event Grid | Tetikleyici Çıktı |
Bağlantı |
Event Hubs | Tetikleyici Çıktı |
|
IoT Hub | Tetikleyici Çıktı |
|
HTTP | Tetikleyici | Bağlantı |
Kuyruk depolama | Tetikleyici Çıktı |
Bağlantı |
RabbitMQ | Tetikleyici Çıktı |
|
SendGrid | Çıktı | |
Service Bus | Tetikleyici Çıktı |
Bağlantı |
SignalR | Tetikleyici Girdi Çıktı |
|
Tablo depolama | Girdi Çıktı |
|
Zamanlayıcı | Tetikleyici | Bağlantı |
Twilio | Çıktı | Bağlantı |
Hizmet | Örnekler | Örnekler |
---|---|---|
Blob depolama | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Cosmos DB | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Veri Gezgini | Girdi Çıktı |
|
Azure SQL | Tetikleyici Girdi Çıktı |
Bağlantı |
Event Grid | Tetikleyici Çıktı |
Bağlantı |
Event Hubs | Tetikleyici Çıktı |
|
IoT Hub | Tetikleyici Çıktı |
|
HTTP | Tetikleyici | Bağlantı |
Kuyruk depolama | Tetikleyici Çıktı |
Bağlantı |
RabbitMQ | Tetikleyici Çıktı |
|
SendGrid | Çıktı | |
Service Bus | Tetikleyici Çıktı |
Bağlantı |
SignalR | Tetikleyici Girdi Çıktı |
|
Tablo depolama | Girdi Çıktı |
|
Zamanlayıcı | Tetikleyici | Bağlantı |
Twilio | Çıktı | Bağlantı |
Hizmet | Örnekler | Örnekler |
---|---|---|
Blob depolama | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Cosmos DB | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure SQL | Tetikleyici Girdi Çıktı |
|
Event Grid | Tetikleyici Çıktı |
Bağlantı |
Event Hubs | Tetikleyici Çıktı |
|
IoT Hub | Tetikleyici Çıktı |
|
HTTP | Tetikleyici | Bağlantı |
Kuyruk depolama | Tetikleyici Çıktı |
Bağlantı |
RabbitMQ | Tetikleyici Çıktı |
|
SendGrid | Çıktı | |
Service Bus | Tetikleyici Çıktı |
Bağlantı |
SignalR | Tetikleyici Girdi Çıktı |
|
Tablo depolama | Girdi Çıktı |
|
Zamanlayıcı | Tetikleyici | Bağlantı |
Twilio | Çıktı | Bağlantı |
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 | Tetikleyici Girdi Çıktı |
Bağlantı |
Azure Veri Gezgini | Girdi Çıktı |
|
Azure SQL | Tetikleyici Girdi Çıktı |
Bağlantı |
Event Grid | Tetikleyici Çıktı |
Bağlantı |
Event Hubs | Tetikleyici Çıktı |
|
IoT Hub | Tetikleyici Çıktı |
|
HTTP | Tetikleyici | Bağlantı |
Kuyruk depolama | Tetikleyici Çıktı |
Bağlantı |
RabbitMQ | Tetikleyici Çıktı |
|
SendGrid | Çıktı | |
Service Bus | Tetikleyici Çıktı |
Bağlantı |
SignalR | Tetikleyici Girdi Çıktı |
|
Tablo depolama | Girdi Çıktı |
|
Zamanlayıcı | Tetikleyici | Bağlantı |
Twilio | Çıktı | Bağlantı |
Ö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.