Amazon DVA-C02: Amazon API Gateway ve Uygulama Entegrasyonu — Ç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.
API Gateway (REST, HTTP, WebSocket) ile API Tasarımı ve entegrasyonlar
Tasarım, doğru API türünü seçmekle başlar: REST API’ler (API Gateway REST), aşama başına önbelleğe alma (per-stage caching) ve gelişmiş eşleme şablonları (mapping templates) gibi ayrıntılı aşama düzeyinde özellikler sunar; HTTP API’ler (API Gateway v2), yaygın proxy desenleri ve yerel JWT/OIDC yetkilendiricileri (authorizers) için daha düşük gecikme süresi ve daha düşük maliyet sağlar; WebSocket API’ler, rota anahtarları ($connect, $disconnect, $default) ile kalıcı istemci-sunucu kanalları sunar ve mesaj göndermek için API Gateway Management API’yi (PostToConnection) gerektirir. Entegrasyonları mimari olarak tasarlarken, basit istek/yanıt (request/response) işlemleri için AWS_PROXY/Lambda proxy’yi tercih edin (
undefined
–type AWS_PROXY komutunu veya v2 için ApiGatewayV2Client üzerinde
undefined
kullanın) ve özel (private) HTTP arka uçları (backend) için HTTP veya VPC Link’i seçin. Yüksek verimli (high-throughput) arka uçlar için NLB + VPC Link kullanın. Mock entegrasyonlar (
undefined
–type MOCK) ve entegrasyon yanıt şablonları (integration response templates), ön uç (frontend) ekiplerinin arka uç (backend) hazır olmadan çalışmaya başlamasına olanak tanır. API’leri CloudFront ile ön yüzde sunarken, origin olarak bölgesel (regional) API uç noktalarını (endpoint) kullanın ve Origin Protocol Policy’yi yalnızca HTTPS (HTTPS-only) olarak ayarlayın; edge-optimized REST API’ler zaten CloudFront’un arkasında yer alır. Yaygın tuzaklar arasında API ve Lambda arasındaki uyuşmayan payload formatı sürümleri (v1.0 vs 2.0), Lambda’yı çağırmak için apigateway.amazonaws.com’a izin vermeyi unutmak (
undefined
–principal apigateway.amazonaws.com ile izin ekleyin) ve tarayıcıları engelleyen CORS yanlış yapılandırmaları bulunur.
Güvenlik ve Yetkilendirme Desenleri (Cognito, IAM, özel yetkilendiriciler)
Güvenlik desenleri, istemci türleri ve erişim modelleriyle eşleşmelidir: Amazon Cognito User Pools’u veya harici bir OIDC sağlayıcısını kullanın ve bunları HTTP API’ler için JWT yetkilendiricileri (authorizers) olarak bağlayın (apigatewayv2’de
undefined
ile
undefined
olarak ayarlanmış
undefined
), veya oturum tabanlı (session-based) kullanıcı erişimi için REST API Cognito Authorizers kullanın. Servisten servise (service-to-service) veya yönetici (admin) API’leri için IAM yetkilendirmesini (SigV4) ve aşamalar (stage) ile metotlar (method) üzerinde sıkı bir şekilde kapsamlandırılmış (tightly-scoped) IAM kaynak politikalarını tercih edin. Lambda (özel) yetkilendiriciler, ısmarlama (bespoke) kimlik doğrulama kurallarını uygulamak için maksimum esneklik sunar, ancak gecikme (latency) ve hata modları (failure modes) eklediklerini unutmayın — cold start’ları azaltmak ve istemcilere 500 döndüren hatalar vermekten kaçınmak için yetkilendirici yanıtlarını TTL ile önbelleğe alın. Kötüye kullanıma karşı kullanım planları (usage plans) ve API anahtarları (
undefined
ve
undefined
) ile kısıtlama (throttling) kotalarını birleştirerek koruma sağlayın. Doğru IAM izinlerini sağlayın: Lambda’yı çağırmak için API Gateway’e izin verin (
undefined
) ve Lambda execution rollerini en az ayrıcalık (least privilege) ilkesine göre kısıtlayın. Geliştiricilerin düştüğü tuzaklar arasında JWT yetkilendiricileri için token çıkarımını (token extraction) etkinleştirmeyi unutmak, yetkilendirici zaman aşımlarının (timeout) genel API gecikmesini etkilemesi ve CloudFront tarafından başlıkların/çerezlerin (headers/cookies) iletilmesi yer alır; bu durum istemeden önbelleklerin atlanmasına veya kullanıcı verilerinin sızmasına neden olabilir.
Aşama Yönetimi, Sürümleme, Önbelleğe Alma ve Canary Dağıtımları
Aşamaları (stage) bağımsız çalışma zamanı yüzeyleri (runtime surfaces) olarak ele alın: dağıtımlar (deployment) anlık görüntülerdir (snapshot) (
undefined
veya
undefined
) ve aşamalar bu anlık görüntülerle eşlenir. Sürümler arasında trafiği yönlendirmek için aşama değişkenlerini (stage variables) veya tercihen Lambda alias’larını kullanın; alias’ları atomik olarak değiştirin (
undefined
) veya kademeli dağıtım (gradual rollout) için API Gateway aşama canary ayarlarını kullanın. REST API’ler için, aşama düzeyinde önbelleğe almayı etkinleştirin (
undefined
ve
undefined
ayarlamak için patch-operations ile
undefined
) ve metot ayarlarında TTL ile önbellek anahtarı (cache key) parametrelerini kontrol edin; HTTP API’lerin şu anda yerleşik önbelleğe alma özelliği yoktur, bu nedenle CloudFront veya uygulama düzeyinde önbellekler kullanın. Dağıtım sırasında veya temel alınan veri değiştiğinde önbelleği temizleyin (evict); yalnızca TTL’ye güvenmek eski (stale) verilerin dönmesine neden olabilir. Sürümleme desenleri: yolda anlamsal API sürümlemesi (/v1/…) kullanın veya blue/green akışları için aşamalı dağıtımlara (staged deployments) güvenin. Yaygın tuzaklar arasında aşama değişkenlerinin (stage variables) güvenli olduğunu varsaymak (konsol erişimi olan geliştiriciler tarafından görülebilirler), önbellek anahtarlarını yanlış yapılandırmak (yetkilendirme başlığını veya sorgu parametrelerini dahil etmeyi unutmak) ve şema değişikliklerinin dağıtımını istemci uyumluluğu ile koordine etmemek yer alır.
Performans, Gözlemlenebilirlik ve Teşhis
API’ları uçtan uca izlenebilir hale getirin: API Gateway’de yürütme (execution) ve erişim (access) loglarını etkinleştirin ve CloudWatch Logs’a yapılandırılmış JSON ($context değişkenleri) çıktısı üretin; izleri (trace) ilişkilendirmek için API Gateway ve Lambda’da X-Ray’i etkinleştirin (dağıtımda/aşamada tracingEnabled ayarını yaparak veya SDK kullanarak: PutFunctionConcurrency/UpdateFunctionConfiguration ile TracingConfig belirterek). CloudWatch’ta API Gateway metriklerini (Latency, IntegrationLatency, 4XX/5XX, CacheHitCount) ve Lambda metriklerini (Duration, Throttles, ConcurrentExecutions) izleyin; gecikmenin nerede biriktiğini belirlemek için metrik matematiğini (metric math) kullanın. WebSocket için bağlantı sayısını ve API Gateway 5XX ani artışlarını takip edin. Sorun giderme adımları arasında, arka ucun mu yoksa ağ geçidinin mi ek yük getirdiğini görmek için IntegrationLatency ile Latency metriklerini karşılaştırmak, soğuk başlatmalar (cold start) veya VPC ENI’ler için X-Ray segmentlerini ayrıntılı incelemek ve eşleme şablonu (mapping template) hataları için CloudWatch Logs’u kontrol etmek yer alır. Asenkron Lambda hataları için DLQ’ları (Dead-Letter Queue) ve hedefleri (destinations) kullanın ve kritik fonksiyonlar için ayrılmış eşzamanlılık (reserved concurrency) veya sağlanan eşzamanlılık (provisioned concurrency) ayarlayın. Geliştirici tuzakları: izlere (trace) hassas PII (Kişisel Tanımlanabilir Bilgi) loglamak (kaynakta gizleyin veya bu akışlar için X-Ray örneklemesini devre dışı bırakın), özel alan adları için sağlayıcı sertifikalarının eksik olması (uç (edge) için bölgesel ACM’ye karşı us-east-1) ve herkese açık API’ler için kullanım planları (usage plans) olmadan varsayılan hesap kısıtlamalarına (throttling) güvenmek.
Pratik Problem: Kullanım Senaryosu
Senaryo: BrightCart, S3/CloudFront üzerinde barındırılan tek sayfalık bir uygulama (single-page application) ile bölgesel bir e-ticaret ön yüzü çalıştırmaktadır ve bir VPC içindeki Lambda fonksiyonlarını çağıran ve siparişleri DynamoDB’ye yazan bir ödeme API’ını API Gateway (bölgesel HTTP API) aracılığıyla sunmaktadır. Ortam, Lambda sürümlerini üretim takma adlarına (alias) dağıtan ve /checkout yolunu bir üretim aşamasında (stage) sunan bir CI/CD boru hattı kullanmaktadır.
Zorluk: Yakın zamanda yapılan bir özellik lansmanından sonra, üretim API gecikmesi arttı ve bazı ödeme istekleri aralıklı olarak 502/504 hatası döndürüyor; geliştiricilerin güvenli bir geri alma mekanizmasına ve anında teşhise ihtiyacı var.
Önerilen Yaklaşım:
- Üretim API aşamasını (stage) önceki dağıtıma (deployment) yönlendirerek bir dağıtım geri alma işlemi oluşturun:
aws apigatewayv2 create-deployment --api-id <api> --description "rollback"komutunu ve ardındanaws apigatewayv2 update-stage --api-id <api> --stage-name prod --deployment-id <old-deploy-id>komutunu kullanın. - Lambda takma adlarını (alias) kullanarak trafiği güvenli bir şekilde kaydırın:
aws lambda update-alias --function-name CheckoutFn --name prod --function-version <previous-version>komutuylaprodLambda takma adını önceki sürüme güncelleyin ve davranışı doğrulayın. - Teşhis verilerini etkinleştirin ve toplayın: API ve Lambda için X-Ray izlemeyi etkinleştirin (
aws apigatewayv2 update-stage --tracing-enabled trueveaws lambda update-function-configuration --function-name CheckoutFn --tracing-config Mode=Active) ve ayrıntılı erişim loglarını ($context.requestTime,$context.integrationErrorMessage) CloudWatch Logs’a gönderecek şekilde açın. - Metrikleri ve izleri (trace) analiz edin: CloudWatch’ta API Gateway
IntegrationLatencyileLatencymetriklerini karşılaştırın, VPC ENI soğuk başlatmalarını (cold-start) belirlemek için X-Ray segmentlerini inceleyin ve Lambda kısıtlamalarını (throttle) veya DynamoDB koşullu yazma işlemlerini kontrol edin; eğer kök neden VPC ENI gecikmesi ise, sağlanan eşzamanlılığı (provisioned concurrency) (aws lambda put-provisioned-concurrency-config) veya VPC uç nokta (endpoint) optimizasyonlarına sahip Lambda’ya geçmeyi düşünün.
Gerekçe: Atomik aşama yeniden dağıtımı ve Lambda takma ad (alias) değişiklikleri, kod değişikliği gerektirmeyen hızlı, düşük riskli bir geri alma sağlar. X-Ray’i ve yapılandırılmış erişim loglarını etkinleştirmek, geliştiricilerin hatalara API Gateway’in mi, Lambda soğuk başlatmalarının mı, VPC ağının mı yoksa alt katmandaki DynamoDB çağrılarının mı neden olduğunu tam olarak belirlemesine olanak tanır ve doğru azaltma yöntemine (sağlanan eşzamanlılık, artırılmış iş hacmi veya yapılandırma düzeltmeleri) yönlendirir.
← Sunucusuz ve AWS Lambda · Tüm alanlar · Amazon DynamoDB ve NoSQL Tasarımı →
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 →