DEV Community

Cover image for 2026'da Sunucusuz için AWS Lambda API Kullanımı
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

2026'da Sunucusuz için AWS Lambda API Kullanımı

Kısaca

AWS Lambda API, geliştiricilerin sunucusuz işlevleri otomatikleştirilmiş şekilde dağıtmasını, yönetmesini ve çağırmasını sağlayan RESTful bir arayüzdür. IAM kimlik doğrulaması, senkron ve asenkron çağırma seçenekleri, olay kaynağı eşlemesi ve üretim için eşzamanlılık yönetimi gibi temel işlevlerle tam otomasyon için uygundur. Bu rehberde, Lambda API entegrasyonunu sıfırdan üretime hazır şekilde kurmanın adımlarını bulacaksınız.

Apidog'u hemen deneyin

Giriş

AWS Lambda, aylık trilyonlarca isteği 1 milyondan fazla kullanıcı için işler. Sunucusuz uygulama ve otomasyon geliştiren ekipler için Lambda API entegrasyonu, CI/CD ve altyapı kodu için kritik öneme sahiptir.

Manuel olarak onlarca Lambda işlevini yöneten geliştiriciler, dağıtım ve güncellemelerde ciddi zaman kaybeder. Sağlam bir Lambda API entegrasyonu, dağıtımları otomatikleştirir, mavi-yeşil yayınları uygular ve dinamik ölçeklendirme sağlar.

Bu rehberde, IAM kimlik doğrulamasından işlev dağıtımına, çağırma modellerinden olay kaynağı eşlemesine kadar Lambda API ile tam otomasyon için ihtiyacınız olan her şeyi teknik örnekler ve kodlarla bulacaksınız.

AWS Lambda API Nedir?

AWS Lambda, sunucusuz bilgi işlem işlevlerini yönetmek için RESTful bir API sunar. API ile şunları yapabilirsiniz:

  • İşlev oluşturma, güncelleme ve silme
  • Kod dağıtımı ve versiyonlama
  • İşlev çağırma (senkron/asenkron)
  • Olay kaynağı eşlemesi (SQS, Kinesis, DynamoDB, S3)
  • Katman yönetimi (paylaşılan bağımlılıklar)
  • Takma ad ve trafik yönlendirme
  • Eşzamanlılık ve kapasite yönetimi
  • Günlükleme ve izleme entegrasyonu

Temel Özellikler

Özellik Açıklama
RESTful API Standart HTTPS uç noktaları
IAM Authentication AWS İmza Sürümü 4
Async Invocation Ateşle ve unut olay işleme
Sync Invocation İstek-yanıt modeli
Event Sources 200+ AWS hizmet entegrasyonu
Layers Paylaşılan kod/bağımlılıklar
Versions/Aliases Trafik kaydırma, rollback
Provisioned Concurrency Soğuk başlangıcı önler

Lambda Çalışma Zamanı Desteği

Çalışma Zamanı Sürümler Kullanım Senaryosu
Node.js 18.x, 20.x API arka uç, olay işleme
Python 3.9, 3.10, 3.11 Veri işleme, ML çıkarımı
Java 11, 17, 21 Kurumsal uygulamalar
Go 1.x Yüksek performans
Rust 1.x Düşük gecikme
.NET 6, 8 Windows iş yükleri
Ruby 3.x Web uygulamaları
Custom Any Kapsayıcı tabanlı çalışma

API Mimari Genel Bakış

Temel Lambda API uç noktası:

https://lambda.{region}.amazonaws.com/2015-03-31/
Enter fullscreen mode Exit fullscreen mode

API Sürümleri

Sürüm Durum Kullanım Senaryosu
2015-03-31 Güncel Tüm Lambda işlemleri
2018-01-31 Çalışma Zamanı API Özel runtime arayüzü

Başlarken: Kimlik Doğrulama Kurulumu

Adım 1: AWS Hesabı ve IAM Kullanıcısı Oluşturun

  1. AWS Konsolunu açın.
  2. Yeni bir AWS hesabı oluşturun.
  3. IAM Konsolu > Kullanıcılar > Kullanıcı Oluştur menüsünden yeni bir kullanıcı ekleyin.
  4. Kullanıcıya Lambda yürütme politikalarını atayın.

Adım 2: IAM Kimlik Bilgilerini Oluşturun

Programlı erişim için erişim anahtarı oluşturun:

# AWS CLI ile anahtar oluşturma
aws iam create-access-key --user-name lambda-deployer
Enter fullscreen mode Exit fullscreen mode

Çıktıdaki anahtarı güvenli şekilde saklayın:

# ~/.aws/credentials
[lambda-deployer]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# Veya ortam değişkeni olarak
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
export AWS_DEFAULT_REGION="us-east-1"
Enter fullscreen mode Exit fullscreen mode

Adım 3: AWS İmza Sürümü 4'ü Kullanın

Lambda API istekleri için SigV4 imzası gereklidir. Kendi imzalayıcınızı bu şekilde yazabilirsiniz:

const crypto = require('crypto');

