Lambda'nın yürütme modeli

AWS Lambda ile Sunucusuz Uygulamalar

Claudio Canales

Senior DevOps Engineer

Otomatik yürütme

Olay güdümlü AWS

  • Bir olay olduğunda Lambda kodu çalışır.
  • Örnek: S3 yükleme -> görseli yeniden boyutlandır.
  • Tetikleyici farklı, desen aynı.
AWS Lambda ile Sunucusuz Uygulamalar

Tetiklenene kadar boşta

Boşta -> olay -> çalıştır -> durdur

  • Boşta: hiçbir şey çalışmaz.
  • Olay: işleyici çalışır, sonra durur.

Lambda için hareket sensörlü ışık benzetmesi

  • Hareket sensörlü ışık gibi: tetiklenene dek boşta.
  • Tetikleyici "kapalı"yı "açık"a çevirir.
AWS Lambda ile Sunucusuz Uygulamalar

AWS Lambda nedir?

AWS Lambda genel bakış

  • Olay güdümlü hesaplama hizmeti.
  • Talebe göre otomatik ölçeklenir.
  • Yalnızca kullanılan çalışma süresi için ödeyin.
AWS Lambda ile Sunucusuz Uygulamalar

Lambda kodunuzu nasıl çalıştırır

Lambda yürütme akışı

  • Bir olay kaynağı Lambda'yı tetikler.
  • Lambda, işleyiciye bir olay yükü geçirir.
  • İşleyici bir sonuç döndürür.
AWS Lambda ile Sunucusuz Uygulamalar

Talebe göre ölçekleme

Ölçekleme daha fazla ortam oluşturur

  • Daha çok olay: daha çok paralel çağrı.
  • Lambda daha fazla ortam başlatır.
  • Her yeni ortamda soğuk başlangıç olabilir.
AWS Lambda ile Sunucusuz Uygulamalar

İşleyici (handler) fonksiyonu

def lambda_handler(event, context):
    # Your code here
    return {
        'statusCode': 200,
        'body': 'Hello from Lambda!'
    }
  • event: giriş yükü (JSON).
  • context: çalışma zamanı üst verisi.
  • return: çıktı (başarı/başarısızlık).

İşleyici event ve context alır

AWS Lambda ile Sunucusuz Uygulamalar

Event (olay) nesnesi

Nesne depolama olay yükü

S3 olayı: bucket + nesne anahtarı.

# event["Records"][0]["s3"]
{
  "bucket": {"name": "my-bucket"},
  "object": {"key": "data.csv"}
}
  • Aynı iş: gereğini ayıkla.

HTTP istek olay yükü

API olayı: yöntem, yol, gövde.

# API request event
{
  "httpMethod": "POST",
  "path": "/users",
  "body": "{\"name\": \"John\"}"
}
  • Farklı tetikleyiciler, farklı JSON.
AWS Lambda ile Sunucusuz Uygulamalar

Context nesnesi

def lambda_handler(event, context):
    time_left = (
        context.get_remaining_time_in_millis()
    )
    request_id = context.aws_request_id
  • get_remaining_time_in_millis Zaman aşımına kalan süre.
  • aws_request_id Günlük izleme için istek kimliği.
AWS Lambda ile Sunucusuz Uygulamalar

Durumsuz yürütme

Sıcak başlangıç yeniden kullanım vs sıfırlama

  • Her çağrı bağımsızdır.
  • Yeniden kullanım mümkün, garanti değil.
  • Durumu Lambda dışında tutun.
counter = 0

def lambda_handler(event, context):
    global counter
    counter += 1  # may reset
    return counter
AWS Lambda ile Sunucusuz Uygulamalar

Soğuk başlangıçlar

Soğuk başlangıç zaman çizelgesi

  • Yeni yürütme ortamı.
  • Kod ve bağımlılıkları yükle.
  • Başlatmayı çalıştır, sonra işleyici.
AWS Lambda ile Sunucusuz Uygulamalar

Sıcak başlangıçlar

Sıcak başlangıç zaman çizelgesi

  • Mevcut ortamı yeniden kullan.
  • Başlatmanın çoğu atlanır.
  • İşleyici daha erken çalışır.
AWS Lambda ile Sunucusuz Uygulamalar

Init, invoke, freeze

Yürütme ortamı yaşam döngüsü

  • Init ortam başına bir kez çalışır.
  • İşleyici her çağrıda çalışır.
  • Aralarda ortam donabilir.
AWS Lambda ile Sunucusuz Uygulamalar

Soğuk başlangıç için iyileştirme

# init (ortam başına bir kez)
import boto3
s3 = boto3.client('s3')
# handler (her çağrıda)
def lambda_handler(event, context):
    return {"statusCode": 200}

Init bir kez vs çağrı başına handler

  • İçe aktarımları ve SDK istemcilerini işleyici dışına koyun.
AWS Lambda ile Sunucusuz Uygulamalar

Vamos praticar!

AWS Lambda ile Sunucusuz Uygulamalar

Preparing Video For Download...