Amazon CloudFront
Amazon CloudFront
Globalna sieć dostarczania treści (CDN). Przyspiesz swoją stronę i API, serwując dane z ponad 600 lokalizacji brzegowych na całym świecie.
Amazon CloudFront to globalna sieć dostarczania treści (CDN - Content Delivery Network), która przyspiesza dystrybucję stron internetowych, filmów, API i innych zasobów do użytkowników na całym świecie. CloudFront posiada ponad 600 punktów obecności (edge locations) rozmieszczonych w ponad 100 miastach na 6 kontynentach. Gdy użytkownik żąda treści, CloudFront automatycznie kieruje żądanie do najbliższej lokalizacji brzegowej, minimalizując opóźnienia i zapewniając szybkie ładowanie.
CloudFront doskonale integruje się z innymi serwisami AWS - możesz użyć S3 jako źródła plików statycznych, EC2 lub Application Load Balancer jako backendu dla treści dynamicznych, a Lambda@Edge do przetwarzania żądań na brzegu sieci. Oprócz przyspieszenia, CloudFront oferuje ochronę przed atakami DDoS (integracja z AWS Shield) i pełną obsługę HTTPS z darmowymi certyfikatami SSL/TLS z AWS Certificate Manager.
CloudFront posiada ponad 600 edge locations na całym świecie - to wielokrotnie więcej niż liczba regionów AWS. W Polsce dane serwowane są z edge locations w Warszawie, dzięki czemu polscy użytkownicy otrzymują treści z opóźnieniem poniżej 10 ms.
Zawsze ustawiaj Cache-Control headers na plikach w S3 - np. max-age=31536000 dla plików z hashem w nazwie (app.a1b2c3.js) i max-age=300 dla index.html. Dzięki temu statyczne zasoby są cachowane latami, a HTML odświeża się co 5 minut. Użyj invalidation tylko w sytuacjach awaryjnych.
Invalidacja cache w CloudFront kosztuje $0 za pierwsze 1000 sciezek/miesiac, potem $0.005 za sciezke. Bledna konfiguracja TTL moze serwowac stale dane przez godziny lub dni. Wildcard invalidation (/*) jest wygodna, ale invaliduje CALY cache i moze przejsciowo zwiekszyc obciazenie origin. Pamietaj o Cache-Control headerach na origin, bo CloudFront je respektuje.
CloudFront to globalna siec CDN z ponad 600 lokalizacjami brzegowymi (edge locations). Cachuje tresc blisko uzytkownikow, redukujac latency i odciazajac serwer zrodlowy. Oto jak skonfigurowac i zoptymalizowac dystrybucje CloudFront.
Tworzenie dystrybucji i konfiguracja origin
Origin to zrodlo tresci - S3 bucket, ALB, API Gateway, EC2 lub dowolny serwer HTTP. Dla S3 uzyj Origin Access Control (OAC) - CloudFront uwierzytelnia sie do bucketa bez upubliczniania go. Dla ALB ustaw custom header, ktory ALB weryfikuje - zapobiega to omijaniu CloudFront. Mozesz miec wiele originow w jednej dystrybucji i kierowac ruch na podstawie sciezki URL.
Zachowania (Behaviors) - reguly routingu
Behaviors okreslaja jak CloudFront obsluguje rozne sciezki. Domyslne behavior (*) obsluguje caly ruch. Dodatkowe behaviors (np. /api/*, /images/*) moga kierowac do roznych originow, miec inne ustawienia cache, wymagac HTTPS lub uzywac innej polityki cachowania. Kolejnosc behaviors ma znaczenie - CloudFront dopasowuje od najdluzszego wzorca.
Polityki cachowania (Cache Policies)
Cache Policy definiuje klucz cache - na podstawie czego CloudFront rozroznia unikalne obiekty. Domyslnie klucz to URL path. Mozesz dodac do klucza: query strings (np. ?size=large), headers (np. Accept-Language), cookies. Im mniej elementow w kluczu cache, tym wyzszy cache hit ratio. AWS dostarcza managed policies: CachingOptimized (dla statycznych assetow), CachingDisabled (pass-through do origin).
Cachowanie i TTL
CloudFront cachuje obiekty na edge locations wedlug headerow Cache-Control/Expires z origina. Mozesz nadpisac TTL w Cache Policy: minimum, maximum i default TTL. Typowa konfiguracja: obrazy i CSS/JS z hash w nazwie - TTL 365 dni, HTML - TTL 60 sekund lub no-cache, API - brak cachowania. Metryka CloudWatch CacheHitRate pokazuje skutecznosc cachowania - cel to powyzej 90%.
Invalidacja cache
Invalidation wymusza odswiezenie obiektow na wszystkich edge locations. Mozesz invalidowac konkretne sciezki (/index.html) lub wzorce (/images/*). Pierwsze 1000 invalidacji miesiecznie jest darmowe. Lepsza strategia niz invalidacja: cache busting przez hash w nazwie pliku (np. style.a3f2b1.css) - nowa nazwa = nowy obiekt w cache, zero invalidacji.
SSL/TLS i custom domeny
CloudFront obsluguje HTTPS zarowno na edge (viewer protocol) jak i do origina (origin protocol). Mozesz uzyc darmowego certyfikatu ACM (musi byc w regionie us-east-1). Dodaj alternatywne nazwy domen (CNAMEs) i skonfiguruj DNS (Route 53 Alias lub CNAME). Wybierz TLS policy - TLSv1.2_2021 to minimum dla bezpieczenstwa. SNI (Server Name Indication) jest darmowy i obsluguje wszystkie nowoczesne przegladarki.
CloudFront moze dramatycznie przyspieszyc aplikacje i zredukowac koszty transferu - ale wymaga swiadomej konfiguracji cachowania. Oto wskazowki z doswiadczenia produkcyjnego.
Optymalizuj Cache Hit Ratio - klucz do wydajnosci
Niski CacheHitRate oznacza, ze CloudFront czesto odpytuje origin - tracisz korzysci CDN. Sposoby na poprawe: minimalizuj elementy w cache key (nie przekazuj niepotrzebnych query strings i cookies), ustaw dlugi TTL z cache bustingiem w nazwach plikow, wlacz Origin Shield (dodatkowa warstwa cache miedzy edge a origin). Monitoruj CacheHitRate w CloudWatch - cel to 90%+.
PoczatkujacyLambda@Edge i CloudFront Functions
CloudFront Functions (lekkie, JavaScript, sub-milisekundowe) idealnie do: manipulacji URL, dodawania security headers, prostych redirectow. Lambda@Edge (pelna Lambda, wiecej jezykow, do 30 sekund) do: autoryzacji, dynamicznego origin selectingu, manipulacji body. CloudFront Functions sa 6x tansze i 10x szybsze - uzywaj ich gdy wystarczaja. Lambda@Edge tylko gdy potrzebujesz dostepu do body lub origin request/response.
ZaawansowanyOAC dla S3 - nigdy nie upubliczniaj bucketa
Origin Access Control (OAC) zastepuje przestarzale Origin Access Identity (OAI). OAC pozwala CloudFront uzyskac dostep do prywatnego S3 bucketa - uzytkownik moze pobierac pliki tylko przez CloudFront, nigdy bezposrednio z S3. OAC wspiera SSE-KMS (szyfrowanie kluczami KMS), czego OAI nie potrafil. Konfiguracja: dodaj OAC do origin, zaktualizuj S3 bucket policy o zezwolenie dla CloudFront.
PoczatkujacyPrice Classes - kontroluj koszty CDN
CloudFront ma rozne ceny w roznych regionach - Ameryka Polnocna i Europa sa najtansze, Azja i Australia najdrozsze. Price Class 100 (Ameryka + Europa) to najtansza opcja - idealna jesli Twoi uzytkownicy sa glownie w Europie i USA. Price Class 200 dodaje Azje. Price Class All uzywa wszystkich edge locations. Dla polskiego startupu Price Class 100 to optymalny wybor.
PoczatkujacyReal-Time Logs do Kinesis Data Streams
Standard CloudFront Logs trafiaja do S3 z opoznieniem do kilkudziesieciu minut. Real-Time Logs wysylaja dane do Kinesis Data Streams w ciagu sekund - mozesz analizowac ruch na zywo. Uzyj tego do: wykrywania anomalii, monitorowania cache hit ratio per URL, debugowania bledow. Mozesz filtrowac logi (np. tylko status 5xx) aby zredukowac koszty Kinesis.
ZaawansowanyCustom Error Pages - graceful degradation
Skonfiguruj custom error responses: gdy origin zwraca 503, CloudFront moze serwowac strone /maintenance.html z S3 z kodem 503 i TTL 10 sekund. Dla bledow 404 serwuj /404.html. Ustaw Error Caching Minimum TTL na krotki czas (np. 10 sekund) zeby szybko wrocic do normalnosci po naprawie origina. Cachowany blad to lepsza odpowiedz niz timeout.
PoczatkujacyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon CloudFront bezposrednio w konsoli AWS.
Do czego sluzy Amazon CloudFront?
Przyspieszenie stron internetowych
Serwowanie statycznych zasobów (obrazy, CSS, JS) z edge locations zamiast z jednego serwera. Użytkownicy z Japonii, Brazylii czy Niemiec ładują stronę równie szybko.
Streaming wideo
Dystrybucja treści wideo (VOD i live streaming) do milionów widzów jednocześnie z automatycznym skalowaniem i adaptacyjnym bitrate.
Ochrona API i aplikacji
CloudFront jako warstwa przed Twoim backendem - cachowanie odpowiedzi API, ochrona DDoS z AWS Shield i filtrowanie ruchu z AWS WAF.
Hosting statycznych stron z S3
Podpięcie domeny z HTTPS do bucketa S3. CloudFront dodaje SSL, cachowanie i globalną dystrybucję do hostingu statycznego.
Co musisz wiedziec?
Edge Location
Punkt obecności (data center) CloudFront rozmieszczony na świecie. Tutaj cachowane są kopie Twoich treści. Ponad 600 lokalizacji globalnie.
Distribution
Konfiguracja CloudFront definiująca skąd pobierać treść (origin), jak cachować, jaką domenę użyć i ustawienia SSL. Każda dystrybucja otrzymuje URL dxxxxxx.cloudfront.net.
Origin
Źródło oryginalnych treści - bucket S3, serwer EC2, ALB lub dowolny serwer HTTP. CloudFront pobiera treść z originu i cachuje na edge locations.
TTL (Time to Live)
Czas przechowywania obiektu w cache edge location. Po upływie TTL CloudFront ponownie pobiera treść z originu. Domyślnie 24 godziny.
Lambda@Edge
Funkcje Lambda uruchamiane na edge locations. Pozwalają modyfikować żądania i odpowiedzi na brzegu sieci - np. przekierowania, A/B testy, autoryzacja.
Architektura: Globalna dystrybucja tresci z CloudFront
Architektura CDN z wieloma originami, ochrona WAF i przetwarzaniem na edge. Ten wzorzec obsluguje zarowno statyczne assety z S3, jak i dynamiczne API z ALB, chroniąc cala infrastrukture za jednym punktem wejscia.
Porownanie CloudFront vs bezposredni ALB/S3
| Cecha | CloudFront + origin | Bezposrednio ALB/S3 |
|---|---|---|
| Latency | Niski (450+ edge locations) | Zalezny od regionu usera |
| Koszt transferu | $0.085/GB (tanszy niz ALB) | $0.09/GB (ALB) lub $0.09/GB (S3) |
| SSL/TLS | Darmowy cert ACM, HTTP/3 | ACM na ALB, brak HTTP/3 na S3 |
| Cache | Wbudowany, konfigurowalny TTL | Brak (kazdy request do origin) |
| Ochrona DDoS | AWS Shield Standard gratis | Brak domyslnej ochrony |
| Konfiguracja | Srednia (behaviors, origins) | Prosta (bezposredni dostep) |
Ile kosztuje Amazon CloudFront?
Transfer danych
Płacisz za GB danych przesłanych z edge locations do użytkowników. Ceny zależą od regionu docelowego.
Europa: $0.085/GB (pierwsze 10 TB/mies.)
Żądania HTTP/HTTPS
Opłata za liczbę żądań. Żądania HTTPS są nieco droższe od HTTP.
HTTP: $0.0075/10 000 żądań, HTTPS: $0.01/10 000
Lambda@Edge
Dodatkowy koszt za wywołania i czas trwania funkcji Lambda na edge locations.
$0.60/mln żądań + $0.00005001/128 MB-s
Free Tier
1 TB transferu danych wychodzących i 10 mln żądań HTTP/HTTPS miesięcznie - za darmo, bezterminowo (always free).
Wystarczy na małą-średnią stronę WWW
Przyklady AWS CLI
Utwórz dystrybucję dla S3
Tworzy dystrybucję CloudFront z bucketem S3 jako originem
aws cloudfront create-distribution \
--origin-domain-name moj-bucket.s3.amazonaws.com \
--default-root-object index.html
Inwalidacja cache
Wymusza odświeżenie plików w cache na wszystkich edge locations
aws cloudfront create-invalidation \
--distribution-id E1A2B3C4D5E6F7 \
--paths "/*"
Lista dystrybucji
Wyświetla wszystkie dystrybucje CloudFront na koncie
aws cloudfront list-distributions \
--query 'DistributionList.Items[].{Id:Id,Domain:DomainName,Status:Status,Origins:Origins.Items[0].DomainName}' \
--output table
Quiz: Amazon CloudFront
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Czym jest Edge Location w kontekście CloudFront?
2. Co należy zrobić, aby natychmiast usunąć stary plik z cache CloudFront?
3. Czy Free Tier CloudFront jest ograniczony czasowo?
Czesto uzywane razem z Amazon CloudFront
Czytaj więcej o Amazon CloudFront
Chcesz poznac Amazon CloudFront w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon CloudFront krok po kroku. Teoria + praktyka od zera.