class AWSSigner {
  constructor(accessKeyId, secretAccessKey, region, service = 'lambda') {
    this.accessKeyId = accessKeyId;
    this.secretAccessKey = secretAccessKey;
    this.region = region;
    this.service = service;
  }
  // ... (kodun tamamı yukarıdaki gibi)
}
Enter fullscreen mode Exit fullscreen mode

Kullanım:

const signer = new AWSSigner(
  process.env.AWS_ACCESS_KEY_ID,
  process.env.AWS_SECRET_ACCESS_KEY,
  'us-east-1'
);
Enter fullscreen mode Exit fullscreen mode

Adım 4: Lambda API İstemcisi Oluşturun

Aşağıdaki fonksiyonla Lambda API'ye imzalı istek gönderebilirsiniz:

const LAMBDA_BASE_URL = 'https://lambda.us-east-1.amazonaws.com/2015-03-31';

const lambdaRequest = async (path, options = {}) => {
  // ... (yukarıdaki kodun tamamı)
};

// Kullanım
const functions = await lambdaRequest('/functions');
console.log(`Bulunan işlev sayısı: ${functions.Functions.length}`);
Enter fullscreen mode Exit fullscreen mode

Alternatif: AWS SDK Kullanın

AWS SDK kullanarak imzalama ve istek göndermeyi kolayca otomatikleştirebilirsiniz:

const { LambdaClient, ListFunctionsCommand, CreateFunctionCommand, InvokeCommand } = require('@aws-sdk/client-lambda');
const lambda = new LambdaClient({ region: 'us-east-1' });

// İşlevleri listele
const listCommand = new ListFunctionsCommand({});
const result = await lambda.send(listCommand);

// İşlev oluştur
const createCommand = new CreateFunctionCommand({
  // ... (örnek yapılandırma)
});
const fn = await lambda.send(createCommand);
Enter fullscreen mode Exit fullscreen mode

İşlev Yönetimi

Bir İşlev Oluşturma

Lambda işlevini API ile oluşturun:

const createFunction = async (functionConfig) => {
  // ... (tam kod yukarıda)
};

// Kullanım
const fn = await createFunction({
  name: 'order-processor',
  roleArn: 'arn:aws:iam::123456789012:role/lambda-execution-role',
  handler: 'index.handler',
  runtime: 'nodejs20.x',
  s3Bucket: 'my-deployments-bucket',
  s3Key: 'order-processor/v1.0.0.zip',
  description: 'SQS kuyruğundan siparişleri işler',
  timeout: 30,
  memorySize: 512,
  environment: {
    DB_HOST: 'db.example.com',
    LOG_LEVEL: 'info'
  }
});
console.log(`İşlev oluşturuldu: ${fn.FunctionArn}`);
Enter fullscreen mode Exit fullscreen mode

Kodu Doğrudan Yükleme

Küçük işlevler için kodu doğrudan yükleyin:

const fs = require('fs');
const path = require('path');

const createFunctionWithZip = async (functionName, zipPath) => {
  // ... (tam kod yukarıda)
};

// Paketleyip yükleyin
// zip -r function.zip index.js node_modules/
await createFunctionWithZip('my-function', './function.zip');
Enter fullscreen mode Exit fullscreen mode

İşlev Kodunu Güncelleme

Yeni kod sürümü dağıtımı için:

const updateFunctionCode = async (functionName, updateConfig) => {
  // ... (tam kod yukarıda)
};

// Kullanım
const updated = await updateFunctionCode('order-processor', {
  s3Bucket: 'my-deployments-bucket',
  s3Key: 'order-processor/v1.1.0.zip',
  publish: true
});
console.log(`Sürüm şuna güncellendi: ${updated.Version}`);
Enter fullscreen mode Exit fullscreen mode

İşlev Yapılandırmasını Güncelleme

Zaman aşımı, bellek veya ortam değişkenlerini güncelleyin:

const updateFunctionConfig = async (functionName, config) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Bir İşlevi Silme

const deleteFunction = async (functionName, qualifier = null) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

İşlev Çağırma

Eşzamanlı Çağırma (İstek-Yanıt)

const invokeFunction = async (functionName, payload, qualifier = null) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Eşzamansız Çağırma (Ateşle ve Unut)

const invokeAsync = async (functionName, payload) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Deneme Çalıştırması

const dryRunInvocation = async (functionName) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Çağırma Yanıt Türleri

Çağırma Türü Davranış Kullanım Senaryosu
RequestResponse Sonuç bekle API, CLI
Event Ateşle ve unut Olay işleme
DryRun Yalnızca izin testi Doğrulama, debug

Sürüm ve Takma Ad Yönetimi

Sürümleri Yayınlama

const publishVersion = async (functionName, description = null) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Takma Adlar Oluşturma

const createAlias = async (functionName, aliasName, version, description = null) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Yönlendirme ile Trafik Kaydırma

const updateAliasWithRouting = async (functionName, aliasName, routingConfig) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Takma Ad Kullanım Senaryoları

Takma Ad Sürüm Amaç
dev $LATEST Geliştirme testi
staging Latest tested QA doğrulama
prod Stabil sürüm Üretim trafiği
blue Şu anki prod Mavi-yeşil dağıtım
green Yeni sürüm Mavi-yeşil dağıtım

