Lambda işlevlerini yapılandırma

AWS Lambda ile Sunucusuz Uygulamalar

Claudio Canales

Senior DevOps Engineer

Yapılandırma neden önemlidir

  • Aynı kod, farklı ayarlarda çok farklı davranabilir.
  • Yapılandırma performans, maliyet ve güvenliği kontrol eder.
  • Amaç: geliştirme ve prod'da öngörülebilir davranış.

Aynı kod, farklı ayarlar

AWS Lambda ile Sunucusuz Uygulamalar

Kod ve yapılandırma

Kod paketi

  • Kod paketi
  • Handler mantığı + bağımlılıklar.
  • Değişiklikler dağıtım gerektirir.

İşlev yapılandırması

  • İşlev yapılandırması
  • Bellek, zaman aşımı, ortam değişkenleri.
  • Yürütme rolü + layer'lar.
AWS Lambda ile Sunucusuz Uygulamalar

Kontrol ettiğiniz ayarlar

  • Runtime + handler: Lambda'nın çalıştıracağı kod.
  • Bellek + zaman aşımı: performans, maliyet, güvenlik.
  • Ortam değişkenleri: kod gömmeden yapılandırma.
  • Yürütme rolü: AWS API izinleri.
  • Layer'lar: işlevler arası paylaşılan bağımlılıklar.

Lambda yapılandırma düğmeleri

AWS Lambda ile Sunucusuz Uygulamalar

Runtime ve handler temelleri

  • Runtime = dil ortamı (ör. Python).
  • Handler = Lambda'nın çağırdığı giriş noktası.
  • Handler biçimi: file.function.
  • Örnek: lambda_function.lambda_handler.

Handler dizesinin ayrımı

AWS Lambda ile Sunucusuz Uygulamalar

Handler dizesi: neler ters gidebilir

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

İçe aktar, sonra handler çağrısı

AWS Lambda ile Sunucusuz Uygulamalar

Yürütme rolü (IAM)

  • IAM = Kimlik ve Erişim Yönetimi (izinler).
  • Yürütme rolü, işlevinizin yapmasına izin verilenleri belirler.
  • Kodunuzun hangi AWS API'lerini çağırabileceğini kontrol eder.

Anahtar kart olarak yürütme rolü

AWS Lambda ile Sunucusuz Uygulamalar

Lambda layer nedir?

  • Bir layer, bir işleve eklediğiniz bir ZIP'tir.
  • Lambda, layer dosyalarını çalışma zamanında /opt altında sunar.
  • Ortak kütüphane ve yardımcılar için layer kullanın.
  • Layer'ı bir kez güncelleyin; birden çok işlev yeniden kullanabilir.

/opt altında bağlanan layer

AWS Lambda ile Sunucusuz Uygulamalar

Layer'lar çalışma zamanında nerede görünür

  • İşlev kodunuz /var/task altında bağlanır.
  • Eklediğiniz layer'lar /opt altında bağlanır.
  • Lambda ayrıca /tmp altında geçici bir klasör sağlar.

Çalışma zamanı klasörleri: /var/task, /opt, /tmp

AWS Lambda ile Sunucusuz Uygulamalar

Bellek CPU'yu da etkiler

  • Daha fazla bellek -> daha fazla CPU.
  • CPU ağırlıklı işlerde süreyi azaltabilir.
  • Toplam maliyet süre ve belleğe bağlıdır.

Bellek CPU'yu artırır

AWS Lambda ile Sunucusuz Uygulamalar

Belleği ölçümle ayarlayın

  • Makul bir varsayılanla başlayın (ör. 256 MB).
  • Gerçekçi olaylarla test edin.
  • Farklı bellek boyutlarında süre ve maliyeti karşılaştırın.

Bellek taraması: süre ve maliyeti ölçün

AWS Lambda ile Sunucusuz Uygulamalar

Zaman aşımı ve güvenli yürütme

  • Zaman aşımı, kontrolden çıkan yürütmeleri durdurur.
  • Uzun işlemeden önce kalan süreyi kontrol edin.
  • Uygunsa hızlıca başarısız olun ve yeniden deneyin.

Güvenlik zamanlayıcısı olarak zaman aşımı

AWS Lambda ile Sunucusuz Uygulamalar

Uygulama: kalan süreyi kontrol etme

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Bağlam geri sayımı koruması

AWS Lambda ile Sunucusuz Uygulamalar

Ortam değişkenleri

  • Yapılandırmayı kod dışında tutun.
  • Geliştirme/test/üretim ayarlarını ayırın.
  • Hassas değerler için Secrets Manager kullanın.

Ortam değişkenleri davranışı yapılandırır

AWS Lambda ile Sunucusuz Uygulamalar

Uygulama: ortam değişkenlerini okuma

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Varsayılanlar yerel testleri güvenli kılar

  • Ortam değişkenlerine erişmek için os içe aktarın.
  • os.getenv değeri ya da varsayılanı döndürür.
AWS Lambda ile Sunucusuz Uygulamalar

Yaygın yapılandırma tuzakları

  • Aşama değerlerini kod içine gömmek.
  • Zaman aşımının çok düşük olması veya IAM izinlerinin eksikliği.
  • Sırlar düz ortam değişkenlerinde.

Sakıncalar ve pratik kurallar

AWS Lambda ile Sunucusuz Uygulamalar

Hadi pratik yapalım!

AWS Lambda ile Sunucusuz Uygulamalar

Preparing Video For Download...