Amazon DVA-C02: Sunucusuz ve AWS Lambda — Çalışma kılavuzu

Şunun bir parçası: AWS Developer Associate DVA-C02 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Amazon sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.

Sürümler, takma adlar, katmanlar ve paketleme

Lambda sürümleri, PublishVersion API’si ile (örneğin, boto3.client('lambda').publish_version(FunctionName='MyFunc')) oluşturulan, kodun ve yapılandırmanın değişmez anlık görüntüleridir. Tekrarlanabilir sürümler sağlamak için sürümleri kullanın ve ardından kademeli dağıtımlar için trafiği sürümler arasında bölmek üzere bir yönlendirme yapılandırması da taşıyabilen kararlı işaretçiler olarak takma adlar (boto3.client('lambda').create_alias veya update_alias) oluşturun. Katmanlar, ortak yerel kütüphaneleri veya çalışma zamanı paketlerini paylaşmak için bir yol sağlar; publish_layer_version, derlenmiş ikili dosyalar gibi bağımlılıkları fonksiyon paketinizden ayrı olarak eklemenize olanak tanır, böylece derlemeler daha küçük ve soğuk başlatmalar daha hızlı olur. Paketleme için, hızlı dağıtımlar için küçük zip arşivlerini (veya daha büyük yapıtlar için S3 destekli yüklemeleri) tercih edin ve büyük ikili dosyalara veya özel çalışma zamanlarına ihtiyacınız olduğunda container imajlarını benimseyin; docker build + aws lambda create-function --package-type Image, ECR’de depolanan imajları kaydeder (container imajları çok daha büyük boyutları destekler). Yaygın tuzaklar arasında kimlik bilgilerini ortam değişkenlerine gömmek, dağıtım paketi boyut sınırlarını aşmak ve katmanların sürümlü ve değişmez olduğunu unutmak yer alır: bağımlılıkları yeni bir katman sürümü yayınlayarak ve fonksiyon yapılandırmasını güncelleyerek güncelleyin. Programatik geri almalar için, operasyonel etkiyi en aza indirmek amacıyla takma adı önceki bir sürümü işaret edecek şekilde güncelleyin (boto3.client('lambda').update_alias(FunctionName='MyFunc', Name='prod', FunctionVersion='3')).

Yürütme ortamı, performans ayarı ve soğuk başlatma (cold-start) azaltma

Lambda CPU’su bellekle birlikte ölçeklenir, bu nedenle CPU’ya bağlı iş yüklerini iyileştirmek genellikle ayrı bir CPU ayarını değiştirmek yerine MemorySize ayarını (UpdateFunctionConfiguration aracılığıyla) artırarak yapılır; süre ve maliyet arasındaki en uygun noktayı bulmak için AWS X-Ray ve CloudWatch metrikleriyle ölçüm yapın. Soğuk başlatmalar paket boyutundan, başlatma kodundan, VPC ağ kullanımından (ENI ekleme gecikmesi) ve dil çalışma zamanından etkilenir; başlatma kodunu kısaltarak, ağır kütüphaneleri katmanlara taşıyarak, Provisioned Concurrency (put_provisioned_concurrency_config) kullanarak veya optimize edilmiş giriş noktalarına sahip container imajları kullanarak bu durumu azaltın. VPC’ye bağlı fonksiyonlar için, bağlantı yığılmasını ve NAT Gateway maliyetlerini sınırlamak amacıyla S3/DynamoDB için VPC uç noktaları veya RDS Proxy kullanarak soğuk başlatma artışlarından kaçının; Lambda yürütme rolünün AWSLambdaVPCAccessExecutionRole yönetilen ilkesini içerdiğinden ve alt ağların ENI’ler için yeterli IP adresi alanına sahip olduğundan emin olun. Senkron zaman aşımları gibi tuzaklara dikkat edin: giden çağrıların tutarlı bir hata modeli görmesini sağlamak için fonksiyon zaman aşımını aşağı akış bağımlılıklarından daha düşük ayarlayın ve SQS, SNS ve Kinesis gibi hizmetler en az bir kez teslim (at-least-once) semantiği sunduğundan, yeniden denemeler için tekillik (idempotency) belirteçleri kullanın.

