0Pricing
AWS Solutions Architect · Ders

Lambda@Edge ve Olay Güdümlü Desenler

İşlevleri CloudFront uç konumlarında çalıştıracak ve olay güdümlü mimariler için Lambda'yı SQS, SNS, DynamoDB Streams ve Kinesis'e bağlayacaksınız.

Lambda@Edge ve Olay Güdümlü Desenler, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 4. 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, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.

Lambda@Edge Nedir?

Lambda@Edge, Lambda işlevlerini merkezi bir Bölge yerine dünyanın dört bir yanındaki CloudFront uç konumlarında, son kullanıcılara daha yakın bir yerde çalıştırmanızı sağlar. Bu sayede CDN katmanında milisaniyenin altında ek gecikmeyle HTTP isteklerini ve yanıtlarını özelleştirebilirsiniz. Lambda@Edge işlevleri genel olarak dağıtılır ve her CloudFront önbellek isabeti veya kaçırma olayında çağrılır; bu da onları hafif istek değiştirme görevleri için ideal kılar.

Dört CloudFront Tetikleme Noktası

Lambda@Edge, CloudFront istek yaşam döngüsünün dört noktasında trafiği yakalayabilir:

  • Görüntüleyici İsteği: CloudFront, önbelleği kontrol etmeden önce görüntüleyiciden (kullanıcıdan) bir istek aldığında çalışır
  • Kaynak İsteği: CloudFront, önbellek kaçırmasını kaynağa ilettiğinde çalışır
  • Kaynak Yanıtı: kaynak, önbelleğe alma işleminden önce bir yanıt döndürdüğünde çalışır
  • Görüntüleyici Yanıtı: CloudFront yanıtı görüntüleyiciye döndürmeden önce çalışır

Normal Lambda'ya kıyasla Lambda@Edge Sınırlamaları

Lambda@Edge'in sınırları normal Lambda'ya göre daha katıdır: en fazla 128 MB bellek (görüntüleyici olayları), 1 GB (kaynak olayları), en fazla 5 saniye zaman aşımı (görüntüleyici), 30 saniye (kaynak). İşlevler us-east-1 bölgesinde oluşturulmalı ve CloudFront aracılığıyla uç konumlara dağıtılmalıdır. VPC desteği, ortam değişkenleri ve Lambda Katmanları yoktur. Bu kısıtlamalar, Lambda@Edge'in yoğun işlemler için değil, hafif dönüşümler için tasarlandığı anlamına gelir.

Yaygın Lambda@Edge Kullanım Alanları

Lambda@Edge şu alanlarda öne çıkar: A/B testi (çerezlere göre URL'leri farklı kaynak yollarına yeniden yazma), kimlik doğrulama (kaynağa iletmeden önce JWT'leri uç konumda doğrulama), HTTP üst bilgilerini değiştirme (HSTS, CSP, X-Frame-Options gibi güvenlik üst bilgileri ekleme), URL normalleştirme (www adreslerini www olmayan adreslere yönlendirme veya sondaki eğik çizgileri zorunlu kılma) ve kişiselleştirme (CloudFront-Viewer-Country üst bilgisindeki görüntüleyici ülkesine göre farklı içerik sunma).

// Viewer Request: Add security headers
exports.handler = async (event) => {
    const response = event.Records[0].cf.response;
    response.headers['strict-transport-security'] = [{
        key: 'Strict-Transport-Security',
        value: 'max-age=63072000; includeSubdomains; preload'
    }];
    response.headers['x-frame-options'] = [{
        key: 'X-Frame-Options',
        value: 'DENY'
    }];
    return response;
};

CloudFront Functions ve Lambda@Edge Karşılaştırması

CloudFront Functions, yalnızca görüntüleyici isteği/yanıtı aşamalarında çalışan, 2 ms yürütme süresi sınırına sahip ve çok daha düşük maliyetli, son derece hafif JavaScript işlevleridir. Basit kullanım alanlarında (URL yeniden yazma, üst bilgilerini değiştirme, önbellek anahtarını normalleştirme) CloudFront Functions, daha hızlı ve ucuz olduğu için Lambda@Edge'e tercih edilir. Ağ çağrılarına veya daha büyük yük gövdelerine erişmeniz ya da kaynak isteği/yanıtı tetikleme noktalarını kullanmanız gerektiğinde Lambda@Edge'i kullanın.

Lambda ile Olay Güdümlü Mimari

Olay güdümlü mimari, hizmetleri bir şeyin gerçekleştiğini temsil eden olaylar—mesajlar—aracılığıyla birbirine bağlar. AWS'de Lambda, temel olay tüketicisidir: SQS, SNS, DynamoDB Streams, Kinesis, S3, EventBridge ve daha fazlasından olaylar alır. Her olay bir Lambda yürütmesini tetikler; böylece sistemler sıkı bağımlılık olmadan asenkron ve bağımsız biçimde tepki verebilir. Bu kalıp gevşek bağımlılık, bağımsız ölçeklendirme ve hata yalıtımı sağlar.

SQS Tüketicisi Olarak Lambda

Lambda, SQS için bir olay kaynağı eşlemesi olarak yapılandırılabilir. Lambda kuyruğu yoklar, en fazla toplu iş boyutu kadar ileti alır (standart kuyruklar için en fazla 10.000, FIFO için 10) ve işlevi her toplu iş için bir kez çağırır. İşlev başarısız olursa toplu işin tamamı kuyruğa geri gönderilir. Çağırmadan önce daha fazla ileti beklemek ve aktarım hızını artırmak için bir toplu iş penceresi yapılandırın. Tekrar tekrar başarısız olan iletiler için kaynak SQS kuyruğunda bir DLQ kullanın.

