Azure İşlevleri için Apache Kafka tetikleyicisi

İşlev kodunuzu Kafka konu başlıklarındaki iletilere yanıt olarak çalıştırmak için Azure İşlevleri'nde Apache Kafka tetikleyicisini kullanın. Ayrıca, işlevinizden bir konuya yazmak için Kafka çıkış bağlaması da kullanabilirsiniz. Kurulum ve yapılandırma ayrıntıları hakkında bilgi için bkz. Azure İşlevleri genel bakış için Apache Kafka bağlamaları.

Önemli

Kafka bağlamaları Esnek Tüketim planı, Elastik Premium Plan ve Ayrılmış (App Service) planındaki İşlevler için kullanılabilir. Bunlar yalnızca İşlevler çalışma zamanının 4.x sürümünde desteklenir.

Örnek

Tetikleyicinin kullanımı, işlev uygulamanızda kullanılan C# modalitesine bağlıdır ve bu modlar aşağıdaki modlardan biri olabilir:

Çalışma zamanından ayrı bir işlemde çalışan yalıtılmış bir çalışan işlem sınıfı kitaplığını kullanan derlenmiş bir C# işlevi.

Kullandığınız öznitelikler belirli olay sağlayıcısına bağlıdır.

Aşağıdaki örnekte, Kafka iletisini Kafka olayı olarak okuyan ve günlüğe kaydeden bir C# işlevi gösterilmektedir:

[Function("KafkaTrigger")]
public static void Run(
    [KafkaTrigger("BrokerList",
                  "topic",
                  Username = "ConfluentCloudUserName",
                  Password = "ConfluentCloudPassword",
                  Protocol = BrokerProtocol.SaslSsl,
                  AuthenticationMode = BrokerAuthenticationMode.Plain,
                  ConsumerGroup = "$Default")] string eventData, FunctionContext context)
{
    var logger = context.GetLogger("KafkaFunction");
    logger.LogInformation($"C# Kafka trigger function processed a message: {JObject.Parse(eventData)["Value"]}");
}

Olayları toplu olarak almak için, aşağıdaki örnekte gösterildiği gibi giriş olarak bir dize dizisi kullanın:

