AWS S3 jako hosting dla statycznej strony

Czasami przychodzi taki moment, że chcielibyśmy wrzucić jakieś informacje do siecie, ale nie mamy ani domeny, ani serwera, co możemy zrobić w takiej sytuacji? Jedną z opcji jest wykorzystanie AWS S3 jako statyczny hosting dla naszej strony www. W tym artykule, pokażę krok po kroku, jak dodać bucket, skonfigurować oraz wgrać na niego naszą statyczną stronę www.

Do wykonania tego zadania, potrzebujemy mieć skonfigurowany AWS CLI na naszym komputerze, ale zakładam, że już masz to zrobione 🙂

Tworzenie bucketu S3

Pierwszą rzeczą jaką musimy zrobić jest utworzenie bucketu S3, robimy to przy pomocy polecenia

aws s3 mb s3://bucketforstaticpage

W odpowiedzi, powinniśmy otrzymać taką zwrotkę

make_bucket: bucketforstaticpage

Dodanie polityki do bucketu

Mamy bucket, niestety póki co jest on prywatny, aby to zmienić, musimy przypisać do niego odpowiednią politykę, która zezwoli na publiczny dostęp do plików, ale tylko do odczytu. W tym celu tworzymy sobie np plik s3-policy.json z poniższym kodem

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::bucketforstaticpage/*"
    }
  ]
}

Teraz musimy przypisać politykę do bucketu, robimy to poleceniem

aws s3api put-bucket-policy --bucket bucketforstaticpage --policy file://s3-policy.json

Taki oto sposobem, mamy utworzony bucket S3 z polityką, zezwalającą na publiczny odczyt plików.

Utworzenie plików oraz upload na S3

Kolejnym krokiem jaki musimy zrobić, jest utworzenie oraz dodanie do bucketu plików index.html jako plik główny naszej strony oraz plik error.html, który powinien pokazać się w przypadku błędu. Będą to proste pliki, tylko do przetestowania działania s3 jako hostingu 🙂 Najpierw utwórzmy sobie katalog na naszą stronę, a następnie utwórzmy w nim potrzebne pliki. Katalog utworzymy przy pomocy poniższego polecenia i przy okazji, zostaniemy od razu do niego przeniesieni

mkdir staticpage && cd staticpage

Poniżej kod plików

index.html

<html>
<head>
    <title>S3 Static WebHosting</title>
</head>
<body>
    <h1>Hello from index.html</h1>
</body>
</html>

error.html

<html>
<head>
    <title>S3 Static WebHosting - Error Page</title>
</head>
<body>
    <h1>Hello from error.html</h1>
</body>
</html>

Jak już mamy pliki z głowy, to wgrajmy jest na nasz bucket, przy pomocy polecenia

aws s3 sync ./ s3://bucketforstaticpage/

Do tego momentu, mamy utworzony bucket, dodaną politykę zezwalającą na publiczny odczyt plików z bucketu oraz wgrane pliki index.html oraz error.html.

Oznaczenie bucketu jako strona statyczna

Jeżeli myślisz, że to już wszystko, to niestety jesteś w błędzie, ponieważ musimy powiedzieć AWS, że ten bucket będzie dla nas statycznym hostingiem, robimy to przy pomocy polecenia

aws s3 website s3://bucketforstaticpage/ --index-document index.html --error-document error.html

Takim oto sposobem, utworzyliśmy sobie hosting pod statyczną stronę html. No dobra, ale skąd pewność, że to działa? Aby przetestować czy faktycznie nasz hosting działa, należy wykorzystać poniższy link i ustawić odpowiednio nazwę bucketu oraz region, w moim wypadku, adres wyglądałby tak

http://bucketforstaticpage.s3-website.eu-central-1.amazonaws.com

Ponieważ nazwa mojego bucketu to bucketforstaticpage, a region to eu-central-1. Po wpisaniu adresu powinniśmy zobaczyć wiadomość z pliku index.html, aby przetestować czy odpali nam się plik error.html, wystarczy do adresu dodać nazwę pliku, który nie istnieje np. check.html i naszym oczom, powinna się ukazać zawartość pliku error.html 🙂

Choć artykuł nie jest mocno zaawansowany, ale mam nadzieję, że komuś się przyda i w przyszłości bez najmniejszego problemu, będzie wiedział jak w szybki sposób utworzyć sobie statyczny hosting 🙂

Related Posts