Eigene Website in der AWS Cloud hosten: Tutorial für Anfänger

2 Kommentare

Es gibt weltweit sagenhafte 1,630,322,579 Webseiten, Tendenz steigend. Ob ein Consultant, Unternehmer oder kleine Startups, alle müssen de facto ihre Internetpräsenz maximieren, um neue Kunden zu gewinnen. Eine Webseite zu haben oder zu kaufen ist das eine, diese performant und kosteneffizient zu betreiben das andere. In diesem Tutorial möchte ich Ihnen zeigen, wie man eine eigene Website, auch ohne hohe IT-Affinität, skalierbar in der Cloud betreiben kann. Anschließend können noch E-Mail-Postfächer mit derselben Domain angelegt werden.

Wie erkenne ich, ob dieses Tutorial für mich brauchbar oder ungeeignet ist? In folgenden Fällen lohnt es sich für Sie weiterzulesen:

  • Ich möchte ein wenig experimentieren und meine HTML-Seite veröffentlichen
  • Ich möchte meinen eigenen Server im Keller ablösen, weil dieser einfach zu teuer und langsam ist
  • Ich habe für mich eine professionelle HTML5-Webseite erstellen lassen und bin auf der Suche nach einer Hosting-Möglichkeit
  • Ich will ein kleines Startup gründen; dazu gehört eine eigene Website mit E-Mail-Postfächern. HTML kann ich selbst schnell entwickeln

Gut, dann fangen wir direkt an. Unser Tutorial werden wir mithilfe von Amazon Web Services (AWS), dem bekanntesten Anbieter für Cloud Services, realisieren.

Immer noch dabei? Super! Das Ergebnis wird Sie nicht enttäuschen.

Eigene Website in der AWS Cloud: Vorbereitung

Die ersten Tutorial-Schritte müssen leider manuell ausgeführt werden, danach habe ich spezielle Skripte vorbereitet, welche die nötigsten Ressourcen für das Hosting vollautomatisiert erzeugen.

1.  AWS CLI installieren: Für die Ausführung der Skripte wird lokal ein Softwarepaket von AWS benötigt

Das Installationspaket kann hier heruntergeladen werden:

2.  Projektordner vorbereiten und AWS-Skripte herunterladen

  • Erstellen Sie für das Hosting-Projekt einen Ordner aws-hosting unter C:\temp (ich werde in diesem Blog Beispiele für Windows zeigen, Linux-/Mac-Anwender wissen, wie man das auf dem eigenen Systemen macht).
  • Danach erstellen Sie bitte einen Unterordner website -> C:\temp\aws-hosting\website.
  • Kopieren Sie die HTML-Dateien Ihrer Webseite nach .\aws-hosting\website. Wichtig: AWS benötigt von uns mindestens eine index.html– und am besten noch eine 404.html-Datei (siehe Ordner examples), um ein fehlerfreies Hosting zu realisieren
  • Laden Sie jetzt die ZIP-Datei (link_zu_der_Datei) mit AWS-Skripten herunter und entpacken Sie diese direkt nach „.\aws-hosting\“. Die Ordnerstruktur muss am Ende so aussehen:
    -> .\aws-hosting\
    —-> cloudformation-scripts\
    —-> examples\
    —-> website\
    —-> cf_api_user_rights.txt
    —-> lin_build_hosting_services.sh
    —-> …

Die benötigten Skripte und Dateien stehen jetzt für weitere Schritte bereit.

AWS-Account erstellen

Für den Anfang benötigen wir einen AWS-Account. Dafür gehen Sie bitte auf https://aws.amazon.com/free und klicken Sie auf „Create a Free Account“.
AWS Cloud Account für die eigene Website erstellen

Gehen Sie den Wizard Schritt für Schritt durch und schließen Sie die Anmeldung ab. AWS wird von Ihnen eine Kreditkartennummer verlangen, um die Registrierung vollständig abzuschließen. Wichtiger Hinweis: Es fallen keine Kosten bei AWS an, solange keine Cloud-Ressourcen verbraucht werden! Somit ist der Account selbst kostenlos.

Minimale, aber notwendige Kontosicherheit einrichten

Wir haben bisher einen wichtigen „root“-Benutzer (Hauptbenutzer) angelegt und könnten mit ihm alle weiteren Arbeiten verrichten, aber…. wir müssen nur ein wenig Fantasie haben, um uns vorzustellen, was passiert, wenn jemand in den Besitz der Anmeldedaten des Hauptbenutzers gelangt. Genau dies werden wir verhindern, indem wir zuerst eine Multi-Factor Authentication (MFA) für den Hauptbenutzer und danach einen separaten, aus Berechtigungssicht limitierten, technischen Benutzer einrichten.