VPC erişimi, geçici depolama ve güvenlik kontrolleri

Bir Lambda’yı bir VPC’ye yerleştirdiğinizde, fonksiyon yapılandırmasında alt ağ kimliklerini ve güvenlik gruplarını yapılandırmanız gerekir; fonksiyon daha sonra bu alt ağlardaki ENI’leri kullanır ve harici hizmetlere ağ yollarına ihtiyaç duyar. S3 veya DynamoDB’ye NAT olmadan ulaşmak için VPC uç noktaları oluşturun (S3 için Gateway, birçok hizmet için Interface uç noktaları). Veritabanları için, bağlantıları havuzlamak ve ani bağlantı oluşturmayı azaltmak için RDS Proxy’yi tercih edin. /tmp dizini, yürütme ortamı için geçici depolama sağlar ve çağrı sırasında yazılabilirdir; gerekirse daha büyük geçici depolama yapılandırın (EphemeralStorage ayarı) ancak mümkün olduğunda durum bilgisi olmayan (stateless) fonksiyonlar için tasarım yapın. Gizli bilgileri AWS Secrets Manager veya Parameter Store (SSM) içinde saklayarak ve Lambda rolüne en az ayrıcalık ilkesini (least privilege) tanıyarak güvence altına alın; soğuk başlatmada boto3.client('secretsmanager').get_secret_value(SecretId=arn) kullanarak veya fonksiyonun KMSKeyArn‘inde belirtilen bir KMS anahtarıyla şifrelenmiş ortam değişkenlerini kullanarak gizli bilgileri alın. Yaygın geliştirici tuzakları arasında zaman aşımlarına yol açan eksik VPC uç noktaları, koda düz metin anahtarları gömmek ve Secrets Manager API çağrılarının kısıtlanmasını (throttling) önlemek için gizli bilgileri verimli bir şekilde döndürmeyi veya önbelleğe almayı unutmak yer alır.

Olay entegrasyonları, hata yönetimi, yerel test ve dağıtım stratejileri

Lambda, S3 olay bildirimleri, DynamoDB Streams, Kinesis, SQS ve API Gateway gibi birçok olay kaynağıyla yerel olarak entegre olur. Akış kaynakları için batch size ve parallelizationFactor ayarlarını yapın, IteratorAge metriğini izleyin ve kısmi hataları yönetin; çünkü Lambda başarısız olan batch’leri yeniden dener ve hatalar devam ettiğinde sonraki işlemleri engelleyebilir. Asenkron çağrılarda hataları yakalamak için DLQ’ları veya Hedefleri (Destinations) kullanın (asenkron çağrıyı onFailure/onSuccess hedefleriyle yapılandırın). Aynı bucket’a geri yazma yaptığınızda, S3 tarafından tetiklenen fonksiyonlar nesne anahtarlarını kontrol ederek veya nesne etiketlerini kullanarak özyinelemeli (recursive) çağrılara karşı korunmalıdır. Yerel testler en iyi AWS SAM CLI (sam build; sam local invoke; sam local start-api) veya konteynerize edilmiş Lambda çalışma zamanları ile yapılır; birim testleri moto veya yerel mock’lama kullanabilir, ancak entegrasyon testleri geçici test hesaplarındaki gerçek AWS kaynaklarına karşı çalıştırılmalıdır. Dağıtımlar, canary veya linear dağıtımlar gerçekleştirmek için versiyonlanmış fonksiyonlar + alias’lar ve CodeDeploy veya RoutingConfig ile UpdateAlias aracılığıyla trafik kaydırma kullanmalıdır; doğrulama için PreTraffic ve PostTraffic hook’larını uygulayın. Sık karşılaşılan tuzaklar arasında yeniden denemeler için idempotency’yi göz ardı etmek, kısmi BatchGetItem yanıtlarını yönetmemek (UnprocessedKeys kontrol edilmelidir) ve yürütme için gereğinden geniş IAM rolleri kullanmak yer alır.