Olay Kaynağı Eşlemesi

SQS Tetikleyicisi Oluşturma

const createSQSEventSource = async (functionName, queueArn, batchSize = 10) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

DynamoDB Akış Tetikleyicisi Oluşturma

const createDynamoDBEventSource = async (functionName, streamArn, startingPosition = 'LATEST') => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Olay Kaynağı Türleri

Kaynak Senaryo Toplu İşlem
SQS Mesaj kuyruğu Evet (1-10)
Kinesis Gerçek zamanlı akış Evet (1-10,000)
DynamoDB DB değişikliği Evet (1-1,000)
S3 Nesne olayları Hayır
EventBridge Olay yönlendirme Evet
API Gateway HTTP API Hayır
Schedule Zamanlanmış iş Hayır

Katman Yönetimi

Bir Katman Oluşturma

const createLayer = async (layerName, layerConfig) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

İşlevlerde Katmanları Kullanma

const createFunctionWithLayers = async (functionConfig) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

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

Ayrılmış Eşzamanlılığı Ayarlama

const putFunctionConcurrency = async (functionName, reservedConcurrentExecutions) => {
  // ... (tam kod yukarıda)
};
Enter fullscreen mode Exit fullscreen mode

Hesap Eşzamanlılık Limitleri

Hesap Tipi Varsayılan Limit Arttırım
Free Tier 1,000 Evet
Pay-as-you-go 1,000 Evet
Enterprise 1,000+ Özel limit

Üretim Dağıtım Kontrol Listesi

Üretime geçmeden önce şunları uygulayın:

  • [ ] AWS SDK ile otomatik SigV4 imzalaması kullanın
  • [ ] Versiyon ve takma ad yönetimini etkinleştirin
  • [ ] Kritik işlevlere ayrılmış eşzamanlılık atayın
  • [ ] Asenkron çağrılar için DLQ kurun
  • [ ] Hata ayıklama için X-Ray izlemeyi açın
  • [ ] VPC yapılandırmasıyla veritabanı erişimi sağlayın
  • [ ] Yapılandırılmış (JSON) günlükleme kullanın
  • [ ] CloudWatch alarmları kurun
  • [ ] Ortak bağımlılıklar için katmanları kullanın
  • [ ] Mavi-yeşil dağıtım uygulayın

Gerçek Dünya Kullanım Senaryoları

API Arka Uç

Bir SaaS şirketi, yüksek trafikli sunucusuz REST API'yi şöyle inşa eder:

  • Her kaynak için ayrı Lambda işlevi
  • API Gateway ile yönlendirme ve kimlik doğrulama
  • DynamoDB ile veri depolama
  • Tutarlı performans için ayrılmış eşzamanlılık

Sonuç: %99,99 uptime, EC2'ye göre %60 maliyet avantajı.

Olay İşleme Hattı

E-ticaret platformu, sipariş yoğunluğunu yönetmek için:

  • SQS ile siparişleri tamponlayıp Lambda ile toplu işleme
  • Başarısız mesajlar için DLQ
  • CloudWatch ile kuyruk derinliği uyarıları

Sonuç: Hiçbir sipariş kaybı yok, 10 kata kadar ölçeklenebilirlik.

Sonuç

AWS Lambda API ile:

  • IAM kimlik doğrulaması (SigV4, AWS SDK önerilir)
  • Senkron ve asenkron çağırma modelleri
  • Sürüm ve takma ad ile güvenli dağıtımlar
  • Olay kaynağı entegrasyonu ile otomasyon
  • Katman yönetimiyle paylaşılan bağımlılıklar
  • Apidog, API testleri ve ekip işbirliği için pratik bir platform

SSS Bölümü

Lambda API ile nasıl kimlik doğrularım?

AWS IAM kimlik bilgilerini SigV4 imzayla kullanın. AWS SDK, imzalamayı otomatik yapar.

Eşzamanlı ve eşzamansız çağırma arasındaki fark nedir?

Eşzamanlı (RequestResponse), işlevin tamamlanmasını bekler ve sonucu döndürür. Eşzamansız (Event), isteği sıraya alır ve hemen döner.

Lambda sürümleri nasıl çalışır?

Her yayınlanan sürüm, işlevin değişmez bir anlık görüntüsüdür. Takma adlar ile belirli sürümlere trafik yönlendirebilirsiniz.

Lambda Katmanları nelerdir?

Katmanlar, kod ve bağımlılıkları paylaşmak için kullanılır, birden çok işlevde tekrar kullanılabilir kütüphaneler sağlar.

Soğuk başlangıçları nasıl azaltırım?

Ayrılmış eşzamanlılık, küçük deploy paketleri ve derlenmiş diller (Go, Rust) kullanın.

Ayrılmış eşzamanlılık nedir?

Belirli işlevler için yürütme slotlarını rezerve eder, kaynak çakışmasını önler.

Lambda'yı S3'ten tetikleyebilir miyim?

Evet, S3 nesne olayları ile Lambda otomatik olarak tetiklenebilir.

Top comments (0)