Amazon CloudFront is a web service that speeds up distribution of your static and dynamic web content, such as .html, .css, .js, and image files, to your users. CloudFront delivers your content through a worldwide network of data centers called edge locations. When a user requests content that you're serving with CloudFront, the user is routed to the edge location that provides the lowest latency (time delay), so that content is delivered with the best possible performance. If the content is already in the edge location with the lowest latency, CloudFront delivers it immediately. If the content is not in that edge location, CloudFront retrieves it from an Amazon S3 bucket or an HTTP server (for example, a web server) that you have identified as the source for the definitive version of your content.
What is Amazon CloudFront?
Tworząc dystrybucję konfigurujemy skąd mają pochodzić treści, pod jaką domeną mają być udostępniane oraz w jaki sposób cloudfront ma je przetwarzać.
Origin settings
Origin Path
Restrict Bucket Access
: Yes
- zapewnia dostęp do s3 wyłącznie dla zdefiniowanej roliOrigin Access Identity
: Create a New Identity
- zostanie utworzona nowa rola z odpowiednimi uprawnieniamiGrant Read Permission on Bucket
: Yes
- uprawnienia bucketa będą odpowiednio zaktualizować aby umożliwić odczyt wskazanej roliDefault Cache Behavior Settings
Compress Objects Automatically
: Yes
Distribution Settings
Default Root Object
: index.html
Na liście dystrybucji likamy w link z domeną xxxxxxxx.cloudfront.net
W odpowiedzi powinna pojawić się wcześniej wgrana strona index.html
UWAGA PUŁAPKA: Czasem zamiast dostać właściwą stronę z naszym indeks.html dostajemy komunikat o braku uprawnień. Zazwyczaj błąd pojawia się jeśli w tym samym czasie tworzymy bucket S3 oraz konfigurację CloudFront. Z opisów wynika że błąd spowodowany jest czasem potrzebnym na rozdystrybuowanie domeny bucketa S3 w ramach AWS-owych DNS. Jeśli problem wystąpi trzeba chwilę odczekać (30min do 2h) po czym wejść w konfigurację dustrybucji, przejść do zakładki “Invalidations” i wykonać inwalidację zasobów CloudFront wg wzorca /* po czym ponownie wejść na stronę.
Od 2004 r. pracuję w branży IT. Przez większość tego czasu zajmowałem się projektowaniem i tworzeniem różnego rodzaju aplikacji internetowych.