aws lambda create-event-source-mapping \
  --function-name 'OrderProcessor' \
  --event-source-arn 'arn:aws:sqs:us-east-1:123456789012:OrderQueue' \
  --batch-size 10 \
  --maximum-batching-window-in-seconds 5

DynamoDB Streams ile Lambda

DynamoDB Streams, her öğe düzeyindeki değişikliği (INSERT, MODIFY, REMOVE) sıralı bir olay dizisi olarak yakalar. Lambda, akıştan TRIM_HORIZON (en eskiden başla) veya LATEST (en yeniden başla) seçenekleriyle bir olay kaynağı eşlemesi kullanarak okur. Lambda kayıtları bir bölüm içinde sırayla işler. Başarısız toplu işler, çözülene kadar aynı bölümün daha fazla işlenmesini engeller; başarısız toplu işleri bölmek ve sorunlu kayıtları yalıtmak için hatada ikiye bölme özelliğini kullanın.

aws lambda create-event-source-mapping \
  --function-name 'StreamProcessor' \
  --event-source-arn 'arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...' \
  --starting-position TRIM_HORIZON \
  --batch-size 100 \
  --bisect-batch-on-function-error

Kinesis Data Streams ile Lambda

Lambda, Kinesis kayıtlarını DynamoDB Streams'e benzer şekilde işler; her parça için bir eşzamanlı yürütme gerçekleşir. Önemli yapılandırma seçenekleri arasında paralelleştirme faktörü (parça başına en fazla 10 eşzamanlı Lambda çağrısı ve alt toplu işlerin paralel işlenmesi) ve gelişmiş fan-out (Lambda tüketicisi için parça başına ayrılmış 2 MB/sn aktarım kapasitesi) bulunur. Bu seçenekler, parça sayısını artırmadan yüksek hacimli akışların aktarım hızını büyük ölçüde artırır.

Olay Yönlendiricisi Olarak EventBridge

Amazon EventBridge, AWS hizmetlerini ve özel uygulamaları birbirine bağlamak için önerilen olay veri yoludur. Olaylar bir veri yoluna akar; kurallar olayları kalıba göre filtreler ve Lambda, SQS, Step Functions ve daha fazlasını içeren hedeflere yönlendirir. EventBridge, olay üreticilerini tüketicilerden tamamen ayırır; tarafların hiçbiri diğerinden haberdar değildir. Varsayılan olay veri yolu AWS hizmetlerinden gelen olayları alır; uygulama olaylarınız için bir özel olay veri yolu oluşturun.

aws events put-rule \
  --name 'OrderPlacedRule' \
  --event-pattern '{"source": ["com.myapp.orders"], "detail-type": ["OrderPlaced"]}' \
  --state ENABLED

aws events put-targets \
  --rule 'OrderPlacedRule' \
  --targets 'Id=LambdaTarget,Arn=arn:aws:lambda:us-east-1:123456789012:function:InventoryUpdater'

Fan-Out Kalıbı: SNS'den Birden Fazla Lambda'ya

Yaygın bir olay güdümlü kalıp fan-out'tur: tek bir olay birden fazla paralel işleme hattını tetikler. Bir SNS konusuna yayımlama yaptığınızda, birden fazla Lambda işlevi aboneliği bağımsız olarak tepki verir. Örneğin, verilen bir sipariş olayı şu işlemleri başlatabilir: onay e-postası gönderen bir Lambda, envanteri güncelleyen bir Lambda ve depoya bildirim gönderen bir Lambda. Her tüketici bağımsızdır ve ayrı ayrı ölçeklenir; hiçbir tüketici diğerlerini engelleyemez.

Hızlı Kontrol

Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: Lambda@Edge, kimlik doğrulama, URL yeniden yazma ve üst bilgilerini değiştirme gibi görevler için CloudFront uç konumlarında dört tetikleme noktasıyla (görüntüleyici isteği/yanıtı, kaynak isteği/yanıtı) işlevleri çalıştırır; CloudFront Functions, basit görüntüleyici aşaması dönüşümleri için daha düşük maliyetli ve daha düşük gecikmeli alternatiftir; SQS, DynamoDB Streams, Kinesis, EventBridge ve SNS fan-out kullanan olay güdümlü kalıplar ise Lambda'nın gerçek zamanlı olaylara tepki verdiği, gevşek bağımlı mimariler sağlar. Sırada SQS Standard ve FIFO Kuyruklarını inceleyeceğiz.

Sıkça Sorulan Sorular

“Lambda@Edge ve Olay Güdümlü Desenler” dersi ücretsiz mi?

Evet — “Lambda@Edge ve Olay Güdümlü Desenler” 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 AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.

“Lambda@Edge ve Olay Güdümlü Desenler” dersinde ne öğreneceğim?

İşlevleri CloudFront uç konumlarında çalıştıracak ve olay güdümlü mimariler için Lambda'yı SQS, SNS, DynamoDB Streams ve Kinesis'e bağlayacaksınız. AWS Solutions Architect 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.

AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, 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 4. dersidir.

“Lambda@Edge ve Olay Güdümlü Desenler” 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 AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AWS Solutions Architect 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. Lambda İşlevleri: Çalışma Zamanları, Tetikleyiciler ve İşleyiciler
  2. Eşzamanlılık, Kısıtlama ve Ayrılmış Eşzamanlılık
  3. Lambda Katmanları ve Dağıtım Paketleri
  4. Lambda@Edge ve Olay Güdümlü Desenler
← AWS Solutions Architect Sayfasına Dön