Skip to content

Latest commit

 

History

History
257 lines (173 loc) · 13.3 KB

README.md

File metadata and controls

257 lines (173 loc) · 13.3 KB

Modul_346_AWS

Modul 346 von Gibb

Dokumentation Modul 346

EC2 Instanz erstellen mit AWS (GUI)

Wenn wir uns eingeloggt haben, geben wir in der Suchleiste oben „EC2“ ein und wählen den ersten Service aus. image

Dort im Menü angekommen, klicken wir in der bitte des Bildschirms auf „Instance Starten“. image

Im Feld „Name“, kann man seinem eigenen Namen auswählen. Danach kann man weiter unten die Distribution der Instanz auswählen und auch wie gross sie sein soll. Dort haben wir folgende Einstellungen ausgewählt: image

image

Nun haben wir das OS und den Typ der Instanz gewählt. Nun wollen wir beim Nächsten Schritt noch ein SSH Key hinzufügen. Wir haben vorhin schon einen für das Projekt erstellt und haben den dann dort einfach ausgewählt. Es sind .ppk Schlüsselpaare, damit ich mich via Putty drauf verbinden kann.

image

Nun müssen wir noch das VPC, also das Netzwerk, in dem die Instanz ist, auswählen. Dies haben wir auch schon erstellt und so also nur noch ausgewählt. image

Danach haben wir alles angegeben und können nun die Instanz starten. image

Nun müssen wir noch kurz warten, da die Instanz noch am Hochfahren ist. Sobald sie bereit ist steht dort „Läuft“ so kann man sich dann auch mit dem SSH drauf verbinden.
image

Wenn man sich Via SSH verbinden will, braucht man die Public IP Adresse von der Instanz.

Instanz erstellen via Terraform

Das Skript befindet sich hier:

Hier Kilcken umdas Skript zu sehen!

Datenbank Erstellen und verbinden Zuerst geben wir oben in der Suchleiste «RDS» ein. Dann wählen wir den ersten Service aus. Nun wählen wir jetzt «Create Database» und wählen «Easy create» aus. image

In den Konfigurationen wählen wir «MySQL» aus und wählen für den Typen der Datenbank «Free tier» aus. image

Nun als nächstes können wir auch noch den «Identifier» für die Datenbank angeben. So wie auch den Benutzer für die Datenbank und das Passwort. Danach kann man direkt eine Verbindung zu einer EC2 Instanz aufbauen. Wenn man bereits eine EC2 Instanz hat, kann man sie direkt auswählen. image

Nun können wir die Datenbank erstellen. Dies kann auch ein Weilchen dauern. Diese Informationen sind für uns wichtig:

Nun geben wir folgendes in die Kommandozeile ein von der EC2 Instanz:

mysql -h database-1.cjuioqs2k05y.us-east-1.rds.amazonaws.com -P 3306 -u vmadmin -p

mit -u geben wir den Benutzer an.

Wenn man alle diese Schritte gemacht haben, dann haben wir 2 Linux Instanzen aufgesetzt eine davon wurde mit Terraform erstellt, welche apache installiert hat. Dort haben wir auch eine Webseite, auf die man sich verbinden kann. Die andere Instanz ist mit einer MySQL Datenbank verbunden. Die Datenbank besitzt bereits Tabellen welche jedoch noch keinen Inhalt haben. Ein VPC (Netzwerk) haben wir auch 2, wir sollten im einen VPC auch noch ein Subnetz haben. Wir haben Sicherheits gruppen erstellt, die den Port 80 so wie den Port 22 offen haben, damit wir uns mit HTTP und SSH drauf verbinden können.

Workshop 3 & 4

Ich und Natnael waren mit unseren Projekten schon von Anfang an etwas langsam unterwegs. Da Ich bereits eine HTML Seite Erstellt habe, kamen wir auf die Idee, diese über aws zu hosten. Da es so aber etwas zu einfach gewesen wäre, haben wir noch einige andere Kritereien befolgen, damit wir auch eine Herausforderung hatten. Unsere Kriterien zur Webseite waren:

  • Von einem S3 Buckt aus hosten
  • Eigene Domäne für Webseite
  • SSL Zertifikat so das unsere Webseite als Sicher angezeigt wird.
  • Webseite soll öffentlich zugänglich sein.

Wir haben uns dann ein Wenig darüber informiert, wie wir das machen können und was wir für Services von AWS benötigen. Hier sind die benötigten Services fürs Projekt:

  • S3 (Speicher, der das html speichert)
  • Cloudfront (Sicheres Publizieren der Webseite)
  • Certificate Manager (für das SSL Zertifikat)
  • Route 53 (Traffic von der Domäne zur Cloudfront zu Routen)

