Search
  • Ivo Fibiger

Tvorba Amazon CloudFront distribuce s vlastní doménou, S3 a SSL zabezpečením

V tomto článku se naučíte:

Nejdříve se podívejme, co budeme dneska vlastně dělat.



Na S3 bucketu rozběhneme statický web, který propojíme s vlastní doménou pomocí Route 53. Dále si vytočíme CloudFront distribuci, kterou propojíme s vlastní doménou a tedy i S3 webem pomocí Route 53. Nakonec celé spojení zabezpečíme pomocí SSL a využijeme k tomu AWS Certificate Manager.


Jak jsem již zmínil, abyste mohli celou orchestraci rozchodit, budete potřebovat vlastní doménu. Tu lze získat na internetu zdarma např. na Freenom.


Náš postup bude vypadat takto:

  1. Založíme S3 bucket.

  2. Vytvoříme záznamy v Route 53.

  3. Vytvoříme CloudFront distribuci.

  4. Vytvoříme SSL Certifikát.

  5. Propojíme CloudFront distribuci, S3, vlastní doménu a SSL certifikát pomocí Route 53.


1. Amazon S3 Bucket

V této sekci se podíváme na to, jak založit S3 bucket. Poté ho otevřeme vnějšímu světu, aby se na náš statický web mohli dostat i lidé z internetu. Dále ho nastavíme pro hosting statického webu a velice jednoduchý web tam nahrajeme. A nakonec vyzkoušíme, že vše funguje a že se na náš web může dostat každý.


Založení S3 bucketu:

  • Otevřete si AWS konzoli a přejděte na správu služby S3 (např. pomocí pole vyhledat)

  • Klikněte 'Create Bucket'. Zvolte globálně jedinečné jméno bucketu.

  • Ujistěte se, že není zakliklé 'Block all public access', protože chceme provozovat web dostupný i z venku

  • To je vše, klikněte na 'Create bucket'.

A teď otevřeme bucket veřejnosti:

  • Otevřete v AWS konzoli bucket, který jste právě vytvořili. Měl by být prázdný.

  • Klikněte Properties a poté Static website hosting.

  • Zvolte "Use this bucket to host a website".

  • Zvolte váš index a error dokument. Toto jsou stránky, které uživatel uvidí jakožto "domácí stránku" a chybovou stránku. Do obou polí můžete vyplnit "index.html".



  • Klikněte "Save".

