0Pricing
Azure Fundamentals · Ders

Azure Functions Tetikleyicileri ve Bağlamaları

HTTP tetiklemeli bir işlev yazın, Azure Queue Storage'a yazmak için bir çıktı bağlaması ekleyin ve Tüketim Planı'nın otomatik ölçeklendirme modelini anlayın.

Azure Functions Tetikleyicileri ve Bağlamaları, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.

Azure Functions Nedir

Azure Functions, herhangi bir altyapıyı yönetmeden olaylara yanıt olarak küçük kod birimlerini (işlevler) çalıştırmanızı sağlayan sunucusuz bir işlem hizmetidir. Yalnızca işleviniz çalışırken kullanılan yürütme süresi ve bellek için ödeme yaparsınız — işlev boşta olduğunda ücret alınmaz. Functions; olay odaklı görevler, hafif API'ler, zamanlanmış işler ve kalıcı bir sunucu olmadan bulut hizmetlerini tümleştirmek için idealdir.

Tetikleyiciler: Bir İşlevi Ne Başlatır

Her Azure Function'ın, yürütülmesine neden olan olayı tanımlayan tam olarak bir tetikleyicisi olmalıdır. Yaygın tetikleyiciler arasında HTTP (gelen HTTP isteği), Timer (CRON zamanlaması), Blob Storage (bir kapsayıcıdaki yeni blob), Queue Storage (kuyruktaki yeni ileti), Event Hub (olay akışı), Service Bus (kuyruk/konu iletisi) ve Cosmos DB (değişiklik akışı) bulunur. Tetikleyici olay verilerini alır ve işlev kodunuza aktarır.

// HTTP trigger function (JavaScript/Node.js)
module.exports = async function (context, req) {
  const name = req.query.name || (req.body && req.body.name);
  const message = name ? 'Hello, ' + name : 'Pass a name in the query or body';
  context.res = {
    status: 200,
    body: { message }
  };
};

Function.json: Tetikleyici ve Bağlama Yapılandırması

Derlenmeyen dillerde (JavaScript, Python), her işlevin dizinindeki function.json dosyası tetikleyicilerini ve bağlamalarını bildirir. Bu dosya, olay kaynaklarını ve çıkışları işlev kodunuzdaki adlandırılmış parametrelerle eşler. C# ve Java'da bağlamalar doğrudan kod içinde öznitelikler/açıklamalar kullanılarak bildirilir. Functions çalışma zamanı yapılandırmayı okur ve Azure hizmetleriyle bağlantıları otomatik olarak kurar.

// function.json — HTTP trigger + Queue output binding
{
  'bindings': [
    {
      'authLevel': 'function',
      'type': 'httpTrigger',
      'direction': 'in',
      'name': 'req',
      'methods': ['post']
    },
    {
      'type': 'http',
      'direction': 'out',
      'name': 'res'
    },
    {
      'type': 'queue',
      'direction': 'out',
      'name': 'outputQueue',
      'queueName': 'processing-queue',
      'connection': 'AzureWebJobsStorage'
    }
  ]
}

Çıkış Bağlamaları: Hizmetlere Yazma

Çıkış bağlamaları, SDK'ları veya bağlantı dizelerini yönetmeden işlevinizin Azure hizmetlerine (Blob Storage, Queue Storage, Cosmos DB, Event Hub vb.) veri yazmasını sağlar. Çıkış bağlama parametresine yalnızca bir değer atarsınız; yazma işlemini Functions çalışma zamanı gerçekleştirir. Bu, gereksiz standart kod miktarını büyük ölçüde azaltır ve işlevinizi belirli Azure hizmeti uygulama ayrıntılarından ayırır.

// HTTP trigger with Queue output binding (Node.js)
module.exports = async function (context, req) {
  const orderData = req.body;

  // Write to queue via output binding -- no SDK needed!
  context.bindings.outputQueue = JSON.stringify({
    orderId: orderData.id,
    timestamp: new Date().toISOString()
  });

  context.res = { status: 202, body: 'Order queued' };
};

CRON İfadeleriyle Timer Tetikleyicisi

Timer tetikleyicisi, CRON ifadesi tarafından tanımlanan bir zamanlamaya göre işlev çalıştırır. Azure Functions 6 parçalı bir CRON kullanır: {seconds} {minutes} {hours} {day} {month} {day-of-week}. Saatlik çalışma için 0 0 * * * *, her gün gece yarısı için 0 0 0 * * * veya hafta içi mesai saatlerinde her saat için 0 0 9-17 * * 1-5 kullanın. Timer işlevleri temizleme işleri, rapor oluşturma ve sistem durumu denetimleri için kullanışlıdır.