Erklärung Cloudfront:

Warum brauchen wir noch Cloudfront für unsere Webseite, wenn wir doch schon einen S3 Bucket haben mit der Webseite? Cloudfront ist dafür da, um Abfragen zu verkürzen (Latenzzeit). Mit CloudFront kann man die Inhaltsbereitstellung der Webinhalte über das Content Delivery Network (CDN) an Edge-Standorten beschleunigen, während man die eigentlichen Dateien in S3-Buckets speichert. CloudFront-Quellen stammen möglicherweise nicht unbedingt aus S3, aber zur einfacheren Visualisierung der S3-Integration mit CloudFront:

image

Anleitung fürs hosten einer Statischen Webseite mit Cloudfront:

1. Regestrieren einer Domäne

Wir haben uns für das Projekt eine Domäne von Hostpoint geholt, damit wir der Webseite selbst eine Domäne geben können.

2. Hosted zone erstellen

Wir brauchen eine "Hosted zone", in der wir DNS Records erstellen und die dann zu einer einzelnen Domäne gehören.

  1. In der Suchleiste suchen nach Route 53.
  2. Dort klicken wir auf Create hosted zone.
  3. Dort geben wir dann unsere Root Domäne an. bei uns: elfenau3006.ch
  4. Dann klicken wir auf Create hosted zone.

3. Ein öffentliches Zertifikat anfordern

Um eine Cloudfront distribution zu erstellen ist ein öffentliches Zertifikat notwendig. Damit wir ein Zertifikat anfordern können, müssen wir folgendes tun

  1. In der Suchleiste suchen wir nach Certificate Manager.
  2. Dort wählen wir Request a certificate aus.
  3. Wir klicken next
  4. Beim "Fully qualified domain name " geben wir unsere Domäne ein, die wir von Hostpoint gekauft haben, also: elfenau3006.ch. Wir fügen noch einen Zertifikatsnamen hinzu und zwar unsere Domäne, jedoch noch mit einem * vordran. Also: *.elfenau3006.ch. Damit fügen wir auch alle Subdomains noch hinzu.
  5. Danach klicken wir auf Anfrage.
  6. Danach können wir unsere Domains sehen, die den Status Pendinghaben. Wir klicken in dem Menü auf "Create records in Route 53" und klicken "Create records". Es sollte nicht zulange gehen, bis unser Zertifikat auf Issued.

4. Hostpoint Nameserver ändern

Damit alles dann aufgelöst wird, müssen wir noch der Domain den Nameserver von AWS zuweisen.

  1. Bei Hostpoint melden wir uns an und gehen auf unsere Domain und klicken auf "edit"S

  2. Nun müssen wir die Daten von der Route 53 Zone dort bei Hostpoint angeben:

    image

    Diese Value/Route traffic to setzen wir so ein:

    image
  3. Dann klicken wir auf "Check Name Servers" dies kann bis zu 24 Stunden dauern.

  4. Wenn es dann den Nameserver angenommen hat, dann ist auf das Zertifikat bereit zur Nutzung.

5. Erstellen eines S3 Buckets fürs Hosten der subdomain

  1. In der Suchleiste suchen wir nach S3.
  2. Auf Create bucket klicken
  3. "Bucket name" setzen wir auf www.elfenau3006.ch
  4. Auf "Create bucket" klicken.

6. Erstellen eines S3 Buckets fürs hosten der root Domain

  1. In der Suchleiste suchen wir nach S3.
  2. Auf Create bucket klicken
  3. "Bucket name" setzen wir auf elfenau3006.ch
  4. Auf "Create bucket" klicken.

7. Html files auf Subdomain Bucket hochladen

  1. In der Suchleiste suchen wir nach S3.
  2. Auf den bucket www.elfenau3006.ch klicken
  3. Klicken auf Upload.
  4. Die Dateien auswählen und auf "Add files" klicken.

8. Root Domain Bucket umleitung einstellen

Unser Ziel ist es der wenn man die Root Domain eingibt: elfenau3006.ch, das man weitergeleitet wird auf www.elfenau3006.ch.

  1. In der Suchleiste suchen wir nach S3.
  2. Wähle den bucket aus mit der root domain. Bei uns war es: elfenau3006.ch
  3. Bei Static website hosting "edit" auswählen.
  4. auf "Enable setzen".
  5. Dort dann die Subdomain angeben. Bei uns: www.elfenau3006.ch.
  6. HTTPS als Protokol auswählen.
  7. Einstellungen Speichern.
  8. Den Endpoint merken.

