Lambda kodu yazma ve test etme

AWS Lambda ile Sunucusuz Uygulamalar

Claudio Canales

Senior DevOps Engineer

Test ve günlüğün önemi

  • Gerçek event'ler dağınık ve çok farklıdır.
  • Test, hataları kullanıcıdan önce yakalar.
  • Günlükler hata ayıklamada "kara kutunuz"dur.

Test etmek bir yangın tatbikatıdır

AWS Lambda ile Sunucusuz Uygulamalar

Tek akış: akılda tutun

Çekirdek akış araç kiti

  • Event içeri -> handler çalışır -> yanıt çıkar.
  • Hata ayıklamak için günlükler + test event'leri kullanın.

Lambda çağrı akışı

AWS Lambda ile Sunucusuz Uygulamalar

Günlükler nereye gider: CloudWatch Logs

  • Lambda, varsayılan olarak print() çıktısını ve hataları buraya yazar.
  • CloudWatch Logs, AWS hizmetleri için günlük depolamadır.
  • Günlük grupları /aws/lambda/<function-name> gibidir.

Handler, CloudWatch Logs'a yazar

AWS Lambda ile Sunucusuz Uygulamalar

Handler sözleşmesi

  • event giriş yüküdür.
  • context çalışma zamanı bilgisini sağlar.
  • Dönen değer, fonksiyon yanıtı olur.

Sözleşme: event + context -> response

AWS Lambda ile Sunucusuz Uygulamalar

Adım adım: event ve context

def lambda_handler(event, context):
    request_id = context.aws_request_id
    time_left = context.get_remaining_time_in_millis()
    return {"statusCode": 200}

Event ve context açıklamaları

AWS Lambda ile Sunucusuz Uygulamalar

Girdiyi güvenle ayrıştırma

  • İsteğe bağlı alanlar için event.get() kullanın.
  • Gerekli girdileri erken doğrulayın.
  • Eksik alanlar için net hatalar döndürün.

Güvenli ayrıştır, erken doğrula

AWS Lambda ile Sunucusuz Uygulamalar

Adım adım: gerekli girdiyi doğrulama

def lambda_handler(event, context):
    if not event.get("name"):
        return {"statusCode": 400, "body": "Missing: name"}
    return {"statusCode": 200, "body": f"Hello, {event.get('name')}!"}

Doğrulama dalı: 400 vs 200

AWS Lambda ile Sunucusuz Uygulamalar

Test edilecek köşe durumlar

  • Eksik alanlar (boş JSON).
  • Yanlış tipler (name bir sayı).
  • Fazla alanlar veya büyük yükler.

Köşe durum örnekleri

AWS Lambda ile Sunucusuz Uygulamalar

Öngörülebilir yanıt döndürme

  • Yanıt biçimini tutarlı tutun.
  • Başarı/hata için statusCode kullanın.
  • Yanıt gövdesini JSON olarak kodlayın.

Yanıt zarfı: statusCode + JSON body

AWS Lambda ile Sunucusuz Uygulamalar

Adım adım: JSON döndürme

import json

def lambda_handler(event, context):
    body = {"message": "ok"}
    return {"statusCode": 200, "body": json.dumps(body)}

json.dumps: dict'ten JSON metne

AWS Lambda ile Sunucusuz Uygulamalar

Günlükleme ve izleme

  • Temel alanları günlüğe yazın (gerekirse JSON kullanın).
  • İzleme için context.aws_request_id ekleyin.
  • Gizli veya kişisel verileri kaydetmeyin.
  • Varsayılan olarak günlükler CloudWatch Logs'a gider.

Günlükleme en iyi uygulamaları

AWS Lambda ile Sunucusuz Uygulamalar

Adım adım: yapılandırılmış günlükleme

import json

def lambda_handler(event, context):
    print(json.dumps({"request_id": context.aws_request_id, "event": event}))
    return {"statusCode": 200}

Yapılandırılmış günlük: JSON satırı

AWS Lambda ile Sunucusuz Uygulamalar

Konsol event'leriyle test

  • Adlandırılmış test event'leri oluşturun.
  • Mutlu yol ve köşe durumlarını test edin.
  • Her çalışmadan sonra yanıtı ve günlükleri inceleyin.

Konsol test event'leri

AWS Lambda ile Sunucusuz Uygulamalar

Basit bir hata ayıklama döngüsü

  • Küçük bir kod değişikliği yapın.
  • Dağıtın, sonra bir test event'i çalıştırın.
  • Yanıtı ve CloudWatch Logs'u okuyun.

Hata ayıklama döngüsü

AWS Lambda ile Sunucusuz Uygulamalar

Haydi pratik yapalım!

AWS Lambda ile Sunucusuz Uygulamalar

Preparing Video For Download...