Pratik Problem: Kullanım Senaryosu

Senaryo: PhotoSpot Inc, S3’e yüklenen görüntüleri işleyen, meta verileri DynamoDB’ye yazan ve üçüncü taraf bir görüntü optimizasyon API’sini çağıran bir Python Lambda fonksiyonu çalıştırmaktadır. Fonksiyonun hızlı cold-start (soğuk başlangıç) performansına, güvenli API kimlik bilgilerine, güvenli geri almalara (rollback) ve meta veri zenginleştirmesi için VPC’de barındırılan bir RDS proxy’ye erişime ihtiyacı vardır.

Zorluk: Kullanıcıların gördüğü yüklemeler için cold-start gecikmesini azaltmak, üçüncü taraf API anahtarını korumak ve rotate etmek (döndürmek), sıfır kesintili güvenli geri alımları ve kontrollü trafik kaydırmayı etkinleştirmek.

Önerilen Yaklaşım:

  1. Değişmez (immutable) sürümler oluşturun ve yayınlayın: kodu güncellemek için AWS CLI veya boto3 kullanın, ardından boto3.client('lambda').publish_version(FunctionName='PhotoProcessor') ile versiyon yayınlayın ve boto3.client('lambda').update_alias(FunctionName='PhotoProcessor', Name='prod', FunctionVersion='7', RoutingConfig={'AdditionalVersionWeights': {'8': 0.1}}) ile alias oluşturun/güncelleyin.
  2. Cold-start’ları azaltın: Alias için boto3.client('lambda').put_provisioned_concurrency_config(FunctionName='PhotoProcessor', Qualifier='prod', ProvisionedConcurrentExecutions=10) ile Provisioned Concurrency yapılandırın ve ağır native kütüphaneleri yayınlanmış bir layer’a (katman) taşıyın (boto3.client('lambda').publish_layer_version).
  3. Kimlik bilgilerini güvence altına alın: Üçüncü taraf API anahtarını AWS Secrets Manager’da saklay

Tüm alanlar · Amazon API Gateway ve Uygulama Entegrasyonu

Bu soruları çözün → · ExamRoll.io’da süreli pratik →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Sınavınızı geçin →

Amazon'a göz atın →

Related guides

Hepsi bir arada erişim

Tek abonelik. Her sınav.

Her plan, sınırsız cevap aramayı, pratik testlerini, AI açıklamalarını ve tam kaynak kütüphanesini — 20'den fazla dilde — açar.

Aylık
24.87
Just €0.83/day
Her şey dahil:
  • Sınırsız cevap arama
  • Sınırsız pratik testi
  • AI destekli açıklamalar
  • Tam kaynak kütüphanesi
  • 20+ dil
  • Haftalık içerik güncellemeleri
  • Ödüller ve yönlendirmeler
  • Öncelikli destek
Ücretsiz denemeyi başlat

Kredi kartı gerekmez*

En iyi değer
12 ay
179.87
Just €0.49/daySave 40%
Her şey dahil:
  • Sınırsız cevap arama
  • Sınırsız pratik testi
  • AI destekli açıklamalar
  • Tam kaynak kütüphanesi
  • 20+ dil
  • Haftalık içerik güncellemeleri
  • Ödüller ve yönlendirmeler
  • Öncelikli destek
Ücretsiz denemeyi başlat

Kredi kartı gerekmez*

✓ Ücretsiz plan dahil · ✓ İstediğiniz zaman iptal edin · ✓ Tüm planlar tam ürünü açar