[Function("KafkaTriggerMany")]
public static void Run(
    [KafkaTrigger("BrokerList",
                  "topic",
                  Username = "ConfluentCloudUserName",
                  Password = "ConfluentCloudPassword",
                  Protocol = BrokerProtocol.SaslSsl,
                  AuthenticationMode = BrokerAuthenticationMode.Plain,
                  ConsumerGroup = "$Default",
                  IsBatched = true)] string[] events, FunctionContext context)
{
    foreach (var kevent in events)
    {
        var logger = context.GetLogger("KafkaFunction");
        logger.LogInformation($"C# Kafka trigger function processed a message: {JObject.Parse(kevent)["Value"]}");
    }

Aşağıdaki işlev, Kafka Olayı için iletiyi ve üst bilgileri günlüğe kaydeder:

[Function("KafkaTriggerWithHeaders")]
public static void Run(
    [KafkaTrigger("BrokerList",
                  "topic",
                  Username = "ConfluentCloudUserName",
                  Password = "ConfluentCloudPassword",
                  Protocol = BrokerProtocol.SaslSsl,
                  AuthenticationMode = BrokerAuthenticationMode.Plain,
                  ConsumerGroup = "$Default")] string eventData, FunctionContext context)
{
    var eventJsonObject = JObject.Parse(eventData);
    var logger = context.GetLogger("KafkaFunction");
    logger.LogInformation($"C# Kafka trigger function processed a message: {eventJsonObject["Value"]}");
    var headersJArr = eventJsonObject["Headers"] as JArray;
    logger.LogInformation("Headers for this event: ");
    foreach (JObject header in headersJArr)
    {
        logger.LogInformation($"{header["Key"]} {System.Text.Encoding.UTF8.GetString((byte[])header["Value"])}");

    }
}

Çalışan .NET örneklerinin tamamı için kafka uzantısı deposuna bakın.

Tetikleyicinin kullanımı, Node.js programlama modeli sürümünüze bağlıdır.

Node.js v4 modelinde tetikleyicinizi doğrudan işlev kodunuzda tanımlarsınız. Daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın.

Bu örneklerde, olay sağlayıcıları Confluent veya Azure Event Hubs'dır. Bu örnekler, Kafka iletisini okuyan bir işlev için Kafka tetikleyicisi tanımlamayı gösterir.

const { app } = require("@azure/functions");

async function kafkaTrigger(event, context) {
  context.log("Event Offset: " + event.Offset);
  context.log("Event Partition: " + event.Partition);
  context.log("Event Topic: " + event.Topic);
  context.log("Event Timestamp: " + event.Timestamp);
  context.log("Event Key: " + event.Key);
  context.log("Event Value (as string): " + event.Value);

  let event_obj = JSON.parse(event.Value);

  context.log("Event Value Object: ");
  context.log("   Value.registertime: ", event_obj.registertime.toString());
  context.log("   Value.userid: ", event_obj.userid);
  context.log("   Value.regionid: ", event_obj.regionid);
  context.log("   Value.gender: ", event_obj.gender);
}

app.generic("Kafkatrigger", {
  trigger: {
    type: "kafkaTrigger",
    direction: "in",
    name: "event",
    topic: "topic",
    brokerList: "%BrokerList%",
    username: "%ConfluentCloudUserName%",
    password: "%ConfluentCloudPassword%",
    consumerGroup: "$Default",
    protocol: "saslSsl",
    authenticationMode: "plain",
    dataType: "string"
  },
  handler: kafkaTrigger,
});

Toplu iş içindeki olayları almak için değerini manyşu örneklerde gösterildiği gibi olarak ayarlayıncardinality:

const { app } = require("@azure/functions");

async function kafkaTriggerMany(events, context) {
  for (const event of events) {
    context.log("Event Offset: " + event.Offset);
    context.log("Event Partition: " + event.Partition);
    context.log("Event Topic: " + event.Topic);
    context.log("Event Key: " + event.Key);
    context.log("Event Timestamp: " + event.Timestamp);
    context.log("Event Value (as string): " + event.Value);

    let event_obj = JSON.parse(event.Value);

    context.log("Event Value Object: ");
    context.log("   Value.registertime: ", event_obj.registertime.toString());
    context.log("   Value.userid: ", event_obj.userid);
    context.log("   Value.regionid: ", event_obj.regionid);
    context.log("   Value.gender: ", event_obj.gender);
  }
}

app.generic("kafkaTriggerMany", {
  trigger: {
    type: "kafkaTrigger",
    direction: "in",
    name: "event",
    topic: "topic",
    brokerList: "%BrokerList%",
    username: "%ConfluentCloudUserName%",
    password: "%ConfluentCloudPassword%",
    consumerGroup: "$Default",
    protocol: "saslSsl",
    authenticationMode: "plain",
    dataType: "string",
    cardinality: "MANY"
  },
  handler: kafkaTriggerMany,
});

Tetikleyiciye geçirilen olay için genel bir Avro şeması tanımlayabilirsiniz. Bu örnek, genel bir Avro şemasına sahip belirli sağlayıcının tetikleyicisini tanımlar:

const { app } = require("@azure/functions");

async function kafkaAvroGenericTrigger(event, context) {
  context.log("Processed kafka event: ", event);
  if (context.triggerMetadata?.key !== undefined) {
    context.log("message key: ", context.triggerMetadata?.key);
  }
}

app.generic("kafkaAvroGenericTrigger", {
  trigger: {
    type: "kafkaTrigger",
    direction: "in",
    name: "event",
    protocol: "SASLSSL",
    password: "EventHubConnectionString",
    dataType: "string",
    topic: "topic",
    authenticationMode: "PLAIN",
    avroSchema:
      '{"type":"record","name":"Payment","namespace":"io.confluent.examples.clients.basicavro","fields":[{"name":"id","type":"string"},{"name":"amount","type":"double"},{"name":"type","type":"string"}]}',
    consumerGroup: "$Default",
    username: "$ConnectionString",
    brokerList: "%BrokerList%",
  },
  handler: kafkaAvroGenericTrigger,
});

Çalışan JavaScript örneklerinin tamamı için kafka uzantısı deposuna bakın.

import { app, InvocationContext } from "@azure/functions";

// This is a sample interface that describes the actual data in your event.
interface EventData {
  registertime: number;
  userid: string;
  regionid: string;
  gender: string;
}

export async function kafkaTrigger(
  event: any,
  context: InvocationContext
): Promise<void> {
  context.log("Event Offset: " + event.Offset);
  context.log("Event Partition: " + event.Partition);
  context.log("Event Topic: " + event.Topic);
  context.log("Event Timestamp: " + event.Timestamp);
  context.log("Event Value (as string): " + event.Value);

  let event_obj: EventData = JSON.parse(event.Value);

  context.log("Event Value Object: ");
  context.log("   Value.registertime: ", event_obj.registertime.toString());
  context.log("   Value.userid: ", event_obj.userid);
  context.log("   Value.regionid: ", event_obj.regionid);
  context.log("   Value.gender: ", event_obj.gender);
}

app.generic("Kafkatrigger", {
  trigger: {
    type: "kafkaTrigger",
    direction: "in",
    name: "event",
    topic: "topic",
    brokerList: "%BrokerList%",
    username: "%ConfluentCloudUserName%",
    password: "%ConfluentCloudPassword%",
    consumerGroup: "$Default",
    protocol: "saslSsl",
    authenticationMode: "plain",
    dataType: "string"
  },
  handler: kafkaTrigger,
});

Toplu iş içindeki olayları almak için değerini manyşu örneklerde gösterildiği gibi olarak ayarlayıncardinality:

import { app, InvocationContext } from "@azure/functions";

// This is a sample interface that describes the actual data in your event.
interface EventData {
    registertime: number;
    userid: string;
    regionid: string;
    gender: string;
}

interface KafkaEvent {
    Offset: number;
    Partition: number;
    Topic: string;
    Timestamp: number;
    Value: string;
}

export async function kafkaTriggerMany(
    events: any,
    context: InvocationContext
): Promise<void> {
    for (const event of events) {
        context.log("Event Offset: " + event.Offset);
        context.log("Event Partition: " + event.Partition);
        context.log("Event Topic: " + event.Topic);
        context.log("Event Timestamp: " + event.Timestamp);
        context.log("Event Value (as string): " + event.Value);

        let event_obj: EventData = JSON.parse(event.Value);

        context.log("Event Value Object: ");
        context.log("   Value.registertime: ", event_obj.registertime.toString());
        context.log("   Value.userid: ", event_obj.userid);
        context.log("   Value.regionid: ", event_obj.regionid);
        context.log("   Value.gender: ", event_obj.gender);
    }
}

app.generic("kafkaTriggerMany", {
  trigger: {
    type: "kafkaTrigger",
    direction: "in",
    name: "event",
    topic: "topic",
    brokerList: "%BrokerList%",
    username: "%ConfluentCloudUserName%",
    password: "%ConfluentCloudPassword%",
    consumerGroup: "$Default",
    protocol: "saslSsl",
    authenticationMode: "plain",
    dataType: "string",
    cardinality: "MANY"
  },
  handler: kafkaTriggerMany,
});

Tetikleyiciye geçirilen olay için genel bir Avro şeması tanımlayabilirsiniz. Bu örnek, genel bir Avro şemasına sahip belirli sağlayıcının tetikleyicisini tanımlar:

import { app, InvocationContext } from "@azure/functions";

export async function kafkaAvroGenericTrigger(
  event: any,
  context: InvocationContext
): Promise<void> {
  context.log("Processed kafka event: ", event);
  context.log(
    `Message ID: ${event.id}, amount: ${event.amount}, type: ${event.type}`
  );
  if (context.triggerMetadata?.key !== undefined) {
    context.log(`Message Key : ${context.triggerMetadata?.key}`);
  }
}

app.generic("kafkaAvroGenericTrigger", {
  trigger: {
    type: "kafkaTrigger",
    direction: "in",
    name: "event",
    protocol: "SASLSSL",
    username: "ConfluentCloudUsername",
    password: "ConfluentCloudPassword",
    dataType: "string",
    topic: "topic",
    authenticationMode: "PLAIN",
    avroSchema:
      '{"type":"record","name":"Payment","namespace":"io.confluent.examples.clients.basicavro","fields":[{"name":"id","type":"string"},{"name":"amount","type":"double"},{"name":"type","type":"string"}]}',
    consumerGroup: "$Default",
    brokerList: "%BrokerList%",
  },
  handler: kafkaAvroGenericTrigger,
});

Çalışan TypeScript örneklerinin tamamı için kafka uzantısı deposuna bakın.

Dosyanın belirli özellikleri function.json olay sağlayıcınıza bağlıdır. Bu örneklerde, olay sağlayıcıları Confluent veya Azure Event Hubs'dır. Aşağıdaki örneklerde, Kafka iletisini okuyan ve günlüğe kaydeden bir işlev için Kafka tetikleyicisi gösterilmektedir.

Aşağıdaki function.json dosya, belirli bir sağlayıcı için tetikleyiciyi tanımlar:

{
    "bindings": [
      {
            "type": "kafkaTrigger",
            "name": "kafkaEvent",
            "direction": "in",
            "protocol" : "SASLSSL",
            "password" : "%ConfluentCloudPassword%",
            "dataType" : "string",
            "topic" : "topic",
            "authenticationMode" : "PLAIN",
            "consumerGroup" : "$Default",
            "username" : "%ConfluentCloudUserName%",
            "brokerList" : "%BrokerList%",
            "sslCaLocation": "confluent_cloud_cacert.pem"
        }
    ]
}

İşlev tetiklendiğinde aşağıdaki kod çalışır:

using namespace System.Net

param($kafkaEvent, $TriggerMetadata)

Write-Output "Powershell Kafka trigger function called for message $kafkaEvent.Value"

Olayları toplu olarak almak için, aşağıdaki örneklerde gösterildiği gibi değeri cardinality function.json dosyasında olarak ayarlayınmany:

{
    "bindings": [
      {
            "type": "kafkaTrigger",
            "name": "kafkaEvent",
            "direction": "in",
            "protocol" : "SASLSSL",
            "password" : "%ConfluentCloudPassword%",
            "dataType" : "string",
            "topic" : "topic",
            "authenticationMode" : "PLAIN",
            "cardinality" : "MANY",
            "consumerGroup" : "$Default",
            "username" : "%ConfluentCloudUserName%",
            "brokerList" : "%BrokerList%",
            "sslCaLocation": "confluent_cloud_cacert.pem"
        }
    ]
}

Aşağıdaki kod, olay dizisini ayrıştırıp olay verilerini günlüğe kaydeder:

using namespace System.Net

param($kafkaEvents, $TriggerMetadata)

$kafkaEvents
foreach ($kafkaEvent in $kafkaEvents) {
    $event = $kafkaEvent | ConvertFrom-Json -AsHashtable
    Write-Output "Powershell Kafka trigger function called for message $event.Value"
}

Aşağıdaki kod, üst bilgi verilerini günlüğe kaydeder:

using namespace System.Net

param($kafkaEvents, $TriggerMetadata)

foreach ($kafkaEvent in $kafkaEvents) {
    $kevent = $kafkaEvent | ConvertFrom-Json -AsHashtable
    Write-Output "Powershell Kafka trigger function called for message $kevent.Value"
    Write-Output "Headers for this message:"
    foreach ($header in $kevent.Headers) {
        $DecodedValue = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($header.Value))
        $Key = $header.Key
        Write-Output "Key: $Key Value: $DecodedValue"
    }
}