MFA für den Hautpbenutzer (Benutzername ist die E-Mail-Adresse) aktivieren

Melden Sie sich mit dem Hauptbenutzer an der AWS-Konsole (https://console.aws.amazon.com/console/home?nc2=h_ct&src=header-signin) an und klicken Sie im oberen rechten Bereich auf Ihren Benutzernamen und dann auf „Security Credentials“.
AWS Cloud MFA AWS-Konsole

Jetzt auf „Manage MFA device“ klicken.
Manage MFA device

In der Auswahlliste einen der Punkte auswählen. Tipp: Beim „Virtual MFA device“ geht es um den bekannten 6-stelligen Two-Factor Key, der z. B. mit dem Google Authenticator oder Authy generiert werden kann. Wizard Schritt für Schritt durchgehen und abschließen.
Abschließen

So, jetzt ist Ihr Hautbenutzer wesentlich besser gegen einen Missbrauch abgesichert. Und trotzdem sollte dieser User in Zukunft nur in Ausnahmesituationen benutzt werden.

Einen API-Benutzer einrichten: Policy

Für die weiteren automatisierten Ausführungen brauchen wir einen sog. AWS-API-Benutzer. Dieser kann quasi per Fernsteuerung AWS-Befehle ausführen und so für das Hosting erforderliche Ressourcen aufbauen. Um uns ein paar unnötige Konfigurationsschritte in der AWS-Menüführung zu ersparen, erstellen wir zuerst ein Berechtigungspaket für diesen neuen Benutzer.

Öffnen Sie die IAM-Service-Oberfläche.
IAM-Oberfläche

Klicken Sie unter „Policies“ auf „Create policy“.
Create policy

Jetzt auf „JSON“ und fügen Sie danach den kompletten Inhalt der Datei .\aws-hosting\ cf_api_user_rights.txt in das Formular ein. Bestätigen Sie mit „Review policy“.
Fill Policy JSON

Anschließend nennen Sie diese Policy -> „cf_editor_rights“ und schließen den Vorgang mit „Create policy“ ab. Die Berechtigungen für den neuen API-Benutzer wurden somit vorbereitet.

Einen API-Benutzer einrichten: Credentials

Jetzt erstellen wir den erforderlichen technischen Benutzer.

Öffnen Sie wieder den IAM Service und klicken Sie auf „Users“-> „Create New Users/Add User“.
Create new user

Schritt 1: Benennen Sie den User als „cf_api_user“ und wählen sie „Programmatic access“ aus. Anschließend: „Next: Permissions“
next permissions

Schritt 2: Wählen Sie „Attach existing policies directly“. Suchen Sie nach „cf_editor_rights“ und setzen Sie Häkchen bei der gefundenen Policy. Dann auf „Next:Tags“
Create new user step 2

Schritt 3: Einfach weiter auf „Next: Review“

Schritt 4: „Create user“

Schritt 5: Unbedingt die Anmeldeinformationen für den neuen Benutzer herunterladen und an einem sicheren Ort speichern.
Hinweis: Für die weiteren Schritte werden die „Access Key ID“ und „Secret Access Key“ benötigt
create new user step 5

Domain erstellen

Das ist ein letzter Schritt, den wir in der AWS Konsole durchführen müssen. Die Domain (z. B. „https://example.de“) kann direkt bei AWS gekauft oder nach AWS migriert werden. Für die Migration schauen Sie sich die offizielle AWS Dokumentation an. In diesem Tutorial werden wir einen Bestellvorgang durchführen.

Dafür öffnen Sie bitte den „Route 53“-Service von AWS
create domain

Danach weiter auf „Registered domains“-> „Register Domain“.
registered domains

Prüfen Sie, ob Ihre Wunsch-Domain frei ist und führen Sie den Bestellvorgang durch. Achtung: Bitte bei der Registrierung eine gültige E-Mail-Adresse eingeben!
create domain

Die weltweite Domain-Registrierung wird von AWS durchgeführt und kann eine oder mehrere Stunden andauern. Wenn im Menüpunkt „Registered Domain“ Ihre Domain erschienen ist, dann ist die Registrierung abgeschlossen und Sie können die weiteren Tutorial-Schritte ausführen.

AWS Hosting-Skript ausführen und die Website aktivieren

Jetzt sorgen wir dafür, dass alle benötigten Ressourcen teilautomatisiert von AWS erstellt werden. In dem extrahierten Verzeichnis .\aws-hosting\ liegen folgende Dateien für den Ablauf:

  • win_build_hosting_services.bat (für Linux: lin_build_hosting_services.sh)
  • win_publish_website_files.bat (für Linux: lin_publish_website_files.sh)
  • [optional] win_create_workmail_directory.bat (für Linux: lin_create_workmail_directory.sh)
  • [optional] win_create_email_account.bat (für Linux: lin_create_email_account.sh)

1.  build_hosting_services-Skript

Führen Sie die Datei win_build_hosting_services.bat (unter Windows) aus. Sie werden aufgefordert, der Reihe nach, folgende Daten einzugeben:

  1. AWS ACCESS KEY ID: Ist die „Access Key ID“ des cf_api_user-Benutzers
  2. AWS SECRET ACCESS KEY: Ist der „Secret Access Key“ des cf_api_user-Benutzers
  3. Domain Name: Ist der Name der neuen, gekauften Domain wie z. B. „example.de“
  4. Überprüfung der Eingaben und Bestätigung mit „y“

Dabei werden im Hintergrund alle notwendigen Hardware- und Software-Ressourcen seitens AWS aufgebaut und bereitgestellt. Der Vorgang kann mehrere Minuten in Anspruch nehmen.

build script

2.  publish_website_files-Skript

Die Webseite und Ressourcen wurden im ersten Schritt eingerichtet. Jetzt geht es darum, die HTML Files samt Content (js/template/css) zu publizieren und mit AWS zu synchronisieren. Dieser Synchronisationsvorgang kann jederzeit angestoßen werden, um neue HTML-Inhalte zu publizieren.
Führen Sie die Datei win_publish_website_files.bat (unter Windows) aus. Sie werden aufgefordert, folgende Daten einzugeben:

  1. AWS ACCESS KEY ID: Ist der „Access Key ID“ des cf_api_user-Benutzers
  2. AWS SECRET ACCESS KEY: Ist der „Secret Access Key“ des cf_api_user-Benutzers

Danach werden die Inhalte des Ordners .\aws-hosting\website nach AWS übertragen und sofort publiziert.

Sie können jetzt Ihre Webseite „https://<ihre domain>“ im Browser öffnen.

3.  [OPTIONAL] create_workmail_directory-Skript

AWS bietet auch eine vollständige Verwaltung der domainspezifischen E-Mail-Adressen an. Die Kosten dafür belaufen sich auf $4 pro E-Mail-Adresse pro Monat. Dafür stehen Ihnen 50 GB Postfachspeicher zur Verfügung.
Möchten Sie eine oder mehrere E-Mail-Adressen für Ihre gekaufte Domain erstellen? Z. B. info@<ihre domain>? Dann können Sie diese zwei optionalen Schritte durchführen.
HINWEIS: Wenn Sie Schritt 3 ausführen und 4 nicht, dann kosten die AWS-Ressourcen ohne Postfach ca. $40 pro Monat! Erst wenn mindestens ein Postfach aktiviert wurde, kostet es dann nur $4 pro Postfach pro Monat.

Um ein Postfach zu erstellen, müssen bei AWS zuerst andere Services und Einstellungen konfiguriert werden. Führen Sie die Datei win_create_workmail_directory.bat unter Windows aus. Sie werden aufgefordert, folgende Daten einzugeben:

  1. AWS ACCESS KEY ID: Ist die „Access Key ID“ des cf_api_user-Benutzers
  2. AWS SECRET ACCESS KEY: Ist der „Secret Access Key“ des cf_api_user-Benutzers

Wenn alles abgeschlossen wurde, dann muss noch ein Vorgang manuell durchgeführt werden (keine Automatisierung zurzeit vorhanden).
Melden Sie sich an der AWS-Web-Konsole mit dem „Root“ Benutzer an (https://console.aws.amazon.com/console/home?nc2=h_ct&src=header-signin).

Wählen Sie die Region „Ireland“ aus.
Region auswählen

Dann den Service „Workmail“.
Workmail

Wählen Sie „Get Started“ und „Standard Setup“.Standard Setup

Wählen Sie „Available Directories“, setzen Sie ein „Alias“ (Bitte <Domain Name> ersetzen ohne Punkte und Sonderzeichen!), um auf die Postfächer über den Browser zuzugreifen und wählen Sie den „Master key“ aus.
Workmail-Dienst

Nach einiger Zeit wird die Bereitstellung des Workmail-Dienstes abgeschlossen.
Workmail active

Jetzt müssen Sie noch Ihre Domain-Adresse mit dem Service Workmail verknüpfen. Dafür klicken Sie auf den erstellten Alias, z. B. „example“…
Workmail Setup: Alias

..und dann auf „Domains“
Workmail Domains

auf „Add Domain
Workmail Add Domain

wählen Sie Ihre erstellte Domain aus und klicken Sie auf „Add Domain„.
Workmail Add Domain

Klicken Sie auf „Configure automatically„.
Workmail Domain Configure automatically

Und noch die automatisierte Erweiterung der DNS-Tabellen seitens AWS mit „Add all records“ bestätigen.
Workmail add all records

So… geschafft… Holen Sie sich einen Kaffee und gehen Sie etwas essen, die Validierung und Bestätigung könnte einige Stunden in Anspruch nehmen. Danach können Sie mit dem Punkt 4 weitermachen und einzelne E-Mail Benutzer anlegen.
Workmail setup

4.  [OPTIONAL] create_workmail_user-Skript

Jetzt können Sie die einzelnen E-Mail-Konten durch die Ausführung des win_create_email_account.bat-Skriptes erstellen. Sie werden aufgefordert, folgende Daten einzugeben:

  1. AWS ACCESS KEY ID: Ist die „Access Key ID“ des cf_api_user-Benutzers
  2. AWS SECRET ACCESS KEY: Ist der „Secret Access Key“ des cf_api_user-Benutzers
  3. E-Mail Name: Name des E-Mail-Kontos ohne <@Ihre-Domain>. Z. B. „support“ oder „max.mustermann“
  4. Display Name: Visuelle Darstellung des Versenders in einem anderen Posteingang. Z. B. E-Mail lautet „kontakt@example.de“ und Ihre Empfänger sehen dann „Kontakt von Example GmBH“

Nachdem das Skript durchgelaufen ist, können Sie sich an der E-Mail Web-Konsole (https://<alias aus Punkt 3->.awsapps.com/mail) anmelden und das Standard-Passwort (AWS@mail:500) ändern.
Warnung: Bitte, bitte, ändern Sie dringend Ihr Passwort!
workmail change password

Ihr neues Postfach können Sie auch bequem in Ihrem Smartphone über Exchange einrichten, dazu schauen Sie sich die Dokumentation unter https://docs.aws.amazon.com/workmail/latest/userguide/mobile-start.html an.
Hinweis: Ihr Postfach wurde in der Region „eu-west-1“ eingerichtet. Server: mobile.mail.eu-west-1.awsapps.com

„The Day After Tomorrow“

Falls sich während der Ausführung oder Konfiguration Fehler einschleichen oder Sie einfach alles in der AWS Cloud löschen möchten, um keine Kosten mehr zu haben, dann führen Sie bitte folgende Schritte aus:

  • „AWS-Console“ (Root-Benutzer) -> Region Irland -> Service WorkMail -> Organization löschen („remove“) -> alles löschen inkl. Directory
    remove organization
  • Dann führen Sie einfach den win_delete_all_ressources.bat unter Windows aus. Aber ACHTUNG! Es wird alles gelöscht, auch die E-Mail-Postfächer samt Inhalt.

 

Nützliche Links: eigene Website in der AWS Cloud

Avatar

Niklas arbeitet seit 2018 als Senior Consultant bei codecentric in Frankfurt. Er hilft unseren Kunden bei der Entwicklung von komplexen Systemlandschaften und Digitalisierung. Aktuell dreht sich bei ihm alles um Cloud, Data und Serverless.

Kommentare

  • Freddy

    25. April 2019 von Freddy

    Nice – was kostet denn das Hosting ohne die EMails?

    • Niklas Reimche

      25. April 2019 von Niklas Reimche

      Das Abrechnungsmodell von AWS ist komplex und einfach gleichzeitig. Einfach, weil man nur für das bezahlt was man nutzt und komplex, weil jeder einzelne Aufruf der unterschiedlicher AWS Dienste berechnet wird.
      Ohne E-Mail Nutzung werden folgende Dienste abgerechnet:
      – CloudFront (Preisliste)
      – Route53 (Preisliste)
      – S3 (Preisliste)

      Meine Erfahrung zeigt, dass bei einer normalen Nutzung (<5000 Seitenaufrufe) man ca. 1 bis 3€ monatlich für AWS bezahlt.
      Info: Für die Domain Bestellung fällt eine einmalige Gebühr, je nach Preis, an

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.