Aracılığıyla paylaş


Azure Functions tetikleyicileri ve bağlamaları

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 Storage içeriğini okur ve yeni bir Azure Cosmos DB belgesi oluşturur. Zamanlayıcı Blob Depolama (Blob Storage) Azure Cosmos DB
Azure Event Grid, Blob Storage'dan bir görüntü ve Azure Cosmos DB'den bir belge okumak ve bir e-posta göndermek için kullanılır. Etkinlik Ağı Blob Storage 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 Functions senaryoları.

İpucu

Azure Functions, 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, bir Azure Storage kuyruğuna ileti yazan çı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 MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

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 IActionResult 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 bkz. Azure Functions C# betiği (.csx) geliştirici referansı.

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 HttpExample adlı bir işlev için tanımlanır. işlev, outqueue adlı depolama kuyruğuna @QueueOutput parametresinde msg ek açıklamasının tanımladığı şekilde 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 Functions için belirli Node.js sürümüne bağlıdır:

Azure Functions sürüm 4 için Node.js,@azure/functions modülünden dışarı aktarılan nesneleri kullanarak tetikleyicileri ve bağlamaları yapılandırabilirsiniz. Daha fazla bilgi için Node.js geliştirici kılavuzuna bakın.

İ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 Functions için Python sürümüne bağlıdır:

Azure Functions sürüm 2 için Python'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 Functions'da var olan bir işleve bağlama ekleme.

Azure Functions 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 Functions çalışma zamanının ana sürümlerinde desteklenen bağlamalar gösterilmektedir:

Tür 4.x1 1.x2 Tetikle Girdi Çıktı
Blob Storage
Azure Cosmos DB
Azure Data Explorer
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
Service Bus
Azure SignalR Service
Tablo Saklama
Zamanlayıcı
Twilio
  1. HTTP ve zamanlayıcı dışındaki tüm bağlamaları kaydedin. Bkz. Register Azure Functions bağlama uzantıları. İşlevler çalışma zamanının 1.x sürümü kullanılırken bu adım gerekli değildir.
  2. Support, Azure Functions çalışma zamanının 1.x sürümü için 14 Eylül 2026 tarihinde sona erer. Tam destek için uygulamalarınızı sürüm 4.x'e geçirin.
  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.

SDK türleri

Azure Functions bağlama uzantıları, Azure hizmetlerine bağlanmak için Azure hizmet SDK'larını kullanır. Bağlamalar tarafından kullanılan belirli SDK türleri, işlevlerinizdeki verilerle çalışma şeklinizi etkileyebilir. Bazı bağlamalar, daha zengin işlevsellik ve hizmetle daha iyi tümleştirme sağlayan SDK'ya özgü türleri desteklerken, diğerleri dizeler veya bayt dizileri gibi daha genel türler kullanır. Kullanılabilir olduğunda, SDK'ya özgü türleri kullanmak daha iyi tür güvenliği, daha kolay veri işleme ve hizmete özgü özelliklere erişim gibi avantajlar sağlayabilir.

Bu tablo, şu anda SDK türlerini destekleyen bağlama uzantılarını gösterir:

Extension Türler Destek düzeyi
Azure Blob Storage BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Tetikleyici: GA
Giriş: GA
Azure Cosmos DB CosmosClient
Database
Container
Giriş: GA
Azure Event Grid CloudEvent
EventGridEvent
Tetikleyici: GA
Azure Event Hubs EventData
EventHubProducerClient
Tetikleyici: GA
Azure Queue Storage QueueClient
QueueMessage
Tetikleyici: GA
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Tetikleyici: GA
Azure Table Storage TableClient
TableEntity
Giriş: GA

SDK türleri için dikkat edilmesi gerekenler:

  • Tetikleyici verilerini kullanan bağlama ifadeleri kullanılırken, tetikleyicinin kendisi için SDK türleri kullanılamaz.
  • SDK türü kullanabileceğiniz çıkış senaryoları için, çıktı bağlaması kullanmak yerine doğrudan SDK istemcileri oluşturun ve bu istemcilerle çalışın.
  • Azure Cosmos DB tetikleyicisi Azure Cosmos DB değişiklik akışını kullanır ve değişiklik akışı öğelerini JSON serileştirilebilir türler olarak kullanıma sunar. Sonuç olarak, SDK türleri bu tetikleyici için desteklenmez.

Daha fazla bilgi için C# geliştirici kılavuzundaki SDK türleri bölümüne bakın.

Extension Türler Destek düzeyi Örnekler
Azure Blob Storage BlobClient
ContainerClient
StorageStreamDownloader
Tetikleyici: GA
Giriş: GA
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Giriş: önizleme Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Tetikleyici: önizleme Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Tetikleyici: önizleme Quickstart
ServiceBusReceivedMessage

