Paweł Łukasiewicz
2021-12-05
Paweł Łukasiewicz
2021-12-05
Udostępnij Udostępnij Kontakt
Wprowadzenie

CloudFront jest siecią CDN (Content Delivery Network). Pobiera dane z S3 i dystrybuuje je do wielu centrów danych. Dostarcza dane poprzez sieć centrów danych zwanych lokalizacjami brzegowymi. Żądanie użytkownika jest kierowane do najbliższej lokalizacji co skutkuje niższymi opoźnieniami, niskim ruchem sieciowym oraz, co niezwykle ważne, szybkim dostępem do danych.

Co zapewnia na CloudFront?

  • Szybkość: rozległa sieć lokalizacji i buforowanie danych przez CloudFront zapewnia wysoką szybkość transferu danych, zmniejszone opóźnienia w dostępie do danych oraz mały ruch sieciowy.
  • Interoperacyjność: Amazon CloudFront jest zaprojektowany w sposób pozwalający na łatwą integrację z innymi usługami takimi jak S3 czy EC2.
  • Elastyczność: korzystanie z CloudFront nie wymaga nakładów związanych z utrzymaniem. Usługa automatycznie reaguje na wszelkie zmiany dotyczące zwiększenia lub zmniejszenia zasobów.
  • Niezawodność: CloudFront zbudowany jest w wysoce niezawodnej infrastrukturze Amazon. Lokalizacje brzegowe automatycznie przekierowują użytkowników końcowych do najbliższej lokalizacji jeżeli jest to działanie wymagane a wynikające np. ze zwiększonego ruchu sieciowego.
  • Globalny dostęp: CloudFront wykorzystuje globalną sieć lokalizacji brzegowych zlokalizowanych w większości dostępnych regionów.
  • Niski koszt: podobnie jak w przypadku innych usług płacimy tylko za treści, które dostarczane są przez sieć – brak ukrytych opłat.
  • Łatwość użycia: o tym w dalszej części wpisu.

Jak CloudFront dostarcza treści?

  1. Użytkownik wchodzi na stronę internetową i żąda pobrania obiektu jakim może być np. plik graficzny.
  2. DNS kieruje żądanie do najbliższej lokalizacji brzegowej w celu obsługi żądania użytkownika.
  3. CloudFront sprawdza swój cache w danej lokalizacji brzegowej celem sprawdzenia wystąpienia żadanego pliku/plików. Jeżeli plik zostaje znaleziony dochodzi do zwrócenia go użytkownikowi. W przeciwnym wypadku dochodzi do realizacji poniższych kroków:
    • CloudFront porównuje żądanie ze specyfikacją i przekazuje je do odpowiedniego serwera źródłowego dla danego typu plików.
    • Serwer źródłowy wysyła pliki z powrotem do lokalizacji brzegowej CloudFront.
    • Gdy tylko pierwszy bajt danych dotrze z serwera źródłowego, CloudFront zaczyna go przekazywać użytkownikowi i w tym samym czasie dodaje pliki do pamięci podręcznej w danej lokalizacji brzegowej gdyby ktoś ponownie odpytywał o ten sam plik.
  4. Obiekt jest przechowany w cachu przez 24 godziny lub przez czas podany w nagłówku danego pliku. CloudFront wykonuje również następujące czynności:
    • przekazuje następne żądanie dla obiektu do źródła użytkownika w celu spradzenia czy wersja w lokalizacji brzegowej jest zaktualizowana czy nie;
    • jeżeli doszło do aktualizacji obiektu w lokalizacji brzegowej, CloudFront dostarcza aktualny obiekt;
    • jeżeli wersja lokalizacji brzegowej nie jest zaktualizowana CloudFront przechowuje najnowszą wersję w pamięci podręcznej danej lokalizacji brzegowej.

Konfiguracja CloudFront

  1. Przechodzimy pod adres https://aws.amazon.com/s3 lub korzystamy z wyszukiwarki usług: AWS: CloudFront
  2. Dodajemy plik do S3 ustawiając uprawienia publiczne. Jeżeli macie jakiś wątpliwości odsyłam do poprzedniego wpisu: AWS: S3
  3. Konfigurujemy dystrybucje plików zgodnie z poniższymi krokami:
    • Przechodzimy pod adres https://aws.amazon.com/cloudfront lub korzystamy z wyszukiwarki usług.
    • Klikamy przycisk Create Distribution a następnie Get Started.
    • Dokonujemy konfiugracji wybierając z listy rozwijalnej ‘kubełek’ S3, który utworzyliśmy w jednym z poprzednich kroków. Pozostałe pola pozostawiamy domyślne: AWS: CloudFront
    • Klikamy przycisk Create Distribution znajdujący się u dołu ekranu. Czas wdrożenia usługi może zająć do 25 minut. Związane jest to konfiguracją dostarczania treści za pośrednictwem sieci o małych opóźnieniach i wysokiej wydajności lokalizacji brzegowych.
    • Przed przejściem do kolejnego kroku oczekujemy na zmianę statusu na Deployed: AWS: CloudFront

Testowanie usługi

Po opublikowaniu konfiguracji dystrybucji, CloudFront zna lokalizację serwera S3 a użytkownik zna nazwę domeny powiązanej z dystrybucją. Możemy jednak utworzyć link do zawartości S3 o tej nazwie domeny i zlecić CloudFront jej obsługę – podejście takie pozwala zaoszczędzić sporo czasu.

Wykonajmy poniższe kroki:

  1. Kopiujemy poniższy kod HTML do nowego pliku i wklejamy nazwę domeny, którą CloudFront przypisał do danej dystrybucji. W miejsce nazwa-obiektu wklejamy nazwę utworzonego ‘kubełka’ S3.
    <html>
    <head>
        Testujemy CloudFront
    </head>
    <body>
        <p>Przykładowe zdjęcie</p>
        <p>
        <img src="http://nazwa-obiektu.cloudfront.net/autombili-6.jpg" alt="test image" />
    </body>
    </html>
    
  2. Zapisujemy pliczek z rozszerzeniem *.html
  3. Otwieramy stronę w przeglądarce i sprawdzamy czy linki działają poprawnie: AWS: CloudFront

Jeżeli napotkacie jakieś problemy...prawdopodobnie będą związane z uprawnieniami do S3 oraz poszczególnych obiektów. To co robimy jest oczywiście niezalecane ponieważ pozwalamy na cały ruch z sieci. Sprawdźcie czy dostajecie Access Denied - jeżeli tak przejdźcie do zakładki Permission i sprawdzcie jakie nałożyliście ograniczenia.

Jeżeli w momencie czytania tego artykułu spróbujecie dostać się do powyższego pliku zobaczycie poniższy ekran ponieważ zablokowałem dostęp: AWS: CloudFront