Tetikleyiciye geçirilen olay için genel bir Avro şeması tanımlayabilirsiniz. Aşağıdaki function.json, genel bir Avro şemasına sahip belirli sağlayıcının tetikleyicisini tanımlar:

{
  "bindings" : [ {
    "type" : "kafkaTrigger",
    "direction" : "in",
    "name" : "kafkaEvent",
    "protocol" : "SASLSSL",
    "password" : "ConfluentCloudPassword",
    "topic" : "topic",
    "authenticationMode" : "PLAIN",
    "avroSchema" : "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}",
    "consumerGroup" : "$Default",
    "username" : "ConfluentCloudUsername",
    "brokerList" : "%BrokerList%"
  } ]
}

İşlev tetiklendiğinde aşağıdaki kod çalışır:

using namespace System.Net

param($kafkaEvent, $TriggerMetadata)

Write-Output "Powershell Kafka trigger function called for message $kafkaEvent.Value"

Çalışan PowerShell örneklerinin tamamı için kafka uzantısı deposuna bakın.

Tetikleyicinin kullanımı, Python programlama modeli sürümünüze bağlıdır.

Python v2 modelinde, dekoratörleri kullanarak tetikleyicinizi doğrudan işlev kodunuzda tanımlarsınız. Daha fazla bilgi için bkz. Azure İşlevleri Python geliştirici kılavuzu.

Bu örnekler, Kafka iletisini okuyan bir işlev için Kafka tetikleyicisi tanımlamayı gösterir.

@KafkaTrigger.function_name(name="KafkaTrigger")
@KafkaTrigger.kafka_trigger(
    arg_name="kevent",
    topic="KafkaTopic",
    broker_list="KafkaBrokerList",
    username="KafkaUsername",
    password="KafkaPassword",
    protocol="SaslSsl",
    authentication_mode="Plain",
    consumer_group="$Default1")
def kafka_trigger(kevent : func.KafkaEvent):
    logging.info(kevent.get_body().decode('utf-8'))
    logging.info(kevent.metadata)

Bu örnek, değerini manyolarak ayarlayarak cardinality toplu işteki olayları alır.

@KafkaTrigger.function_name(name="KafkaTriggerMany")
@KafkaTrigger.kafka_trigger(
    arg_name="kevents",
    topic="KafkaTopic",
    broker_list="KafkaBrokerList",
    username="KafkaUsername",
    password="KafkaPassword",
    protocol="SaslSsl",
    authentication_mode="Plain",
    cardinality="MANY",
    data_type="string",
    consumer_group="$Default2")
def kafka_trigger_many(kevents : typing.List[func.KafkaEvent]):
    for event in kevents:
        logging.info(event.get_body())