// Timer trigger — runs every day at 02:00 UTC
// function.json binding:
// {
//   'type': 'timerTrigger',
//   'schedule': '0 0 2 * * *',
//   'name': 'myTimer'
// }

module.exports = async function (context, myTimer) {
  const now = new Date().toISOString();
  context.log('Daily cleanup started at', now);
  // ... perform cleanup logic ...
  context.log('Cleanup completed');
};

Consumption Planı: Sunucusuz Ölçeklendirme

Consumption planında Azure Functions, tetikleyici olaylarının hızına göre sıfırdan yüzlerce örneğe otomatik olarak ölçeklenir. Yalnızca yürütme sayısı ve kullanılan bellek için tüketilen GB-saniye üzerinden ödeme yaparsınız — ayda ilk 1 milyon yürütme ücretsizdir. Functions ana bilgisayarı bir HTTP tetikleyicisini 200 örneğe kadar, kuyruk tetikleyicisini ise kuyruk iletilerinin eşzamanlı sayısına kadar ölçeklendirebilir. Soğuk başlangıç (boşta kaldıktan sonraki ilk yürütme) kısa bir gecikmeye neden olur; bu gecikme, Premium plan'ın önceden ısıtılmış örnekleriyle azaltılır.

# View billing details for a function app
az functionapp show \
  --name myFunctionApp \
  --resource-group MyRG \
  --query '{name:name, plan:serverFarmId, state:state}'

# Create a Function App on Consumption plan
az functionapp create \
  --name myFunctionApp \
  --resource-group MyRG \
  --consumption-plan-location eastus \
  --runtime node \
  --runtime-version 18 \
  --storage-account mystorageaccount

Premium ve Dedicated Planları

Premium plan, önceden ısıtılmış örnekleri çalışır durumda tutarak soğuk başlangıçları ortadan kaldırır, VNet tümleştirmesi ekler ve daha uzun yürütme zaman aşımlarına (60 dakikaya kadar) izin verir. Dedicated (App Service) planı, işlevleri web uygulamalarıyla aynı App Service planında çalıştırır; öngörülebilir maliyetlere ihtiyaç duyduğunuzda veya kullanabileceğiniz mevcut App Service işlem kaynaklarınız olduğunda yararlıdır. Gerçek sunucusuz ekonomisi için Consumption'ı; performansa duyarlı veya VNet'e bağlı işlevler için Premium'ı seçin.

# Create a Function App on Premium plan (EP1)
az functionapp plan create \
  --name MyPremiumPlan \
  --resource-group MyRG \
  --location eastus \
  --sku EP1 \
  --is-linux

az functionapp create \
  --name myFunctionAppPremium \
  --resource-group MyRG \
  --plan MyPremiumPlan \
  --runtime python \
  --runtime-version 3.11 \
  --storage-account mystorageaccount

Azure Functions Dağıtma

Azure Functions'ı Azure Functions Core Tools (func azure functionapp publish), VS Code uzantısı, Azure CLI üzerinden ZIP deploy veya Azure Pipelines ya da GitHub Actions içindeki bir CI/CD işlem hattı ile dağıtın. Üretimde, test edilmiş ve etiketlenmiş sürümlerin üretime ulaşmasını sağlamak için dağıtımı her zaman bir geliştirici makinesi yerine bir işlem hattından yapın. Functions çalışma zamanı, çalışma ortamı üzerinde tam denetim için Docker kapsayıcı dağıtımını da destekler.

# Local development: install Core Tools
npm install -g azure-functions-core-tools@4

# Start locally (triggers work against real Azure services)
func start

# Deploy to Azure
func azure functionapp publish myFunctionApp

# Or deploy via Azure CLI (ZIP deploy)
zip -r function.zip . --exclude '.git/*'
az functionapp deployment source config-zip \
  --name myFunctionApp \
  --resource-group MyRG \
  --src function.zip

Uygulama Ayarları ve Key Vault Başvuruları

