Amazon DVA-C02: Depolama, Amazon S3, CloudFront ve Dosya Sistemleri (EFS, FSx) — Ç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.
Amazon S3 temelleri, güvenlik kontrolleri ve geliştirici desenleri
Amazon S3, kanonik dayanıklı nesne depolama çözümüdür. Geliştiriciler, büyük yükler (payload) için API’lerini PutObject/GetObject/HeadObject ve çok parçalı yüklemeler (CreateMultipartUpload, UploadPart, CompleteMultipartUpload) etrafında tasarlamalı ve geçici istemci yüklemeleri için boto3’ün generate_presigned_url(‘get_object’) veya generate_presigned_post gibi SDK yardımcılarını kullanmalıdır. Nesneleri sunucu tarafı şifreleme (SSE-S3, SSE-KMS; PutObject ile x-amz-server-side-encryption kullanarak veya PutBucketEncryption ile bucket varsayılan şifrelemesini zorunlu kılarak) ile güvence altına alın, bucket policy’lerinde aws:SecureTransport koşulunu zorunlu kılarak TLS kullanılmasını sağlayın ve S3 Block Public Access ve açık bucket policy ‘deny’ ifadeleri ile yanlışlıkla herkese açık erişimi engelleyin. Sık karşılaşılan tuzaklar arasında, IAM’deki açık ‘deny’ ifadelerinin rol izinlerine göre öncelikli olması, önceden imzalanmış URL’lerin (presigned URL) imzalayanın ayrıcalıklarını devralmasına rağmen yine de bucket policy’lerine ve VPC endpoint policy’lerine tabi olması ve tarayıcılardan doğrudan yükleme yaparken karşılaşılan CORS yanlış yapılandırmaları (PutBucketCors ile yapılandırın) yer alır. Nesneleri Intelligent-Tiering veya GLACIER’a taşımak ya da güncel olmayan sürümleri (noncurrent versions) zaman aşımına uğratmak için yaşam döngüsü kurallarını (PutBucketLifecycleConfiguration) kullanın ve güncel olmayan sürüm kurallarına güvenmeden önce sürüm oluşturmayı (PutBucketVersioning) etkinleştirin. Denetim ve kurtarma için S3 sunucu erişim günlüklerini veya S3 Access Points’i etkinleştirin ve değiştirilemez (immutable) saklama için saklama modu (retention mode) ile Object Lock kullanın. Yeni anahtarlara yapılan üzerine yazma (overwrite) PUT işlemlerinin nihai tutarlılığı (eventual consistency) için mimari tasarlayın (yeni nesnelerin PUT işlemi için yazdıktan sonra okuma garantilidir, ancak mevcut anahtarlardaki güncellemeler uç senaryolarda nihai tutarlılık gösterebilir).
Gelişmiş S3: Object Lambda, önceden imzalanmış akışlar, policy’ler ve yaşam döngüsü nüansları
S3 Object Lambda, bir S3 Object Lambda Access Point’e bir Lambda fonksiyonu ekleyerek GetObject yanıtlarını dönüştürmenize olanak tanır; Lambda bir GetObjectContext alır ve dönüştürülmüş baytları döndürmek için (S3 Object Lambda/Control API aracılığıyla) WriteGetObjectResponse’u çağırmalıdır. Tipik kullanım senaryoları, nesneleri çoğaltmadan anında görüntü yeniden boyutlandırma, veri karartma (redaction) veya format dönüştürmedir. Tarayıcıdan yüklemeler için, kötüye kullanımı önlemek amacıyla kısıtlanmış bir policy (content-length-range, anahtar öneki) ile önceden imzalanmış POST’lar (SDK’larda generate_presigned_post) oluşturun. Bucket policy’leri ve VPC Gateway/Interface endpoint policy’leri erişimi kısıtlamak için güçlü araçlardır: açık ‘allow’ ifadeleri ile birlikte kaynak koşullarını (aws:SourceVpce, aws:Referer dikkatli bir şekilde) tercih edin ve joker karakterli (wildcard) principal’lerden kaçının. Yaşam döngüsündeki püf noktaları arasında sürüm oluşturulmuş bucket’lar için geçişler (noncurrentVersionTransitions ve noncurrentVersionExpiration’ı açıkça yapılandırın) ve depolama sızıntısını önlemek için tamamlanmamış çok parçalı yüklemeleri iptal etme (abort-incomplete-multipart-upload) kuralı bulunur. Aktarım sırasında şifrelemeyi (in-transit encryption) zorunlu kılarken, x-amz-server-side-encryption başlığını isteyin veya tls olmadan yapılan istekleri reddetmek için PutBucketPolicy kullanın. Değiştirilemezlik (immutability) uyumluluğu için, nesneleri yüklemeden önce Object Lock’u etkinleştirin. Programatik zorunluluklar gerektiğinde, etiket uygulamak veya yükleme sonrası doğrulama yapmak için S3 olaylarını (SNS, EventBridge) Lambda ile birleştirin.
CloudFront, önbellekleme stratejileri ve uçta hesaplama (Lambda@Edge vs CloudFront Functions)
CloudFront, küresel dağıtımı hızlandırır ve origin’leri korur. S3 origin’leri için, origin isteklerini imzalamak ve doğrudan S3 genel erişimini engellemek amacıyla eski Origin Access Identity yerine Sigv4 ile Origin Access Control’ü (OAC) tercih edin. Önbellek davranışını (cache behavior) ayarlamak için Cache-Control/Expires, Authorization başlığının iletilmesi ve sorgu dizesi/çerez tabanlı önbellek anahtarları kullanılır; önbellek parçalanmasını (cache fragmentation) azaltmak için önbellek anahtarı beyaz listeye alma (whitelisting) veya Cache Policy & Origin Request Policy’yi tercih edin. Özel içerik için CloudFront imzalı URL’lerini (signed URL) veya imzalı çerezlerini (signed cookie) kullanın (cloudfront.create_signer veya SDK yardımcıları aracılığıyla oluşturulur). Milisaniyenin altında süren hafif manipülasyonlar (viewer request/response) için CloudFront Functions’ı ve Node/Python çalışma zamanları (runtime) ile origin-request veya origin-response kancaları (hook) gerektiren daha ağır mantıklar için Lambda@Edge’i kullanın; Lambda@Edge fonksiyonlarının us-east-1’den dağıtıldığını ve soğuk başlatma (cold-start) etkileri ile bölgesel çoğaltma gecikmesi (regional replication delay) olduğunu unutmayın. Geçersiz kılma (invalidation) işleminin maliyeti ve gecikmesi vardır; geçersiz kılmalardan kaçınmak için nesne anahtarı sürümlemeyi (yeni dosya adları dağıtmak veya sorgu dizesine sürüm eklemek) tercih edin. Neredeyse gerçek zamanlı anomali tespiti için CloudFront’u gerçek zamanlı günlükler (real-time logs) ve CloudWatch metrikleri ile donatın ve otomatik yanıtlar için Lambda’yı tetikleyin. Sık karşılaşılan tuzaklar arasında, önbelleği bozan (cache bust) başlıkların/çerezlerin gereğinden fazla iletilmesi ve geçersiz kılma işleminin anında yayılacağını varsaymak yer alır.
Paylaşılan dosya sistemleri: EFS ve FSx karar kriterleri, bağlama işlemleri ve yaygın sorunlar
Linux istemciler arasında eş zamanlı olarak bağlanabilen, POSIX uyumlu NFSv4.1 dosya sistemleri için EFS’yi seçin; SMB/Windows özelliklerine veya yüksek performanslı Lustre’a ihtiyacınız olduğunda FSx varyantlarını seçin. EFS, KMS aracılığıyla bekleme durumunda şifrelemeyi (encryption at rest), TLS bağlama seçeneği kullanılarak aktarım sırasında şifrelemeyi (encryption in transit) ve uygulama başına UID/GID eşlemesi için erişim noktalarını (access points) destekler.
undefined
(mount -t efs -o tls,accesspoint=fsap-0123456789 fs-12345678:/ /mnt) kullanarak veya yüksek verimli (high-throughput) iş yükleri için NFS istemcisi ile bağlayın. Verim/IOPS desenlerinize göre performans modunu generalPurpose veya maxIO, iş hacmi modunu (throughput mode) ise bursting veya provisioned olarak seçin. FSx for Windows, Active Directory ile entegre olur ve NTFS ACL’leri, DFS ad alanları ve yerel Windows semantikleri ile SMB paylaşımları sunar—net use \\fs-xxxx\share kullanarak veya EC2 Windows istemcileri aracılığıyla bağlayın; yaygın sorunlar arasında AD’ye katılım karmaşıklığı ve DNS çözümlemesi bulunur. FSx for Lustre, yüksek performanslı bilgi işlem (HPC) için idealdir ve veri kümelerini içe/dışa aktarmak için veri deposu görevleri (data repository tasks) aracılığıyla S3’e şeffaf bir şekilde bağlanabilir. Ağ ile ilgili dikkat edilmesi gerekenler: güvenlik gruplarında NFS/SMB portlarını açın, EFS için her AZ’de bağlama hedefleri (mount targets) kullanın ve IAM politikalarının NFS düzeyindeki erişimi kısıtlamak için kullanılamayacağından emin olun—zorlama noktaları POSIX izinleri ve güvenlik gruplarıdır. Yedeklemeler için otomatik anlık görüntüleri (EFS Backup, FSx snapshots) tercih edin ve geri yüklemeleri düzenli olarak test edin.
Pratik Problem: Kullanım Senaryosu
Senaryo: AcmeAnalytics, bir S3 bucket’ında barındırılan ve bir CloudFront dağıtımı aracılığıyla küresel olarak sunulan, müşteriye yönelik statik bir gösterge panosu (dashboard) çalıştırmaktadır. Mühendislik ekibinin özel veri dosyalarını sunması, bazı nesneler için anında CSV’den JSON’a dönüştürme yapması ve yeni gösterge panosu derlemelerinin önbellekleri minimum maliyetle geçersiz kılmasını sağlaması gerekmektedir.
Zorluk: Güvenli özel nesne teslimatı, depolamayı kopyalamadan dinamik dönüşüm ve önbellek güncellemeleri için düşük maliyetli bir strateji uygulayın.
Önerilen Yaklaşım:
- PutBucketEncryption (SSE-KMS) ve TLS olmayan erişimi reddetmek ve yalnızca CloudFront Origin Access Control’den (OAC oluşturun ve dağıtıma ekleyin) erişime izin vermek için PutBucketPolicy ile bir S3 bucket’ı oluşturun; sürümlemeyi etkinleştirmek için PutBucketVersioning kullanın.
- Bir S3 Object Lambda Access Point yapılandırın; GetObjectContext’i işleyen, S3 GetObject aracılığıyla orijinali alan, bellek içinde CSV’yi JSON’a dönüştüren ve sonucu s3control.write_get_object_response kullanarak döndüren bir Lambda uygulayın.
- CloudFront önbellek davranışlarını (cache behaviors) yapılandırın: /private/* yolunu S3 Object Lambda Access Point’e (bir origin olarak) yönlendirin, gerekirse Accept başlığına göre önbelleğe alan bir Cache Policy ayarlayın ve minimum TTL’leri etkinleştirin; gösterge panosu varlıkları için geçersiz kılmalardan (invalidation) kaçınmak amacıyla sürümlenmiş dosya adları kullanın.
- Nadiren gereken geçersiz kılmalar için, dağıtımdan sonra CI’dan cloudfront.create_invalidation(DistributionId=…, InvalidationBatch={…}) çağrısı yapın; bunun dışında, rutin değişiklikler için, geçersiz kılma maliyetlerini atlamak amacıyla varlıkları dosya adında bir içerik özeti (content-hash) ile yükleyin.
Gerekçe: S3 erişimini OAC aracılığıyla CloudFront ile kısıtlamak ve SSE-KMS’i zorunlu kılmak, veriyi aktarım sırasında (in-flight) ve bekleme durumunda (at-rest) güvence altına alır. S3 Object Lambda, nesneleri kopyalamadan anında dönüşüm sağlar ve nesne sürümlemesi veya içerik özetli dosya adları kullanmak, önbellek verimliliğini korurken pahalı geçersiz kılmalardan kaçınır.
← İzleme · Tüm alanlar · Veritabanları ve Önbellekleme (RDS →
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 →