0Pricing
AWS Solutions Architect · Ders

Lambda Katmanları ve Dağıtım Paketleri

Paylaşılan bağımlılıkları yeniden kullanılabilir Lambda Katmanlarında paketleyecek ve büyük çalışma zamanları için dağıtım paketlerini yöneteceksiniz.

Lambda Katmanları ve Dağıtım Paketleri, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 3. 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'daki Bağımlılık Sorunu

Lambda dağıtım paketleri kendi kendine yeterli olmalıdır; tüm bağımlılıklar (kütüphaneler, SDK'lar, ikili dosyalar) ZIP'e dahil edilmelidir. Bu durum paket boyutunu hızla büyütür: NumPy, Pandas ve SciPy kullanan bir Python veri bilimi işlevi, açılmış hâlde 200 MB'ı aşabilir. İşlev kodunuzdaki her güncelleme, değişmemiş kütüphaneler de dahil olmak üzere tüm paketin yeniden yüklenmesini gerektirir. Lambda Katmanları, paylaşılan bağımlılıkları işlev kodunuzdan ayırarak bu sorunu çözer.

Lambda Katmanı Nedir?

Bir Lambda Katmanı, kitaplıkları, özel çalışma zamanlarını, verileri veya yapılandırma dosyalarını içeren bir ZIP arşividir. Katmanlar işlev kodunuzdan ayrı olarak depolanır ve işlevin yürütme ortamına /opt konumunda bağlanır. Birden fazla işlev aynı katmanı paylaşabilir; katmanı bir kez güncellediğinizde, onu kullanan her işlev bundan yararlanır. Her Lambda işlevi en fazla 5 katmana sahip olabilir ve sıkıştırması açılmış toplam boyut 250 MB'ın altında kalmalıdır.

Katman Oluşturma ve Yayımlama

Bir katman oluşturmak için bağımlılıklarınızı çalışma zamanınıza uygun doğru dizin yapısında paketleyin (örneğin Python için python/lib/python3.12/site-packages/), ZIP biçiminde sıkıştırın ve yayımlayın. Yayımlandıktan sonra katmana bir sürüm ARN'si verilir. Katmanı bir işleve eklerken bu ARN'ye başvurun. Katmanı her güncellediğinizde yeni bir sürüm oluşturulur; siz açıkça güncelleyene kadar işlevler yapılandırıldıkları sürümü kullanmaya devam eder.

# Build layer for Python
mkdir -p layer/python
pip install pandas numpy -t layer/python/
cd layer && zip -r ../my-data-layer.zip python/

# Publish the layer
aws lambda publish-layer-version \
  --layer-name 'DataScienceLayer' \
  --zip-file fileb://my-data-layer.zip \
  --compatible-runtimes python3.12 python3.11

İşleve Katman Ekleme

Bir işlev oluştururken veya güncellerken --layers parametresini kullanarak işlevlere katman ekleyin. Lambda, eklenen tüm katmanları işlev başlamadan önce /opt konumuna bağlar. /opt/python altındaki Python paketleri Python yoluna otomatik olarak eklenir; /opt/nodejs/node_modules altındaki Node.js modülleri otomatik olarak bulunur. İşlev kodunuz, katman paketlerini yerel olarak yüklenmiş gibi import veya require edebilir.

aws lambda update-function-configuration \
  --function-name 'DataProcessor' \
  --layers \
    'arn:aws:lambda:us-east-1:123456789012:layer:DataScienceLayer:3' \
    'arn:aws:lambda:us-east-1:123456789012:layer:UtilsLayer:1'

AWS Tarafından Sağlanan Genel Katmanlar

AWS, kendi katmanınızı oluşturmadan kullanabileceğiniz resmî katmanlar yayımlar. Örnekler arasında yapılandırılmış günlük kaydı, izleme ve özellik bayrakları sağlayan AWS Lambda Powertools katmanı, veritabanı sürücüsü katmanları ve SSM/Secrets Manager değerlerini yerel olarak önbelleğe almak için kullanılan AWS Parameters and Secrets Lambda Extension katmanı bulunur. Datadog ve New Relic gibi üçüncü taraf sağlayıcılar da izleme aracıları için genel katmanlar yayımlar. Kullanılabilir genel katmanları görmek için Serverless Application Repository'yi ve Lambda konsolunu kontrol edin.

Katmanlar aracılığıyla Lambda Uzantıları

Lambda Extensions, aynı yürütme ortamında işlev kodunuzun yanında ayrı işlemler olarak çalışır. Telemetri toplama, güvenlik taraması veya yapılandırma önbelleğe alma gibi görevleri gerçekleştirmek için Lambda yaşam döngüsü olaylarına (başlatma, çağırma, kapatma) bağlanırlar. Uzantılar Lambda Katmanları olarak dağıtılır. AWS, CloudWatch Lambda Insights uzantısını ve AWS AppConfig uzantısını sağlar; sağlayıcılar da özel izleme aracılarını uzantı olarak sunar.

Dağıtım Paketi Biçimleri: ZIP ve Kapsayıcı

Lambda iki dağıtım biçimini destekler:

  • ZIP (sıkıştırılmış olarak en fazla 50 MB, sıkıştırması açılmış olarak 250 MB): hızlı yükleme, katman desteği ve tüm çalışma zamanlarıyla uyumluluk.
  • Kapsayıcı Görüntüsü (en fazla 10 GB): Amazon ECR'de depolanır, standart Docker araçlarını kullanır, katman desteği sunmaz ve çok büyük bağımlılıklar (ML modelleri, büyük ikili dosyalar) için idealdir.

Kapsayıcı görüntüleri, Lambda'nın işleyicinizi nasıl çağıracağını bilmesi için Lambda Runtime Interface'ini (AWS'nin sağladığı temel görüntüleri kullanarak) uygulamalıdır.

# Dockerfile for a Lambda container image
FROM public.ecr.aws/lambda/python:3.12
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ['app.lambda_handler']

Kapsayıcı Görüntüsü İş Akışı

Bir Lambda kapsayıcı görüntüsünü oluşturma ve dağıtma işlemi standart bir kapsayıcı iş akışını izler: docker build ile oluşturun, Amazon ECR'ye gönderin ve Lambda işlevini oluştururken veya güncellerken görüntü URI'sine başvurun. Kapsayıcı görüntüleri değiştirilemez; her görüntü etiketi belirli bir işlev sürümüne karşılık gelir. Lambda, kapsayıcı görüntülerini kendi altyapısında önbelleğe alır; bu nedenle ilk soğuk başlatmadan sonraki soğuk başlatmalar daha hızlıdır.

# Build and push to ECR
docker build -t my-lambda-function .
aws ecr get-login-password | docker login --username AWS \
  --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
docker tag my-lambda-function \
  123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo:latest

Sürümler ve Takma Adlar

Lambda Versions, işlev kodunuzun ve yapılandırmanızın değiştirilemez anlık görüntüleridir. Her sürüm yayımladığınızda Lambda, dağıtım paketini, ortam değişkenlerini ve katmanları dondurur. Takma adlar, belirli sürümlere işaret eden adlandırılmış göstergelerdir; prod sürüm 5'e, staging ise sürüm 6'ya işaret edebilir. Canary dağıtımları için trafiğin belirli bir yüzdesini yeni bir sürüme yönlendirmek üzere ağırlıklı takma adları da kullanabilirsiniz (örneğin, %10 v6'ya ve %90 v5'e).

# Publish a version and create/update an alias
aws lambda publish-version --function-name 'DataProcessor'
# Returns version number, e.g., "Version": "7"

aws lambda update-alias \
  --function-name 'DataProcessor' \
  --name 'prod' \
  --function-version '7' \
  --routing-config 'AdditionalVersionWeights={"6": 0.1}'

Katman Sürümleri ve Kullanımdan Kaldırma

Katmanların da sürümleri vardır. Yeni bir katman sürümü yayımladığınızda mevcut işlevler, siz onları güncelleyene kadar sabitledikleri sürümü kullanmaya devam eder. Böylece paylaşılan bir katmanı tüm işlevleri aynı anda bozma riski olmadan güvenle güncelleyebilir ve yeni sürümü aşamalı olarak kullanıma sunabilirsiniz. Sonunda, depolama ve bakım yükünü azaltmak için eski katman sürümlerini kullanımdan kaldırın. Lambda, hiçbir işlev onlara başvurmayana kadar katman sürümlerini konsoldan silseniz bile saklar.

Katmanlar ile Kapsayıcı Görüntüleri Arasında Seçim Yapma

Sıkıştırması açılmış toplam boyutunuz 250 MB'ın altındaysa, bağımlılıkları birden fazla işlev arasında paylaşmak istiyorsanız ve hızlı yineleme yapmak istiyorsanız (katmanı bir kez güncelleyip tüm işlevlerin yararlanmasını sağlamak) Katmanları kullanın. Bağımlılıklar 250 MB'ı aşıyorsa, özel temel işletim sistemi paketleri kullanmanız gerekiyorsa, mevcut Docker iş akışlarınız varsa veya büyük varlıkları (ML modelleri, başvuru veritabanları) paketlemek istiyorsanız Kapsayıcı Görüntülerini kullanın. Kapsayıcı görüntüleri Lambda Katmanları ile uyumlu değildir ancak daha fazla esneklik sunar.

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 Katmanları, paylaşılan bağımlılıkları işlev kodundan ayrı olarak paketleyerek paket boyutunu küçültür ve birden fazla işlev arasında yeniden kullanımı sağlar; Kapsayıcı Görüntüleri (ECR aracılığıyla en fazla 10 GB), bağımlılıklar 250 MB'lık ZIP sınırını aştığında veya Docker iş akışları zaten kullanıldığında doğru tercihtir; Sürüm Oluşturma ve Takma Adlar ise değiştirilemez sürümleri ve ağırlıklı trafik bölüştürmeyle canary dağıtımlarını mümkün kılar. Sırada Lambda@Edge ve olay güdümlü kalıpları inceleyeceğiz.

Sıkça Sorulan Sorular

“Lambda Katmanları ve Dağıtım Paketleri” dersi ücretsiz mi?

Evet — “Lambda Katmanları ve Dağıtım Paketleri” 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 Katmanları ve Dağıtım Paketleri” dersinde ne öğreneceğim?

Paylaşılan bağımlılıkları yeniden kullanılabilir Lambda Katmanlarında paketleyecek ve büyük çalışma zamanları için dağıtım paketlerini yöneteceksiniz. 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 3. dersidir.

“Lambda Katmanları ve Dağıtım Paketleri” 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