Tetikleyiciye geçirilen olay için genel bir Avro şeması tanımlayabilirsiniz.

@KafkaTriggerAvro.function_name(name="KafkaTriggerAvroOne")
@KafkaTriggerAvro.kafka_trigger(
    arg_name="kafkaTriggerAvroGeneric",
    topic="KafkaTopic",
    broker_list="KafkaBrokerList",
    username="KafkaUsername",
    password="KafkaPassword",
    protocol="SaslSsl",
    authentication_mode="Plain",
    consumer_group="$Default",
    avro_schema= "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}")
def kafka_trigger_avro_one(kafkaTriggerAvroGeneric : func.KafkaEvent):
    logging.info(kafkaTriggerAvroGeneric.get_body().decode('utf-8'))
    logging.info(kafkaTriggerAvroGeneric.metadata)

Çalışan Python örneklerinin tamamı için kafka uzantısı deposuna bakın.

Tetikleyicinizi yapılandırmak için kullandığınız ek açıklamalar belirli olay sağlayıcısına bağlıdır.

Aşağıdaki örnekte, Kafka olayının içeriğini okuyan ve günlüğe kaydeden bir Java işlevi gösterilmektedir:

@FunctionName("KafkaTrigger")
public void runSingle(
        @KafkaTrigger(
            name = "KafkaTrigger",
            topic = "topic",  
            brokerList="%BrokerList%",
            consumerGroup="$Default", 
            username = "%ConfluentCloudUsername%", 
            password = "ConfluentCloudPassword",
            authenticationMode = BrokerAuthenticationMode.PLAIN,
            protocol = BrokerProtocol.SASLSSL,
            // sslCaLocation = "confluent_cloud_cacert.pem", // Enable this line for windows.
            dataType = "string"
         ) String kafkaEventData,
        final ExecutionContext context) {
        context.getLogger().info(kafkaEventData);
}

Bir toplu iş içindeki olayları almak için, aşağıdaki örnekte gösterildiği gibi bir giriş dizesini dizi olarak kullanın:

@FunctionName("KafkaTriggerMany")
public void runMany(
        @KafkaTrigger(
            name = "kafkaTriggerMany",
            topic = "topic",  
            brokerList="%BrokerList%",
            consumerGroup="$Default", 
            username = "%ConfluentCloudUsername%", 
            password = "ConfluentCloudPassword",
            authenticationMode = BrokerAuthenticationMode.PLAIN,
            protocol = BrokerProtocol.SASLSSL,
            // sslCaLocation = "confluent_cloud_cacert.pem", // Enable this line for windows.
            cardinality = Cardinality.MANY,
            dataType = "string"
         ) String[] kafkaEvents,
        final ExecutionContext context) {
        for (String kevent: kafkaEvents) {
            context.getLogger().info(kevent);
        }    
}

Aşağıdaki işlev, Kafka Olayı için iletiyi ve üst bilgileri günlüğe kaydeder:

@FunctionName("KafkaTriggerManyWithHeaders")
public void runSingle(
        @KafkaTrigger(
            name = "KafkaTrigger",
            topic = "topic",  
            brokerList="%BrokerList%",
            consumerGroup="$Default", 
            username = "%ConfluentCloudUsername%", 
            password = "ConfluentCloudPassword",
            authenticationMode = BrokerAuthenticationMode.PLAIN,
            protocol = BrokerProtocol.SASLSSL,
            // sslCaLocation = "confluent_cloud_cacert.pem", // Enable this line for windows.
            dataType = "string",
            cardinality = Cardinality.MANY
         ) List<String> kafkaEvents,
        final ExecutionContext context) {
            Gson gson = new Gson(); 
            for (String keventstr: kafkaEvents) {
                KafkaEntity kevent = gson.fromJson(keventstr, KafkaEntity.class);
                context.getLogger().info("Java Kafka trigger function called for message: " + kevent.Value);
                context.getLogger().info("Headers for the message:");
                for (KafkaHeaders header : kevent.Headers) {
                    String decodedValue = new String(Base64.getDecoder().decode(header.Value));
                    context.getLogger().info("Key:" + header.Key + " Value:" + decodedValue);                    
                }                
            }
        }

Tetikleyiciye geçirilen olay için genel bir Avro şeması tanımlayabilirsiniz. Aşağıdaki işlev, genel avro şemasına sahip belirli sağlayıcı için bir tetikleyici tanımlar:

private static final String schema = "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}";

@FunctionName("KafkaAvroGenericTrigger")
public void runOne(
        @KafkaTrigger(
                name = "kafkaAvroGenericSingle",
                topic = "topic",
                brokerList="%BrokerList%",
                consumerGroup="$Default",
                username = "ConfluentCloudUsername",
                password = "ConfluentCloudPassword",
                avroSchema = schema,
                authenticationMode = BrokerAuthenticationMode.PLAIN,
                protocol = BrokerProtocol.SASLSSL) Payment payment,
        final ExecutionContext context) {
    context.getLogger().info(payment.toString());
}

Confluent için çalışan java örneklerinin tamamı için Kafka uzantısı deposuna bakın.

Özellikler

hem işlem içi hem de yalıtılmış çalışan işlemi C# kitaplıkları, işlev tetikleyicisini tanımlamak için öğesini KafkaTriggerAttribute kullanır.

Aşağıdaki tabloda, bu tetikleyici özniteliğini kullanarak ayarlayabileceğiniz özellikler açıklanmaktadır:

Parametre Açıklama
BrokerList (Gerekli) Tetikleyici tarafından izlenen Kafka aracılarının listesi. Daha fazla bilgi için bkz . Bağlantılar .
Konu (Gerekli) Tetikleyici tarafından izlenen konu.
ConsumerGroup (İsteğe bağlı) Tetikleyici tarafından kullanılan Kafka tüketici grubu.
AvroSchema (İsteğe bağlı) Avro protokolü kullanılırken ileti değerinin genel kaydının şeması.
KeyAvroSchema (İsteğe bağlı) Avro protokolü kullanılırken ileti anahtarının genel kaydının şeması.
KeyDataType (İsteğe bağlı) İleti anahtarını Kafka Konusu'ndan almak için veri türü. Ayarlanırsa KeyAvroSchema , bu değer genel kayıttır. Kabul edilen değerler , Long, Stringve BinarydeğerleridirInt.
AuthenticationMode (İsteğe bağlı) Basit Kimlik Doğrulaması ve Güvenlik Katmanı (SASL) kimlik doğrulaması kullanılırken kullanılan kimlik doğrulama modu. Desteklenen değerler şunlardır NotSet : (varsayılan), Gssapi, Plain, ScramSha256, ScramSha512ve OAuthBearer.
Kullanıcı adı (İsteğe bağlı) SASL kimlik doğrulaması için kullanıcı adı. olduğunda AuthenticationModeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
Parola (İsteğe bağlı) SASL kimlik doğrulamasının parolası. olduğunda AuthenticationModeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
Protokol (İsteğe bağlı) Aracılarla iletişim kurarken kullanılan güvenlik protokolü. Desteklenen değerler şunlardır NotSet : (varsayılan), plaintext, ssl, sasl_plaintext, sasl_ssl.
SslCaLocation (İsteğe bağlı) Aracının sertifikasını doğrulamak için CA sertifika dosyasının yolu.
SslCertificateLocation (İsteğe bağlı) İstemci sertifikasının yolu.
SslKeyLocation (İsteğe bağlı) Kimlik doğrulaması için kullanılan istemcinin özel anahtarının (PEM) yolu.
SslKeyPassword (İsteğe bağlı) İstemci sertifikasının parolası.
SslCertificatePEM (İsteğe bağlı) PEM biçimindeki istemci sertifikası dize olarak. Daha fazla bilgi için bkz . Bağlantılar .
SslKeyPEM (İsteğe bağlı) PeM biçimindeki istemci özel anahtarı dize olarak. Daha fazla bilgi için bkz . Bağlantılar .
SslCaPEM (İsteğe bağlı) DIZE olarak PEM biçiminde CA sertifikası. Daha fazla bilgi için bkz . Bağlantılar .
SslCertificateandKeyPEM (İsteğe bağlı) PEM biçiminde dize olarak istemci sertifikası ve anahtarı. Daha fazla bilgi için bkz . Bağlantılar .
SchemaRegistryUrl (İsteğe bağlı) Avro Şema Kayıt Defteri URL'si. Daha fazla bilgi için bkz . Bağlantılar .
SchemaRegistryUsername (İsteğe bağlı) Avro Şema Kayıt Defteri için kullanıcı adı. Daha fazla bilgi için bkz . Bağlantılar .
SchemaRegistryPassword (İsteğe bağlı) Avro Şema Kayıt Defteri parolası. Daha fazla bilgi için bkz . Bağlantılar .
OAuthBearerMethod (İsteğe bağlı) OAuth Taşıyıcı yöntemi. Kabul edilen değerler oidc ve default'dir.
OAuthBearerClientId (İsteğe bağlı) OAuthBearerMethod olarak ayarlandığında oidc, OAuth taşıyıcı istemci kimliğini belirtir. Daha fazla bilgi için bkz . Bağlantılar .
OAuthBearerClientSecret (İsteğe bağlı) OAuthBearerMethod olarak ayarlandığında oidc, OAuth taşıyıcı istemci gizli dizisini belirtir. Daha fazla bilgi için bkz . Bağlantılar .
OAuthBearerScope (İsteğe bağlı) Aracıya erişim isteğinin kapsamını belirtir.
OAuthBearerTokenEndpointUrl (İsteğe bağlı) Yöntem kullanıldığında belirteci oidc almak için kullanılan OAuth/OIDC veren belirteç uç noktası HTTP(S) URI'sini kullanır. Daha fazla bilgi için bkz . Bağlantılar .
OAuthBearerExtensions (İsteğe bağlı) Yöntem kullanıldığında aracıya oidc ek bilgi olarak sağlanacak anahtar=değer çiftlerinin virgülle ayrılmış listesi. Örneğin: supportFeatureX=true,organizationId=sales-emea.

Ek Açıklamalar

Ek KafkaTrigger açıklama, konu aldığında çalışan bir işlev oluşturmanıza olanak tanır. Desteklenen seçenekler aşağıdaki öğeleri içerir:

Öğe Açıklama
ad (Gerekli) İşlev kodundaki kuyruk veya konu iletisini temsil eden değişkenin adı.
brokerList (Gerekli) Tetikleyici tarafından izlenen Kafka aracılarının listesi. Daha fazla bilgi için bkz . Bağlantılar .
topic (Gerekli) Tetikleyici tarafından izlenen konu.
Önem düzeyi (İsteğe bağlı) Tetikleyici girişinin kardinalitesini gösterir. Desteklenen değerler (varsayılan) ve ONE'tir MANY . Giriş tek bir ileti olduğunda ve ONE giriş bir ileti dizisi olduğunda kullanınMANY. kullanırken MANYbir de ayarlamanız dataTypegerekir.
Datatype İşlevler'in parametre değerini nasıl işlediğini tanımlar. Varsayılan olarak, değer bir dize olarak elde edilir ve İşlevler dizeyi gerçek düz eski Java nesnesine (POJO) seri durumdan çıkarmaya çalışır. olduğunda string, giriş yalnızca bir dize olarak değerlendirilir. olduğunda binary, ileti ikili veri olarak alınır ve İşlevler bunu gerçek parametre türü bayt[] olarak seri durumdan çıkarmaya çalışır.
consumerGroup (İsteğe bağlı) Tetikleyici tarafından kullanılan Kafka tüketici grubu.
avroSchema (İsteğe bağlı) Avro protokolü kullanılırken genel bir kaydın şeması.
authenticationMode (İsteğe bağlı) Basit Kimlik Doğrulaması ve Güvenlik Katmanı (SASL) kimlik doğrulaması kullanılırken kullanılan kimlik doğrulama modu. Desteklenen değerler şunlardır NotSet : (varsayılan), Gssapi, Plain, ScramSha256, ScramSha512.
kullanıcı adı (İsteğe bağlı) SASL kimlik doğrulaması için kullanıcı adı. olduğunda AuthenticationModeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
parola (İsteğe bağlı) SASL kimlik doğrulamasının parolası. olduğunda AuthenticationModeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
protokol (İsteğe bağlı) Aracılarla iletişim kurarken kullanılan güvenlik protokolü. Desteklenen değerler şunlardır NotSet : (varsayılan), plaintext, ssl, sasl_plaintext, sasl_ssl.
sslCaLocation (İsteğe bağlı) Aracının sertifikasını doğrulamak için CA sertifika dosyasının yolu.
sslCertificateLocation (İsteğe bağlı) İstemci sertifikasının yolu.
sslKeyLocation (İsteğe bağlı) Kimlik doğrulaması için kullanılan istemcinin özel anahtarının (PEM) yolu.
sslKeyPassword (İsteğe bağlı) İstemci sertifikasının parolası.
lagThreshold (İsteğe bağlı) Tetikleyici için gecikme eşiği.
schemaRegistryUrl (İsteğe bağlı) Avro Şema Kayıt Defteri URL'si. Daha fazla bilgi için bkz . Bağlantılar .
schemaRegistryUsername (İsteğe bağlı) Avro Şema Kayıt Defteri için kullanıcı adı. Daha fazla bilgi için bkz . Bağlantılar .
schemaRegistryPassword (İsteğe bağlı) Avro Şema Kayıt Defteri parolası. Daha fazla bilgi için bkz . Bağlantılar .

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Açıklama
type (Gerekli) olarak kafkaTriggerayarlayın.
direction (Gerekli) olarak inayarlayın.
ad (Gerekli) İşlev kodunda aracılı verileri temsil eden değişkenin adı.
brokerList (Gerekli) Tetikleyici tarafından izlenen Kafka aracılarının listesi. Daha fazla bilgi için bkz . Bağlantılar .
topic (Gerekli) Tetikleyici tarafından izlenen konu.
Önem düzeyi (İsteğe bağlı) Tetikleyici girişinin kardinalitesini gösterir. Desteklenen değerler (varsayılan) ve ONE'tir MANY . Giriş tek bir ileti olduğunda ve ONE giriş bir ileti dizisi olduğunda kullanınMANY. kullanırken MANYbir de ayarlamanız dataTypegerekir.
Datatype İşlevler'in parametre değerini nasıl işlediğini tanımlar. Varsayılan olarak, değer bir dize olarak elde edilir ve İşlevler dizeyi gerçek düz eski Java nesnesine (POJO) seri durumdan çıkarmaya çalışır. olduğunda string, giriş yalnızca bir dize olarak değerlendirilir. olduğunda binary, ileti ikili veri olarak alınır ve İşlevler bunu gerçek bir bayt dizisi parametre türüne seri durumdan çıkarmaya çalışır.
consumerGroup (İsteğe bağlı) Tetikleyici tarafından kullanılan Kafka tüketici grubu.
avroSchema (İsteğe bağlı) Avro protokolü kullanılırken genel bir kaydın şeması.
keyAvroSchema (İsteğe bağlı) Avro protokolü kullanılırken ileti anahtarının genel kaydının şeması.
keyDataType (İsteğe bağlı) İleti anahtarını Kafka Konusu'ndan almak için veri türü. Ayarlanırsa keyAvroSchema , bu değer genel kayıttır. Kabul edilen değerler , Long, Stringve BinarydeğerleridirInt.
authenticationMode (İsteğe bağlı) Basit Kimlik Doğrulaması ve Güvenlik Katmanı (SASL) kimlik doğrulaması kullanılırken kullanılan kimlik doğrulama modu. Desteklenen değerler şunlardır NotSet : (varsayılan), Gssapi, Plain, ScramSha256, ScramSha512.
kullanıcı adı (İsteğe bağlı) SASL kimlik doğrulaması için kullanıcı adı. olduğunda AuthenticationModeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
parola (İsteğe bağlı) SASL kimlik doğrulamasının parolası. olduğunda AuthenticationModeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
protokol (İsteğe bağlı) Aracılarla iletişim kurarken kullanılan güvenlik protokolü. Desteklenen değerler şunlardır NotSet : (varsayılan), plaintext, ssl, sasl_plaintext, sasl_ssl.
sslCaLocation (İsteğe bağlı) Aracının sertifikasını doğrulamak için CA sertifika dosyasının yolu.
sslCertificateLocation (İsteğe bağlı) İstemci sertifikasının yolu.
sslKeyLocation (İsteğe bağlı) Kimlik doğrulaması için kullanılan istemcinin özel anahtarının (PEM) yolu.
sslKeyPassword (İsteğe bağlı) İstemci sertifikasının parolası.
sslCertificatePEM (İsteğe bağlı) PEM biçimindeki istemci sertifikası dize olarak. Daha fazla bilgi için bkz . Bağlantılar .
sslKeyPEM (İsteğe bağlı) PeM biçimindeki istemci özel anahtarı dize olarak. Daha fazla bilgi için bkz . Bağlantılar .
sslCaPEM (İsteğe bağlı) DIZE olarak PEM biçiminde CA sertifikası. Daha fazla bilgi için bkz . Bağlantılar .
sslCertificateandKeyPEM (İsteğe bağlı) PEM biçiminde dize olarak istemci sertifikası ve anahtarı. Daha fazla bilgi için bkz . Bağlantılar .
lagThreshold (İsteğe bağlı) Tetikleyici için gecikme eşiği.
schemaRegistryUrl (İsteğe bağlı) Avro Şema Kayıt Defteri URL'si. Daha fazla bilgi için bkz . Bağlantılar .
schemaRegistryUsername (İsteğe bağlı) Avro Şema Kayıt Defteri için kullanıcı adı. Daha fazla bilgi için bkz . Bağlantılar .
schemaRegistryPassword (İsteğe bağlı) Avro Şema Kayıt Defteri parolası. Daha fazla bilgi için bkz . Bağlantılar .
oAuthBearerMethod (İsteğe bağlı) OAuth Taşıyıcı yöntemi. Kabul edilen değerler oidc ve default'dir.
oAuthBearerClientId (İsteğe bağlı) oAuthBearerMethod olarak ayarlandığında oidc, OAuth taşıyıcı istemci kimliğini belirtir. Daha fazla bilgi için bkz . Bağlantılar .
oAuthBearerClientSecret (İsteğe bağlı) oAuthBearerMethod olarak ayarlandığında oidc, OAuth taşıyıcı istemci gizli dizisini belirtir. Daha fazla bilgi için bkz . Bağlantılar .
oAuthBearerScope (İsteğe bağlı) Aracıya erişim isteğinin kapsamını belirtir.
oAuthBearerTokenEndpointUrl (İsteğe bağlı) Yöntem kullanıldığında belirteci oidc almak için kullanılan OAuth/OIDC veren belirteç uç noktası HTTP(S) URI'sini kullanır. Daha fazla bilgi için bkz . Bağlantılar .

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır. Python, yapılandırma özellikleri için snake_case adlandırma kurallarını kullanır.