9. Cloudfront Distribution für Subdomain erstellen

Damit das öffnen der Webseite schneller geht können wir eine Cloudfront erstellen.

  1. In der Suchleiste nach Cloudfront suchen.
  2. "Create Distribution" auswählen.
  3. Unter "Origin wählen wir bei "Origin domain" unsere Subdomain.
  4. Origin access --> Legacy access identities
  5. Wir erstellen eine neue OAI und wählen sie aus.
  6. Bucket police auf "Yes, update the bucket policy"
  7. Redirect HTTP to HTTPS auswählen.
  8. "Web Application Firewall (WAF) ausschalten
  9. Wir wählen "Add Item" unt geben dort dann unsere Subdomain ein: www.elfenau3006.ch
  10. Wir wählen dann als nächstes unser SSL Certifikat aus
  11. Bei Default root object wählen wir unsere HTML seite aus, damit wenn man unsere Seite aufruft, dass dann nunsere HTML seite angezeigt wird.
  12. Danach auf Create Distribution klicken.

10. Cloudfront Distribution für root domain erstellen

Das gleiche machen wir jetzt noch mit der root domain. Wenn man dann dort zugreift wird man auf den anderen Bucket witergelietet.

  1. In der Suchleiste nach Cloudfront suchen.
  2. "Create Distribution" auswählen.
  3. Unter "Origin wählen wir bei "Origin domain" unsere root domain.
  4. Origin access --> Legacy access identities
  5. Wir erstellen eine neue OAI und wählen sie aus.
  6. Bucket police auf "Yes, update the bucket policy"
  7. Redirect HTTP to HTTPS auswählen.
  8. "Web Application Firewall (WAF) ausschalten
  9. Wir wählen "Add Item" unt geben dort dann unsere Subdomain ein: elfenau3006.ch
  10. Wir wählen dann als nächstes unser SSL Certifikat aus
  11. Danach auf Create Distribution klicken.

11. DNS Traffic von Domain zu CLoudfront routen.

Wir verfügen jetzt über eine einseitige Website in unserem S3-Bucket, die eine CloudFront Verteilung verwendet. Um den Internetdatenverkehr für unsere Domäne an unsere CloudFront-Verteileung weiterzuleiten müssen wir die Folgenden schirtte durchführen:

  1. In der Suchleiste Route 53 eingeben.
  2. "Hostet zones" auswählen.
  3. In der Liste, den Namen von unserer Domäne auswählen.
  4. Create record auswählen.
  5. "Simmple routing" auswählen und "next" klicken.
  6. Define simple record auswählen.
  7. "Record name" www schreiben
  8. Record type wählen wir A - Routes traffic to an IPv4 address and some AWS resources.
  9. In "Value/Route traffic to" wählen wir Alias to Cloudfront distribution.
  10. Danach wählen wir die Distribution aus die uns angezeigt wird.
  11. Dannach können wir auf Define simple record.

Wir haben jetzt eingestelltl, das es den Datenverkehr zu unserer Webseite Routen soll. Als nächstes wollen wir einen Alias zu unserer root domain hinzufügen. Somit wir führt es dann zum S3 Bucket, der den Datenverkehr nach www.elfenau3006.ch leitet.

  1. Unter "Configure records" wählen wir "Define simple record aus.
  2. "Record name" lassen wir so wie er ist.
  3. Record type wählen wir A - Routes traffic to an IPv4 address and some AWS resources.
  4. In "Value/Route traffic to" wählen wir Alias to Cloudfront distribution.
  5. Wir wählen wieder die Distribution aus die angezeigt wird.
  6. Dannach können wir auf Define simple record.
  7. Nun wählen wir noch Create records

12. Webseite testen

Um zu schauen, ob alles funktioniert, geben wir die Domain ein:

www.elfenau3006.ch

Es sollte uns nun die Webseite anzeigen, die wir auf dem S3 Bucket hochgeladen haben. Wen wir nun auch noch die root Domain eingeben:

elfenau3006.ch

dann sollte es uns weiterleiten auf www.elfenau3006.ch und so auch die Webseite anzeigen.

Informationen

Konsten der Services

Unsere Services:

Services
S3
Cloudfront
Certificate Manager
Route 53

Von diesen 4 Services ist der teuerste "Route 53"

Er kostet uns rund 1.01$ Pro Monat. Die anderen Services kosten uns alle weniger als 0.10$. Also gesamt haft kostet uns das ganze etwa 1.31$ Den Monat.