SDK türleri için dikkat edilmesi gerekenler:

  • SDK türü kullanabileceğiniz çıkış senaryoları için, çıktı bağlaması kullanmak yerine doğrudan SDK istemcileri oluşturun ve bu istemcilerle çalışın.
  • Azure Cosmos DB tetikleyicisi Azure Cosmos DB değişiklik akışını kullanır ve değişiklik akışı öğelerini JSON serileştirilebilir türler olarak kullanıma sunar. Sonuç olarak, SDK türleri bu tetikleyici için desteklenmez.

SDK türleri yalnızca Python v2 programlama modeli kullanılırken desteklenir. Daha fazla bilgi için Python geliştirici kılavuzundaki SDK türü bağlamaları bölümüne bakın.

Extension Türler Destek düzeyi
Azure Blob Storage BlobClient
ContainerClient
ReadableStream
Preview
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Preview

SDK türleri yalnızca Node v4 programlama modeli kullanılırken desteklenir. Daha fazla bilgi için Node.js geliştirici kılavuzundaki SDK türleri bölümüne bakın.

Extension Türler Destek düzeyi
Azure Blob Storage BlobClient
BlobContainerClient
Preview

Daha fazla bilgi için Java geliştirici kılavuzundaki SDK türleri bölümüne bakın.

Önemli

SDK türleri şu anda PowerShell uygulamaları için desteklenmiyor.

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 (Blob Storage) Trigger
Giriş
Çıkış
Link
Azure Cosmos DB Trigger
Giriş
Çıkış
Link
Azure Data Explorer Giriş
Çıkış
Link
Azure SQL Trigger
Giriş
Çıkış
Link
Etkinlik Ağı Trigger
Çıkış
Link
Event Hubs Trigger
Çıkış
IoT Hub Trigger
Çıkış
HTTP Trigger Link
Kuyruk Depolama Trigger
Çıkış
Link
RabbitMQ Trigger
Çıkış
SendGrid Çıkış
Service Bus Trigger
Çıkış
Link
Azure SignalR Service Trigger
Giriş
Çıkış
Tablo Saklama Giriş
Çıkış
Zamanlayıcı Trigger Link
Twilio Çıkış Link
Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Giriş
Çıkış
Link
Azure Cosmos DB Trigger
Giriş
Çıkış
Link
Azure Data Explorer Giriş
Çıkış
Link
Azure SQL Trigger
Giriş
Çıkış
Etkinlik Ağı Trigger
Çıkış
Link
Event Hubs Trigger
Çıkış
IoT Hub Trigger
Çıkış
HTTP Trigger Link
Kuyruk Depolama Trigger
Çıkış
Link
RabbitMQ Trigger
Çıkış
SendGrid Çıkış
Service Bus Trigger
Çıkış
Link
Azure SignalR Service Trigger
Giriş
Çıkış
Tablo Saklama Giriş
Çıkış
Zamanlayıcı Trigger Link
Twilio Çıkış
Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Giriş
Çıkış
Link
Azure Cosmos DB Trigger
Giriş
Çıkış
Link
Azure Data Explorer Giriş
Çıkış
Azure SQL Trigger
Giriş
Çıkış
Link
Etkinlik Ağı Trigger
Çıkış
Event Hubs Trigger
Çıkış
IoT Hub Trigger
Çıkış
HTTP Trigger Link
Kuyruk Depolama Trigger
Çıkış
Link
RabbitMQ Trigger
Çıkış
SendGrid Çıkış
Service Bus Trigger
Çıkış
Link
Azure SignalR Service Trigger
Giriş
Çıkış
Tablo Saklama Giriş
Çıkış
Zamanlayıcı Trigger
Twilio Çıkış
Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Giriş
Çıkış
Azure Cosmos DB Trigger
Giriş
Çıkış
Azure SQL Trigger
Giriş
Çıkış
Etkinlik Ağı Trigger
Çıkış
Event Hubs Trigger
Çıkış
IoT Hub Trigger
Çıkış
HTTP Trigger Link
Kuyruk Depolama Trigger
Çıkış
RabbitMQ Trigger
Çıkış
SendGrid Çıkış
Service Bus Trigger
Çıkış
Azure SignalR Service Trigger
Giriş
Çıkış
Tablo Saklama Giriş
Çıkış
Zamanlayıcı Trigger
Twilio Çıkış

Python için bağlama kodu, Python model sürümüne bağlıdır.

Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Giriş
Çıkış
Link
Azure Cosmos DB Trigger
Giriş
Çıkış
Link
Azure Data Explorer Giriş
Çıkış
Azure SQL Trigger
Giriş
Çıkış
Link
Etkinlik Ağı Trigger
Çıkış
Event Hubs Trigger
Çıkış
IoT Hub Trigger
Çıkış
HTTP Trigger Link
Kuyruk Depolama Trigger
Çıkış
RabbitMQ Trigger
Çıkış
SendGrid Çıkış
Service Bus Trigger
Çıkış
Link
Azure SignalR Service Trigger
Giriş
Çıkış
Tablo Saklama Giriş
Çıkış
Zamanlayıcı Trigger
Twilio Çıkış

Özel bağlamalar

Özel giriş ve çıkış bağlamaları oluşturabilirsiniz. Bağlamalar .NET yazılmalıdır, 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.