function.json özelliği Açıklama
type (Gerekli) olarak kafkaTriggerayarlayın.
direction (Gerekli) olarak inayarlayın.
ad (Gerekli) İşlev kodunda aracılı verileri temsil eden değişkenin adı.
broker_list (Gerekli) Tetikleyici tarafından izlenen Kafka aracılarının listesi. Daha fazla bilgi için bkz . Bağlantılar .
topic (Gerekli) Tetikleyici tarafından izlenen konu.
Önem düzeyi (İsteğe bağlı) Tetikleyici girişinin kardinalitesini gösterir. Desteklenen değerler (varsayılan) ve ONE'tir MANY . Giriş tek bir ileti olduğunda ve ONE giriş bir ileti dizisi olduğunda kullanınMANY. kullanırken MANYbir de ayarlamanız data_typegerekir.
data_type İşlevler'in parametre değerini nasıl işlediğini tanımlar. Varsayılan olarak, değer bir dize olarak elde edilir ve İşlevler dizeyi gerçek düz eski Java nesnesine (POJO) seri durumdan çıkarmaya çalışır. olduğunda string, giriş yalnızca bir dize olarak değerlendirilir. olduğunda binary, ileti ikili veri olarak alınır ve İşlevler bunu gerçek parametre türü bayt[] olarak seri durumdan çıkarmaya çalışır.
consumerGroup (İsteğe bağlı) Tetikleyici tarafından kullanılan Kafka tüketici grubu.
avroSchema (İsteğe bağlı) Avro protokolü kullanılırken genel bir kaydın şeması.
authentication_mode (İsteğe bağlı) Basit Kimlik Doğrulaması ve Güvenlik Katmanı (SASL) kimlik doğrulaması kullanılırken kullanılan kimlik doğrulama modu. Desteklenen değerler şunlardır NOTSET : (varsayılan), Gssapi, Plain, ScramSha256, ScramSha512.
kullanıcı adı (İsteğe bağlı) SASL kimlik doğrulaması için kullanıcı adı. olduğunda authentication_modeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
parola (İsteğe bağlı) SASL kimlik doğrulamasının parolası. olduğunda authentication_modeGssapidesteklenmez. Daha fazla bilgi için bkz . Bağlantılar .
protokol (İsteğe bağlı) Aracılarla iletişim kurarken kullanılan güvenlik protokolü. Desteklenen değerler şunlardır NOTSET : (varsayılan), plaintext, ssl, sasl_plaintext, sasl_ssl.
sslCaLocation (İsteğe bağlı) Aracının sertifikasını doğrulamak için CA sertifika dosyasının yolu.
sslCertificateLocation (İsteğe bağlı) İstemci sertifikasının yolu.
sslKeyLocation (İsteğe bağlı) Kimlik doğrulaması için kullanılan istemcinin özel anahtarının (PEM) yolu.
sslKeyPassword (İsteğe bağlı) İstemci sertifikasının parolası.
lag_threshold (İsteğe bağlı) Tetikleyici için gecikme eşiği.
schema_registry_url (İsteğe bağlı) Avro Şema Kayıt Defteri URL'si. Daha fazla bilgi için bkz . Bağlantılar .
schema_registry_username (İsteğe bağlı) Avro Şema Kayıt Defteri için kullanıcı adı. Daha fazla bilgi için bkz . Bağlantılar .
schema_registry_password (İsteğe bağlı) Avro Şema Kayıt Defteri parolası. Daha fazla bilgi için bkz . Bağlantılar .
o_auth_bearer_method (İsteğe bağlı) OAuth Taşıyıcı yöntemi. Kabul edilen değerler oidc ve default'dir.
o_auth_bearer_client_id (İsteğe bağlı) o_auth_bearer_method olarak ayarlandığında oidc, OAuth taşıyıcı istemci kimliğini belirtir. Daha fazla bilgi için bkz . Bağlantılar .
o_auth_bearer_client_secret (İsteğe bağlı) o_auth_bearer_method olarak ayarlandığında oidc, OAuth taşıyıcı istemci gizli dizisini belirtir. Daha fazla bilgi için bkz . Bağlantılar .
o_auth_bearer_scope (İsteğe bağlı) Aracıya erişim isteğinin kapsamını belirtir.
o_auth_bearer_token_endpoint_url (İsteğe bağlı) Yöntem kullanıldığında belirteci oidc almak için kullanılan OAuth/OIDC veren belirteç uç noktası HTTP(S) URI'sini kullanır. Daha fazla bilgi için bkz . Bağlantılar .

Not

Sertifika PEM ile ilgili özellikler ve Avro anahtarıyla ilgili özellikler henüz Python kitaplığında kullanılamaz.

Kullanım

Kafka tetikleyicisi şu anda Kafka olaylarını JSON yükü olan dizeler ve dize dizileri olarak desteklemektedir.

Kafka tetikleyicisi, Kafka iletilerini işleve dize olarak geçirir. Tetikleyici, JSON yükleri olan dize dizilerini de destekler.

Premium planda, Kafka çıkışının ölçeğini birden çok örneğe genişletmek için çalışma zamanı ölçeği izlemeyi etkinleştirmeniz gerekir. Daha fazla bilgi edinmek için bkz . Çalışma zamanı ölçeklendirmesini etkinleştirme.

Kafka tetikleyicileriyle çalışmak için Azure portalındaki Kod + Test sayfasının Test/Çalıştır özelliğini kullanamazsınız. Bunun yerine, test olaylarını tetikleyici tarafından izlenen konuya doğrudan göndermeniz gerekir.