Function App'ler yapılandırmayı uygulama ayarlarında depolar — bunlar işlev kodunuzda ortam değişkenleri olarak görünür. Bağlantı dizelerini, API anahtarlarını ve gizli dizileri uygulama ayarları olarak depolayın. Üretim ortamında, değerin Key Vault'ta depolanması ve uygulama ayarında yalnızca adına başvurulması için Key Vault başvurularını kullanın; böylece gizli diziler portalın ve dağıtım yapıtlarının dışında tutulur. Kimlik bilgileri olmadan Key Vault'ta kimlik doğrulaması yapmak için işlev uygulamasında yönetilen bir kimliği etkinleştirin.

# Set application settings
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    STORAGE_CONNECTION='@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/storage-conn/)' \
    COSMOS_DB_URI='https://mycosmosdb.documents.azure.com'

# In function code, read as normal env var
# const storageConn = process.env['STORAGE_CONNECTION'];

Application Insights ile Functions İzleme

Bir izleme anahtarı veya bağlantı dizesi sağladığınızda Azure Functions, Application Insights ile otomatik olarak tümleşir. Her işlev yürütmesi; süre, başarı/başarısızlık ve özel özellikler de dahil olmak üzere bir istek olarak izlenir. Test sırasında yürütmeleri gerçek zamanlı olarak izlemek için Application Insights'ın Live Metrics özelliğini, tam özel durum izlemeleri ve bağımlılık çağrılarıyla hataları tanılamak için Failures bölmesini kullanın.

# Connect Application Insights to a Function App
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    APPLICATIONINSIGHTS_CONNECTION_STRING='InstrumentationKey=xxxxxxxx;...'

# Custom telemetry in function code (Node.js)
const appInsights = require('applicationinsights');
appInsights.setup().start();
const client = appInsights.defaultClient;
client.trackEvent({ name: 'OrderProcessed', properties: { orderId: '123' } });

Eşzamanlılık ve Ölçeklendirme Davranışı

Kuyruk tetiklemeli işlevlerde Functions ana bilgisayarı birden çok iletiyi paralel olarak işler. Tek bir örneğin eşzamanlı olarak işleyeceği ileti sayısını denetlemek için batchSize değerini host.json içinde yapılandırın. HTTP tetikleyicilerinde dışa doğru ölçeklendirme, yeni örnekleri otomatik olarak ekler. Dışa doğru ölçeklendirme olayları sırasında veritabanları gibi alt hizmetlerin aşırı yüklenmesini önlemek ve aktarım hızını ayarlamak için maxConcurrentCalls (Service Bus tetikleyicileri) veya maxPollingInterval (kuyruk tetikleyicileri) kullanın.

// host.json — tune queue trigger concurrency
{
  'version': '2.0',
  'extensions': {
    'queues': {
      'batchSize': 16,          // messages per instance
      'newBatchThreshold': 8,   // fetch more when < 8 remain
      'maxPollingInterval': '00:00:02',
      'visibilityTimeout': '00:05:00'
    }
  },
  'functionTimeout': '00:10:00'
}

Kısa Kontrol

Bu derste öğrendiğiniz Microsoft Azure Fundamentals (AZ-900) kavramlarını ne kadar anladığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: tetikleyiciler, bir işlevi başlatan olayı (HTTP, Timer, Queue, Blob vb.) tanımlar; çıktı bağlamaları, işlevlerin SDK kodu yazmadan Azure hizmetlerine veri yazmasını sağlar; Consumption planı ise sıfırdan başlayarak çalıştırma başına ücretlendirilen gerçek sunucusuz ölçeklendirme sunar. Sırada, durum bilgisi içeren iş akışları için Durable Functions'ı inceleyeceğiz.

Sıkça Sorulan Sorular

“Azure Functions Tetikleyicileri ve Bağlamaları” dersi ücretsiz mi?

Evet — “Azure Functions Tetikleyicileri ve Bağlamaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.

“Azure Functions Tetikleyicileri ve Bağlamaları” dersinde ne öğreneceğim?

HTTP tetiklemeli bir işlev yazın, Azure Queue Storage'a yazmak için bir çıktı bağlaması ekleyin ve Tüketim Planı'nın otomatik ölçeklendirme modelini anlayın. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Azure Functions Tetikleyicileri ve Bağlamaları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Azure Functions Tetikleyicileri ve Bağlamaları
  2. Durum Bilgili İş Akışları için Durable Functions
  3. Azure Logic Apps
  4. Event Grid ve Olay Odaklı Mimari
← Azure Fundamentals Sayfasına Dön