Aracılığıyla paylaş


Bağlamaları kullanarak işlevleri Azure hizmetlerine bağlama

Bir işlev oluşturduğunuzda, proje ortamınıza bir dizi tetikleyici şablonundan dile özgü tetikleyici kodu eklenir. İşlevinizi giriş veya çıkış bağlamalarını kullanarak diğer hizmetlere bağlamak istiyorsanız, işlevinize belirli bağlama tanımları eklemeniz gerekir. Bağlamalar hakkında daha fazla bilgi edinmek için bkz. Azure Functions tetikleyicileri ve bağlamaları kavramları.

Yerel geliştirme

İşlevleri yerel olarak geliştirirken, bağlama eklemek için işlev kodunu güncelleştirmeniz gerekir. function.jsonkullanan diller için Visual Studio Code işlevine bağlama eklemek için araçlar sağlar.

Örneklere göre bağlamaları el ile ekleme

Var olan bir işleve bağlama eklerken, koddaki işlev tanımına bağlamaya özgü öznitelikler eklemeniz gerekir.

Var olan bir işleve bağlama eklerken, koddaki işlev tanımına bağlamaya özgü ek açıklamalar eklemeniz gerekir.

Var olan bir işleve bağlama eklerken işlev kodunu güncelleştirmeniz ve function.json yapılandırma dosyasına bir tanım eklemeniz gerekir.

Var olan bir işleve bağlama eklerken, modelinize bağlı olarak işlev tanımını güncelleştirmeniz gerekir:

Koddaki işlev tanımına bağlama özgü ek açıklamalar eklemeniz gerekir.

Aşağıdaki örnekte, HTTP ile tetiklenen bir işleve Queue Storage çıkış bağlaması eklendikten sonra işlev tanımı gösterilmektedir:

HTTP ile tetiklenen bir işlev bir HTTP yanıtı da döndürdüğünden, işlev hem HTTP hem de kuyruk çıkışını temsil eden bir MultiResponse nesne döndürür.

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

Bu örnek, çıkış bağlamasını MultiResponse içeren nesnenin tanımıdır:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Bu örnekte ASP.NET Core integration kullanılır. ASP.NET Core tümleştirme kullanmıyorsanız, HttpRequestHttpRequestData ve IActionResultHttpResponseData olarak değiştirmeniz gerekir.

İşlev tamamlandığında iletiler kuyruğa gönderilir. Çıkış bağlamasını tanımlama şekliniz işlem modelinize bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.

@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) {

Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

Çıkış bağlamasını tanımlama şekliniz, Node.js modelinizin sürümüne bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.

@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.')

Çıkış bağlamasını tanımlama şekliniz Python modelinizin sürümüne bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

Çıkış bağlamasını tanımlama şekliniz, Node.js modelinizin sürümüne bağlıdır. Daha fazla bilgi ve başvurabileceğiniz örnek bağlama kodlarının bağlantıları için İşleve bağlama ekleme konusuna bakın.

Mevcut bir işlevi güncelleştirmede size yol göstermek için kullanabileceğiniz belirli bağlama türlerinin örneklerini 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
Input
Output
Link
Azure Cosmos DB Tetikleyici
Giriş
Çıkış
Link
Azure Data Explorer Input
Output
Link
Azure SQL Trigger
Input
Output
Link
Etkinlik Ağı Tetikleyici
Çıkış
Link
Event Hubs Tetikleyici
Çıkış
IoT Hub Tetikleyici
Çıkış
HTTP Tetikleyici Link
Kuyruk Depolama Trigger
Output
Link
RabbitMQ Tetikleyici
Çıkış
SendGrid Çıkış
Service Bus Tetikleyici
Çıkış
Link
Azure SignalR Service Tetikleyici
Giriş
Çıkış
Tablo Depolama Input
Output
Zamanlayıcı Tetikleyici Link
Twilio Çıkış Link
Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Input
Output
Link
Azure Cosmos DB Tetikleyici
Giriş
Çıkış
Link
Azure Data Explorer Input
Output
Link
Azure SQL Trigger
Input
Output
Etkinlik Ağı Tetikleyici
Çıkış
Link
Event Hubs Tetikleyici
Çıkış
IoT Hub Tetikleyici
Çıkış
HTTP Tetikleyici Link
Kuyruk Depolama Trigger
Output
Link
RabbitMQ Tetikleyici
Çıkış
SendGrid Çıkış
Service Bus Tetikleyici
Çıkış
Link
Azure SignalR Service Tetikleyici
Giriş
Çıkış
Tablo Depolama Input
Output
Zamanlayıcı Tetikleyici Link
Twilio Çıkış
Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Input
Output
Link
Azure Cosmos DB Tetikleyici
Giriş
Çıkış
Link
Azure Data Explorer Input
Output
Azure SQL Trigger
Input
Output
Link
Etkinlik Ağı Tetikleyici
Çıkış
Event Hubs Tetikleyici
Çıkış
IoT Hub Tetikleyici
Çıkış
HTTP Tetikleyici Link
Kuyruk Depolama Trigger
Output
Link
RabbitMQ Tetikleyici
Çıkış
SendGrid Çıkış
Service Bus Tetikleyici
Çıkış
Link
Azure SignalR Service Tetikleyici
Giriş
Çıkış
Tablo Depolama Input
Output
Zamanlayıcı Tetikleyici
Twilio Çıkış
Hizmet Örnekler Örnekler
Blob Depolama (Blob Storage) Trigger
Input
Output
Azure Cosmos DB Tetikleyici
Giriş
Çıkış
Azure SQL Trigger
Input
Output
Etkinlik Ağı Tetikleyici
Çıkış
Event Hubs Tetikleyici
Çıkış
IoT Hub Tetikleyici
Çıkış
HTTP Tetikleyici Link
Kuyruk Depolama Trigger
Output
RabbitMQ Tetikleyici
Çıkış
SendGrid Çıkış
Service Bus Tetikleyici
Çıkış
Azure SignalR Service Tetikleyici
Giriş
Çıkış
Tablo Depolama Input
Output
Zamanlayıcı Tetikleyici
Twilio Çıkış

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

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

Visual Studio Kodu

İşlevinizi geliştirmek için Visual Studio Code kullandığınızda ve işleviniz function.json bir dosya kullandığında, Azure Functions uzantısı otomatik olarak var olan bir function.json dosyasına bağlama ekleyebilir. Daha fazla bilgi edinmek için bkz. Giriş ve çıkış bağlamaları ekleme.

Azure portal

İşlevlerinizi Azure portal içinde geliştirdiğinizde, belirli bir işlevin Integrate sekmesine giriş ve çıkış bağlamaları eklersiniz. Yeni bağlamalar, dilinize bağlı olarak function.json dosyasına veya yöntem özniteliklerine eklenir. Aşağıdaki makalelerde portalda var olan bir işleve bağlama ekleme örnekleri gösterilmektedir:

Sonraki Adımlar