Nakonec musíme upravit Bucket Policies.

  • Otevřete kartu Permissions a poté klikněte Bucket Policy.

  • Zde je potřeba vyplnit policy, která otevře bucket pro přístup veřejnosti. Doporučuji použít oficiální AWS generátor policies, který naleznete na https://awspolicygen.s3.amazonaws.com/policygen.html.

  • V generátoru vyberte, že se jedná o S3 Bucket Policy, a jako Principal zvolte "*" (hvězdičku, bez uvozovek). Akce budou "GetObject".

  • Vyplňte Vaše ARN, které naleznete v AWS konzoli v horní části stránky, kde jste se zrovna chystali vyplnit Bucket Policy. ARN S3 bucketu má vždy formát arn:aws:s3:::<jméno_bucketu >.


  • Důležité: poté, co do generátoru nakopírujete ARN, k němu na konci připojte lomítko a hvězdičku. ARN by tedy mohlo vypadat např. takto arn:aws:s3:::stormit-demos/* (jméno mého bucketu je stormit-demos). Tím, že jsme nakonec přidali lomítko a hvězdičku, umožňujeme přístup ke všem objektům uvnitř bucketu. Klikněte Add Statement.

  • A teď už zbývá pouze kliknout Generate policy. Celou vygenerovanou policy zkopírujte do S3 AWS konzole.


Tím máme nastavení S3 bucketu hotové. Když ho otevřete, měli byste nahoře pod Bucket Policy vidět zelenou bublinu s nápisem Public. Pokud ji vidíte, je vše v pořádku a můžeme pokračovat dále. Pokud ne, zkuste si projít jednotlivé kroky ještě jednou, nebo si prohlédněte naše Hands-On video.


Teď do bucketu nahrajeme jednoduchý web a vyzkoušíme, že k němu lze přistupovat i internetu.

  • Níže si stáhněte si připravený statický web. Pokud chcete, můžete využít i jakýkoliv jiný web, jen pamatujte, že v takovém případě se mohou další kroky trošku lišit.

demo
.zip
ZIP • 4.48MB
  • Ve AWS konzoli si otevřete Váš S3 Bucket a klikněte Upload, poté Add files a nahrajte Váš index.html. Klikněte Upload.

  • Klikněte Create folder a vytvořte složku s názvem "images" (obrázky). Nepoužívejte žádné šifrování (výchozí nastavení).

  • Otevřete vytvořenou složku a nahrajte do ní GIF, který naleznete mezi soubory webu. Postup je stejný, jako když jste nahrávali index.html.

  • Až budou oba soubory nahrané, klikněte na index.html uvnitř S3 bucketu a v pravé části obrazovky najděte Object URL. Klikněte na něj. Měli byste vidět GIF štěněte, který si hraje s polštářem (za předpokladu, že jste použili přiložené soubory).



Výborně - právě jste vytvořili S3 bucket, nahráli na něj web a umožnili veřejný přístup. Teď se podíváme na Route 53.


2. Amazon Route 53 (poprvé)

  • V AWS konzoli vyhledejte mezi službami Route 53.

  • V sekci 'DNS Management' klikněte na Create hosted zone.

  • Do pole 'Domain name' vložte jméno vaší domény. Doménu můžete získat zdarma např. na Freenom (https://www.freenom.com/).

  • 'Type' nastavte na Public hosted zone.

  • Klikněte na Create hosted zone.

  • Nyní potřebujeme propojit naší doménu se záznamy v Route 53. Označte řádek, kde sloupeček 'Type' má hodnotu 'NS', a klikněte Edit.



  • Hodnoty, které jsou vyznačeny na obrázku, si poznamenejte. Jedná se o nameservers, které musíte propojit s Vaší doménou. V podstatě tím říkáme "pokud se někdo pokusí připojit na naší doménu, přesměruj je na jeden z těchto namesevers".

  • Otevřete si novou kartu ve Vašem prohlížeči a jděte na stránku nastavení Vaší domény, v mém případě freenom.com. Přihlašte se, otevřete si seznam vašich domén a klikněte Manage domain. Na kartě Management Tools klikněte Nameservers. Měli byste vidět 5 textových polí s názvy Nameserver 1-5.

  • Překlikněte zpět na Route 53 a zkopírujte adresy nameserverů jednu podruhé do nastavení domény.



  • Důležité: zkopírujte URL adresy bez tečky na konci. Takže např. 'ns-1766.awsdns-28.co.uk.' byste vložili jako 'ns-1766.awsdns-28.co.uk'.



  • Až vše zkopírujete, potvrďte pomoci tlačítka Change Nameservers.

  • Tím jsme pro tuto chvíli s Route 53 hotoví. Později budeme nastavení ještě muset malinko upravit.

Teď se podíváme na SSL certifikát a AWS Certificate Manager.


3. AWS Certificate Manager

  • V AWS konzoli vyhledejte ve službách AWS Certificate Managera a klikněte na odkaz.

  • Klikněte Get started v sekci Provision certificates.

  • Klikněte Request a public certificate (Zažádat o veřejný certifikát) a pak Request a certificate.

  • Na další obrazovce uvidíte, že status certifikátu je 'Pending validation'. Aby nám certifikát byl zvalidován, musíme ho propojit s našimi záznamy v Route 53. Klikněte na malou šipčičku a rozbalte řádek. Pak klikněte na další malou šipčičku a rozbalte vnořený řádek.



  • Rozbalením dvou šipek se Vám objeví tlačítko Create record in Route 53 (Vytvořit záznam v Route 53). Klikněte na něj a poté dejte Create.

  • S Certificate Managerem máme hotovo. Vydání certifikátu může trvat až 30 minut, takže se obrňte trpělivostí.

Až nám bude přiřazen certifikát, tak se můžeme podívat na poslední část naší architektury, a tou je CloudFront.


4. Amazon CloudFront distribuce

V této sekci si vytočíme CloudFront distribuci a pak ji provážeme s naším S3 bucketem. Když se někdo pokusí připojit na naší CloudFront distribuci, bude se ve skutečnosti připojovat na S3, ale přitom bude plně využívat výhod a rychlosti CloudFront.

  • V AWS konzoli vyhledejte mezi službami CloudFront a klikněte na odkaz.

  • Klikněte na Create Distribution. Naše distribuce bude určena pro náš web, takže na další stránce klikněte na Get Started v sekci Web.

  • Měli byste vidět stránku s názvem Origin settings, na které je mnoho polí a různých nastavení.

  • Abychom korektně vyplnili pole Origin Domain Name, tak se musíme podívat zpět do S3 management konzole. Otevřete si novou kartu (ale stránku s CloudFront nastavením si nechte otevřenou), a přejděte do S3 Management konzole. Klikněte na Váš název bucketu, pak Properties a nakonec Static website hosting. Zkopírujte si tu část Endpoint URL, která je zvýrazněná na obrázku:



  • Překlikněte zpět na stránku s nastavením CloudFront a vložte zkopírované URL do pole Origin Domain Name. Všimněte si, že AWS Vám rovnou nabízí volbu S3, ale ta by nevedla přímo na náš web.

  • Klikněte do pole Origin ID - mělo by se automaticky vyplnit.

  • V sekci Viewer Protocol Policy vyberte možnost Redirect HTPP to HTTPS.

  • Nyní sjeďte na stránce úplně dolů až na pole Alternate Domain Names (CNAMEs). Vyplňte do něj název Vaší domény bez http(s), takže např. priklad_domeny.cz

  • V sekci SSL Certificate vyberte možnost Custom SSL Certificate (priklad_domeny.cz). Klikněte o pole níž a měl by Vám být nabídnut certifikát, který jsme vytvořili o pár kroků dřív. Vyberte ho.



  • A to je vše. Klikněte na Create Distribution ve spodní části stránky.

  • Vytočení distribuce trvá zhruba 10-20 minut. Jakmile bude připravená (Status = Deployed, State = Enabled), můžete ji otestovat tak, že nahrajete URL Domain Name do Vašeho prohlížeče. Měli byste vidět web, který jste nahráli do S3.


Máme skoro hotovo, už nám zbývá poslední krok. Když teď zkusíte zadat do prohlížeče URL Vaší domény, tak nebude fungovat. To se děje proto, že jsme nenastavili cestu v Route 53, aby naše doména vedla na CloudFront distribuci.


5. Route 53 (podruhé)

  • V AWS konzoli zadejte do vyhledávání služeb Route 53 a klikněte na odkaz. Klikněte na název vaší Hosted zone.

  • Klikněte na Create record. Vyberte Simple routing, klikněte na Next a poté na Define record.

  • Klikněte rozbalovcí menu s názvem Value/Route traffic to a vyberte Alias to Cloudfront Distribution.

  • Vyberte distribuci, kterou jsme vytvořili v předešlých krocích.


  • Všimněte si, že jediný dostupný region je US East (N. Virginia)[us-east-1]. To se děje proto, že jsme si vytvořili certifikát v AWS Certificate Manageru a ten je dostupný pouze v regionu US East 1.

  • Klikněte Define Simple Record. Poté klikněte Create records.


A to je vše. Teď už jen musíte pár minut počkat, než se propíší změny v Route 53 a nahraje se tam Vaše doménové jméno. Pokud vše proběhlo správně, měli byste po zadání URL Vaší domény do prohlížeče vidět web, který jste nahráli do S3.


Pokud ne, tak si prosím projděte kroky ještě jednou a nebo se mrkněte na náš video návod.


Mějte se pěkně a příjemné cloudování!