Kafka tetikleyicisi için desteklenen host.json ayarlarının tamamı için bkz . host.json ayarları.

Bağlantılar

Tetikleyicileriniz ve bağlamalarınız için gereken tüm bağlantı bilgilerini kodunuzdaki bağlama tanımlarında değil uygulama ayarlarında depolayın. Bu kılavuz, kodunuzda hiçbir zaman depolanmaması gereken kimlik bilgileri için geçerlidir.

Önemli

Kimlik bilgileri ayarları bir uygulama ayarına başvurmalıdır. Kod veya yapılandırma dosyalarınızda kimlik bilgilerini sabit kodlamayın. Yerel olarak çalışırken, kimlik bilgileriniz için local.settings.json dosyasını kullanın ve local.settings.json dosyasını yayımlamayın.

Azure'da Confluent tarafından sağlanan yönetilen bir Kafka kümesine bağlanırken aşağıdaki kimlik doğrulama yöntemlerinden birini kullanabilirsiniz.

Not

Flex Consumption planı kullanılırken, dosya konumu tabanlı sertifika kimlik doğrulama özellikleri (SslCaLocation, SslCertificateLocation, SslKeyLocation) desteklenmez. Bunun yerine PEM tabanlı sertifika özelliklerini (SslCaPEM, SslCertificatePEM, SslKeyPEM, SslCertificateandKeyPEM) kullanın veya sertifikaları Azure Key Vault'ta depolayın.

Şema Dizini

Kafka Uzantısında Confluent tarafından sağlanan şema kayıt defterinden yararlanmak için aşağıdaki kimlik bilgilerini ayarlayın:

Ayar Önerilen Değer Açıklama
SchemaRegistryUrl SchemaRegistryUrl Şema yönetimi için kullanılan şema kayıt defteri hizmetinin URL'si. Genellikle biçimin https://psrc-xyz.us-east-2.aws.confluent.cloud
SchemaRegistryUsername CONFLUENT_API_KEY Şema kayıt defterinde temel kimlik doğrulaması için kullanıcı adı (gerekirse).
SchemaRegistryPassword CONFLUENT_API_SECRET Şema kayıt defterinde temel kimlik doğrulaması için parola (gerekirse).

Kullanıcı adı/Parola kimlik doğrulaması

Bu kimlik doğrulama biçimini kullanırken veya ScramSha256PlainSaslSslScramSha512AuthenticationMode olarak ayarlandığından SaslPlaintextProtocol emin olun ve kullanılan CA sertifikası varsayılan ISRG Kök X1 sertifikasından farklıysa veya SslCaPEM'yi güncelleştirdiğinden SslCaLocation emin olun.

Ayar Önerilen değer Açıklama
BrokerList BootstrapServer adlı BootstrapServer uygulama ayarı, Confluent Bulut ayarları sayfasında bulunan bootstrap sunucusunun değerini içerir. değerine benzer.xyz-xyzxzy.westeurope.azure.confluent.cloud:9092
Kullanıcı adı ConfluentCloudUsername adlı ConfluentCloudUsername uygulama ayarı Confluent Cloud web sitesinden API erişim anahtarını içerir.
Parola ConfluentCloudPassword adlı ConfluentCloudPassword uygulama ayarı Confluent Cloud web sitesinden alınan API gizli dizisini içerir.
SslCaPEM SSLCaPemCertificate CA sertifikasını PEM biçiminde bir dize olarak içeren adlı SSLCaPemCertificate uygulama ayarı. Değer standart biçime uygun olmalıdır, örneğin: -----BEGIN CERTIFICATE-----\nMII....JQ==\n-----END CERTIFICATE-----.

SSL kimlik doğrulaması

Protocol'ün SSL olarak ayarlandığından emin olun.

Ayar Önerilen Değer Açıklama
BrokerList BootstrapServer adlı BootstrapServer uygulama ayarı, Confluent Bulut ayarları sayfasında bulunan bootstrap sunucusunun değerini içerir. değerine benzer.xyz-xyzxzy.westeurope.azure.confluent.cloud:9092
SslCaPEM SslCaCertificatePem CA sertifikasının PEM değerini dize olarak içeren adlı SslCaCertificatePem uygulama ayarı. Değer standart biçime uygun olmalıdır: -----BEGIN CERTIFICATE-----\nMII...JQ==\n-----END CERTIFICATE-----
SslCertificatePEM SslClientCertificatePem İstemci sertifikasının PEM değerini dize olarak içeren adlı SslClientCertificatePem uygulama ayarı. Değer standart biçime uygun olmalıdır: -----BEGIN CERTIFICATE-----\nMII...JQ==\n-----END CERTIFICATE-----
SslKeyPEM SslClientKeyPem İstemci özel anahtarının PEM değerini dize olarak içeren adlı SslClientKeyPem uygulama ayarı. Değer standart biçime uygun olmalıdır: -----BEGIN PRIVATE KEY-----\nMII...JQ==\n-----END PRIVATE KEY-----
SslCertificateandKeyPEM SslClientCertificateAndKeyPem İstemci sertifikasının PEM değerini ve bir dize olarak birleştirilmiş istemci özel anahtarını içeren adlı SslClientCertificateAndKeyPem uygulama ayarı. Değer standart biçime uygun olmalıdır: -----BEGIN CERTIFICATE-----\nMII....JQ==\n-----END CERTIFICATE-----\n-----BEGIN PRIVATE KEY-----\nMIIE....BM=\n-----END PRIVATE KEY-----
SslKeyPassword SslClientKeyPassword Özel anahtarın parolasını içeren adlı SslClientKeyPassword uygulama ayarı (varsa).

OAuth kimlik doğrulaması

OAuth kimlik doğrulamasını kullanırken, bağlama tanımlarınızda OAuth ile ilgili özellikleri yapılandırın.

Bu ayarlar için kullandığınız dize değerleri, yerel geliştirme sırasında Azure'da veya local.settings.json dosyasındakiValueskoleksiyonda uygulama ayarları olarak bulunmalıdır.

Bağlama tanımlarınızda ve AuthenticationMode değerini de ayarlamanız Protocol gerekir.

Sonraki adımlar