Amazon DVA-C02: Pamięć masowa, Amazon S3, CloudFront i systemy plików (EFS, FSx) — Przewodnik do nauki
Część AWS Developer Associate DVA-C02 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.
Podstawy Amazon S3, mechanizmy bezpieczeństwa i wzorce deweloperskie
Amazon S3 to kanoniczny, trwały magazyn obiektów. Deweloperzy powinni projektować API w oparciu o operacje PutObject/GetObject/HeadObject oraz wieloczęściowe przesyłanie (multipart uploads: CreateMultipartUpload, UploadPart, CompleteMultipartUpload) dla dużych ładunków (payloads), a także używać pomocniczych funkcji SDK, takich jak generate_presigned_url('get_object') lub generate_presigned_post w boto3, do tymczasowego przesyłania plików przez klienta. Zabezpieczaj obiekty za pomocą szyfrowania po stronie serwera (SSE-S3, SSE-KMS poprzez PutObject z x-amz-server-side-encryption lub wymuszając domyślne szyfrowanie w buckecie za pomocą PutBucketEncryption), wymagaj TLS poprzez egzekwowanie aws:SecureTransport w politykach bucketu i blokuj przypadkowy dostęp publiczny za pomocą S3 Block Public Access oraz jawnych odmów (deny) w polityce bucketu. Częste pułapki to jawne odmowy (explicit deny) w IAM mające pierwszeństwo przed uprawnieniami roli, presigned URLs dziedziczące uprawnienia osoby podpisującej, ale wciąż podlegające politykom bucketu i politykom punktów końcowych VPC, oraz błędne konfiguracje CORS podczas przesyłania plików bezpośrednio z przeglądarki (skonfiguruj za pomocą PutBucketCors). Używaj reguł cyklu życia (PutBucketLifecycleConfiguration) do przenoszenia obiektów do Intelligent-Tiering, GLACIER lub wygaszania nieaktualnych wersji, a także włącz wersjonowanie (PutBucketVersioning) zanim zaczniesz polegać na regułach dla nieaktualnych wersji. Do celów audytu i odzyskiwania danych włącz logi dostępu serwera S3 lub użyj S3 Access Points, a także używaj Object Lock z trybem retencji (retention mode) w celu zapewnienia niezmienności danych. Projektuj architekturę z uwzględnieniem ostatecznej spójności (eventual consistency) dla operacji PUT nadpisujących nowe klucze (spójność typu read-after-write jest gwarantowana dla operacji PUT na nowych obiektach, ale aktualizacje istniejących kluczy mogą wykazywać ostateczną spójność w skrajnych przypadkach).
Zaawansowane S3: Object Lambda, przepływy z presigned URLs, polityki i niuanse cyklu życia
S3 Object Lambda pozwala transformować odpowiedzi GetObject poprzez dołączenie funkcji Lambda do punktu dostępowego S3 Object Lambda Access Point; funkcja Lambda otrzymuje GetObjectContext i musi wywołać WriteGetObjectResponse (przez API S3 Object Lambda/Control), aby zwrócić przetworzone bajty. Typowe wzorce to zmiana rozmiaru obrazów w locie, redakcja danych lub konwersja formatu bez duplikowania obiektów. Do przesyłania plików z przeglądarki generuj presigned POSTs (generate_presigned_post w SDK) z ograniczoną polityką (content-length-range, prefiks klucza), aby uniknąć nadużyć. Polityki bucketów oraz polityki punktów końcowych VPC Gateway/Interface są potężnym narzędziem do ograniczania dostępu: preferuj jawne zezwolenia (explicit allow) z warunkami na zasobach (aws:SourceVpce, ostrożnie z aws:Referer) i unikaj otwartych principalów z wildcardem. Pułapki związane z cyklem życia obejmują przejścia dla bucketów z włączonym wersjonowaniem — konfiguruj jawnie noncurrentVersionTransitions i noncurrentVersionExpiration — oraz abort-incomplete-multipart-upload, aby uniknąć wycieków przestrzeni dyskowej. Wymuszając szyfrowanie w tranzycie, wymagaj x-amz-server-side-encryption lub użyj PutBucketPolicy, aby odrzucać żądania bez TLS. Aby zapewnić niezmienność danych w celach zgodności (compliance), włącz Object Lock przed przesłaniem obiektów. Gdy wymagane jest programistyczne egzekwowanie reguł, połącz zdarzenia S3 (SNS, EventBridge) z funkcjami Lambda, aby stosować tagi lub przeprowadzać walidację po przesłaniu pliku.
CloudFront, strategie cachowania i przetwarzanie na krawędzi (Lambda@Edge vs CloudFront Functions)
CloudFront przyspiesza globalne dostarczanie treści i chroni serwery źródłowe (origins). Dla źródeł S3 preferuj Origin Access Control (OAC) z Sigv4 zamiast przestarzałego Origin Access Identity, aby podpisywać żądania do źródła i blokować bezpośredni publiczny dostęp do S3. Dostrajanie zachowania pamięci podręcznej (cache behavior) wykorzystuje Cache-Control/Expires, przekazywanie nagłówka Authorization oraz klucze cache oparte na query stringach/ciasteczkach; preferuj whitelisting kluczy cache lub użycie Cache Policy & Origin Request Policy, aby zmniejszyć fragmentację pamięci podręcznej. Dla treści prywatnych używaj podpisanych adresów URL (signed URLs) lub podpisanych ciasteczek (signed cookies) CloudFront (tworzonych za pomocą cloudfront.create_signer lub pomocniczych funkcji SDK). Używaj CloudFront Functions do lekkich, submilisekundowych manipulacji (na etapie viewer request/response), a Lambda@Edge do cięższej logiki wymagającej środowisk uruchomieniowych Node/Python i operacji na etapie origin-request lub origin-response; pamiętaj, że funkcje Lambda@Edge są wdrażane z regionu us-east-1, co wiąże się z możliwością zimnego startu (cold start) i opóźnieniami w replikacji regionalnej. Unieważnianie (invalidation) wiąże się z kosztami i opóźnieniami — preferuj wersjonowanie kluczy obiektów (wdrażaj nowe nazwy plików lub dodawaj wersję w query stringu), aby unikać unieważnień. Instrumentuj CloudFront za pomocą logów w czasie rzeczywistym i metryk CloudWatch w celu wykrywania anomalii niemal w czasie rzeczywistym, oraz wyzwalaj funkcje Lambda do automatycznych odpowiedzi. Częste pułapki to przekazywanie zbyt wielu nagłówków/ciasteczek, które „psują” cache, oraz zakładanie natychmiastowej propagacji unieważnień.
Współdzielone systemy plików: kryteria wyboru EFS i FSx, montowanie i pułapki
Wybierz EFS dla zgodnych z POSIX, współbieżnie montowanych systemów plików NFSv4.1 na klientach Linux; wybierz warianty FSx, gdy potrzebujesz funkcji SMB/Windows lub wysokowydajnego Lustre. EFS obsługuje szyfrowanie w spoczynku (at rest) za pomocą KMS, szyfrowanie w tranzycie (in transit) przy użyciu opcji montowania TLS oraz punkty dostępu (access points) do mapowania UID/GID per aplikacja. Montuj za pomocą amazon-efs-utils (
undefined
) lub klienta NFS dla obciążeń o wysokiej przepustowości. Wybierz tryb wydajności generalPurpose vs maxIO oraz tryb przepustowości bursting vs provisioned w oparciu o wzorce przepustowości/IOPS. FSx for Windows integruje się z Active Directory i udostępnia zasoby SMB z listami ACL NTFS, przestrzeniami nazw DFS i natywną semantyką Windows — montuj za pomocą
undefined
lub przez klientów EC2 Windows; częste pułapki to złożoność dołączania do AD i rozwiązywanie nazw DNS. FSx for Lustre jest idealny dla obliczeń o wysokiej wydajności (HPC) i może transparentnie łączyć się z S3 za pomocą zadań repozytorium danych (data repository tasks) do importu/eksportu zestawów danych. Pułapki sieciowe: otwórz porty NFS/SMB w grupach bezpieczeństwa (security groups), używaj celów montowania (mount targets) w każdej strefie dostępności (AZ) dla EFS i upewnij się, że polityki IAM nie są używane do ograniczania dostępu na poziomie NFS — punkty egzekwowania to uprawnienia POSIX i grupy bezpieczeństwa. Do tworzenia kopii zapasowych preferuj zautomatyzowane migawki (EFS Backup, migawki FSx) i regularnie testuj odtwarzanie.
Problem praktyczny: Scenariusz użycia
Scenariusz: Firma AcmeAnalytics utrzymuje publiczny, statyczny pulpit nawigacyjny hostowany w buckecie S3 i serwowany globalnie przez dystrybucję CloudFront. Zespół inżynierów musi serwować prywatne pliki danych, wykonywać konwersję CSV na JSON w locie dla niektórych obiektów i zapewnić, że nowe buildy pulpitu unieważniają pamięć podręczną przy minimalnych kosztach.
Wyzwanie: Zaimplementuj bezpieczne dostarczanie prywatnych obiektów, dynamiczną transformację bez duplikowania danych oraz niskokosztową strategię aktualizacji pamięci podręcznej.
Zalecane podejście:
- Utwórz bucket S3 z
PutBucketEncryption(SSE-KMS) iPutBucketPolicy, aby odrzucać połączenia inne niż TLS i zezwalać na dostęp tylko z CloudFront Origin Access Control (utwórz OAC i dołącz do dystrybucji); użyjPutBucketVersioning, aby włączyć wersjonowanie. - Skonfiguruj S3 Object Lambda Access Point; zaimplementuj funkcję Lambda, która obsługuje
GetObjectContext, pobiera oryginał za pomocąS3 GetObject, transformuje CSV do JSON w pamięci i zwraca wynik za pomocą
undefined
.
3. Skonfiguruj zachowania pamięci podręcznej (cache behaviors) CloudFront: kieruj ruch /private/* do S3 Object Lambda Access Point (jako origin), ustaw Cache Policy, która buforuje w oparciu o nagłówek Accept (jeśli to konieczne), i włącz minimalne wartości TTL; dla zasobów pulpitu używaj wersjonowanych nazw plików, aby unikać unieważnień.
4. W przypadku rzadkich, koniecznych unieważnień, wywołaj
undefined
z CI po wdrożeniu; w przeciwnym razie, przy rutynowych zmianach, przesyłaj zasoby z hashem zawartości w nazwie pliku, aby ominąć koszty unieważnienia.
Uzasadnienie: Ograniczenie dostępu do S3 tylko dla CloudFront za pomocą OAC i wymuszenie SSE-KMS zabezpiecza dane w tranzycie i w spoczynku. S3 Object Lambda zapewnia transformację w locie bez duplikowania obiektów, a używanie wersjonowania obiektów lub nazw plików z hashem zawartości pozwala unikać kosztownych unieważnień, zachowując jednocześnie wydajność pamięci podręcznej.
← Monitorowanie · Wszystkie domeny · Bazy danych i buforowanie (RDS →
Przećwicz te pytania → · Testy na czas na ExamRoll.io →
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.
Zdaj egzamin →