:bookmark: Datensicherung ist ein entscheidender Aspekt in jeder modernen IT-Infrastruktur. Insbesondere in der Cloud, wo Datenverlust oder -beschädigung katastrophale Folgen haben kann. Amazon Web Services (AWS) bietet eine Vielzahl von Tools und Diensten, um sicherzustellen, dass Ihre Daten effektiv geschützt und wiederhergestellt werden können. Zwei grundlegende Konzepte in diesem Zusammenhang sind "Snapshots" und "Backups".
- **Snapshot:** Ein Snapshot ist eine Momentaufnahme eines EBS-Volumes. Es speichert den Zustand zu einem bestimmten Zeitpunkt und ist effizient, da es inkrementell Änderungen speichert.
- **Backup:** Ein Backup ist eine umfassendere Sicherung von AWS-Ressourcen wie EC2-Instanzen, Datenbanken und S3-Buckets. Hierbei können spezifische Einstellungen und Konfigurationen berücksichtigt werden. AWS Backup ist ein zentralisierter Dienst zur Verwaltung dieser Backups.
In diesem Lab erstellen Sie ein Amazon EBS-Volume, hängen dieses an eine Instance und legen ein Dateisystem auf dem Volume an (diesmal Linux und nicht Windows). Danach erstellen Sie aus dem Volume ein Snapshot. Dies kann als Backup oder auch als Image für weitere Instanzen genutzt werden.
Für den ersten Challenge der Kompetenz **KN07** wechseln Sie ins siebte Modul **Module 7 - Storage**. Hier finden Sie die praktische Übung **Lab 4 - Working with EBS**. Diese ist Schritt für Schritt geleitet.
- Sie können ein neues Volume erstellen und darauf ein ext3-Filesystem für eine Linux Distribution erzeugen (im KN04 haben sie bereits ein NTFS für Windows erzeugt)
- Sie können das Volume persistent an eine EC2-Instanz mpunten (Wird bei Reboot eingehängt).
- Sie können ein EBS Snapshot des Volumes erzeugen (Point-in-time Backup).
- Sie löschen das vorher erstelle file auf dem Volume und beweisen anschliessend, dass sie dieses file mit einem Restore des Snapshots wiederherstellen können.
Dieser Challenge scheint auf den ersten Blick fast gleich wie der letzte. Wie bereits öfters durchgeführt, werden Sie in einer **Availability Zone** eine EC2-Instanz launchen mit einem Webserver. Den HTML-Code beziehen Sie von einem S3-Bucket. Wenn die Installation abgeschlossen ist und der Webserver funktioniert, werden Sie daraus ein **Snapshot / neues Image** erzeugen. Dieses **neue Image** beinhaltet also bereits die gesamte Applikation (in diesem Fall den Webserver inkl. index.html). Da **Snapshots** innerhalb einer **Region** in einem Object-Store **S3** abgelegt wird, kann das daraus erzeuge Image in einer **anderen Availability Zone** wieder gestartet werden. Diesmal dauert es bedeutend weniger lang, bis die EC2-Instanz läuft und auf den Webserver zugegriffen werden kann. Das **neue Image** beinhaltet bereits die gesamte Applikation. Das heisst also auch, dass unter User-data **kein** IaC-Script mehr eingetragen werden muss.
Zuerst muss ein sogenanntes **IAM Instance Profile** erstellt werden. Beim übernächsten Schritt wird dieses Profil der Instanz zugeteilt. Das **Instance Profile** bestimmt, **welche Berechtigungen** die Instanz erhält.
4. Klicken Sie auf `upload` und legen Sie darin das file [ami-test.txt](https://gitlab.com/ser-cal/m346-scripts/-/blob/main/KN07/ami-test.txt) ab. Es handelt sich um HTML-Content. Im nächsten Schritt wird bei der Installation des Webservers darauf zugreifen.
6. Wählen Sie die Instanztyp **t2.micro** (free tier eligible).
7. Bei **Key pair** Wählen Sie `Proceed without a key pair`_(es wird **kein** Key pair benötigt bei diesem Challenge)_
8. Unter **Network settings** wählen Sie eine bestehende Security Group aus, welche bereits eine **outbound rule** für **Port 80 (HTTP)** geöffnet hat, damit Sie später auf den Webserver zugreifen können.
9. Bei **Advanced details** muss unter `IAM Instance profile` das oben (oder früher) erstellte Profil **S3ReadOnly** ausgewählt werden. Damit stellen Sie sicher, dass die Instanz bei der Installation auf den S3-Bucket zugreifen kann, wo das HTML Indexfile abgelegt ist.
10. Ebenfalls bei **Advanced details** unter **user data** wird folgender Code eingetragen: :warning: **Hinweis:** Achten Sie darauf, dass sie in der letzten Zeile den Platzhalter `<Name S3-Bucket>` noch mit dem Namen **Ihres** S3-Buckets ersetzen.