Amazon Elastic Block Store (EBS) ist ein Dienst, der Speicherplatz für Amazon EC2-Instanzen bereitstellt. EBS ist das, auf dem jeder Volume Ihrer EC2-Instanzen läuft. Wenn Sie sich auf einen Dienst verlassen, um wichtige Infrastruktur auszuführen, ist es klug, sicherzustellen, dass die Daten gesichert sind. In diesem Blog-Beitrag erfahren Sie, wie Sie EC2-Snapshots verwalten und automatisieren können, indem Sie die PowerShell-Skriptsprache verwenden.
Jedes an eine EC2-Instanz angeschlossene EBS-Volume kann über einen EBS-Snapshot gesichert werden. Jeder Snapshot kann auf zwei Arten erstellt werden: als vollständiger oder inkrementeller Snapshot. Nun, technisch gesehen beides, aber… gehen Sie einfach mit mir mit.
Wenn die erste Snapshot-Sicherung für eine EC2-Instanz erstellt wird, wird eine Sicherung des gesamten Volumes erstellt. Bei der Erstellung nachfolgender Snapshots werden nur Daten auf Blockebene gespeichert, die sich seit dem letzten Snapshot geändert haben. Im Gegensatz zu typischen inkrementellen Punkt-in-Zeit-Backups werden bei Snapshots jedoch alle Daten für das Volume wiederhergestellt, wenn ein Snapshot wiederhergestellt wird, sodass es einem vollständigen Backup ähnelt.
Snapshots können asynchron erfolgen, was bedeutet, dass Snapshots parallel im Erstellungsprozess sein können. Wenn ein Snapshot gestartet wird, durchläuft er eine ausstehende Phase, bis alle erforderlichen Blöcke in Amazon S3 kopiert sind, wo alle EBS-Snapshots gespeichert werden.
Verwenden von PowerShell zum Erstellen von AWS EC2-Snapshots
Es gibt verschiedene Möglichkeiten, wie Sie EBS-Snapshots in AWS verwalten können. Sie können die AWS Management Console, die AWS CLI, PowerShell oder die APIs direkt verwenden. In diesem Artikel verwenden wir PowerShell, da das AWSPowerShell-Modul eine ausgezeichnete Unterstützung für das Verwalten von EBS-Snapshots mit PowerShell-Befehlen bietet.
Voraussetzungen
Bevor wir weitermachen, gehe ich davon aus, dass Sie einige Voraussetzungen erfüllen, um das Beste aus diesem Tutorial herauszuholen. Sie benötigen:
- Ein AWS-Konto
- Eine EC2-Instanz mit einem angehängten Volume
- Eine Authentifizierung mit dem Root-Benutzer oder einem IAM-Benutzer mit der Berechtigung CreateSnapshot (arn:aws:ec2:region::snapshot/*)
Wenn Sie alle diese Voraussetzungen erfüllt haben, können wir loslegen!
Vorhandene EC2-Snapshots finden
Eine der ersten Aufgaben besteht darin herauszufinden, ob bereits vorhandene Snapshots existieren. Um das herauszufinden, verwenden wir den Befehl Get-EC2Snapshot
. Dies ist der Befehl, der nach bereits erstellten Snapshots sucht und sie in der PowerShell-Konsole ausgibt.
Sie werden feststellen, dass die AWS EC2-Snapshots, die angezeigt werden, nicht für Ihre EC2-Instanz sind. Dies sind alles Snapshots, die mit Ihnen geteilt wurden und die Sie zur Wiederherstellung auf Ihre EC2-Instanzen verwenden können. Um alle Snapshots zu entdecken, die von Ihren EC2-Instanzen stammen, verwenden Sie den Parameter OwnerId
mit dem Wert self
.
Erstellen eines neuen EBS-Snapshots
Vorausgesetzt, Sie haben bereits eine EC2-Instanz erstellt, können Sie jetzt eine Momentaufnahme erstellen. Sie können neue Momentaufnahmen mit dem Befehl New-EC2Snapshot
erstellen, aber zuerst müssen Sie die Volume-ID für jede Volume sammeln, von der Sie eine Momentaufnahme erstellen möchten. Dazu müssen wir zunächst die EC2-Instanz-ID finden, an die das Volume angehängt ist.
Sobald Sie die EC2-Instanz-ID kennen, müssen Sie diese verwenden, um die Volumes zu finden. Um alle Volumes zu finden, die an die EC2-Instanz angehängt sind, verwenden Sie den Befehl Get-EC2Volume
und filtern Sie die Ausgabe auf die Volumes, deren angehängte Instanz-ID derjenigen entspricht, nach der wir suchen.
Jetzt, da wir die Volumes haben, empfiehlt AWS, die Instanz herunterzufahren oder zumindest das Volume zu demontieren. Wir werden die Instanz herunterfahren.
Jetzt können wir über jedes Volume iterieren und die Volume-ID an den Parameter VolumeId
des Befehls New-EC2Snapshot
übergeben. Sobald das geschieht, wird die Momentaufnahme in den Zustand pending wechseln.
Sie können bestätigen, dass die Momentaufnahme abgeschlossen ist, indem Sie erneut Get-EC2Snapshot
ausführen und überprüfen, ob der Zustand nun abgeschlossen ist.
Tags zuweisen
Wenn Sie viele Momentaufnahmen verwalten müssen, kann es schwierig sein, den Überblick zu behalten. Um Momentaufnahmen zu sortieren und für jede Entdeckung zu kategorisieren, können Sie ihnen auch Tags zuweisen. Tags sind ein allgegenwärtiger Bestandteil von EC2 und können für Ihre EBS-Momentaufnahmen verwendet werden.
Sie können Tags bei der Erstellung der Momentaufnahme oder danach zuweisen. Verwenden Sie zur Zuweisung von Tags bei der Erstellung der Momentaufnahme den Parameter TagSpecification
des Befehls New-EC2Snapshot
.
Beispielsweise möchte ich möglicherweise diesen AWS EC2-Snapshot markieren, den ich gerade vor einer Produktionsänderung gemacht habe. Ich möchte einen Tag mit dem Namen Stage erstellen und ihm den Wert Dev zuweisen. Dazu kann ich ein TagSpecification-Objekt erstellen, einem oder mehreren Tag-Objekten die Tags-Eigenschaft zuweisen und dann den Ressourcentyp definieren, an den dieser Tag angehängt wird.
Nachdem ich das TagSpecification-Objekt erstellt habe, kann ich es an New-EC2Snapshot
übergeben.
Erstellen einer neuen AMI aus Snapshots
Eine weitere coole Funktion von Snapshots ist, dass Sie ein brandneues Image (AMI) aus einem Snapshot erstellen können. Wenn Sie einen Snapshot des Root-Volumes einer nur Linux EC2-Instanz haben, können Sie ganz einfach ein brandneues AMI aus diesem Volumesnapshot erstellen. Angenommen, ich möchte ein neues Image aus dem gerade erstellten Snapshot erstellen. Das kann ich mit dem Befehl New-EC2Image
tun.
I’ll first need to capture the snapshot ID.
Dann kann ich diese ID als Hashtable an den BlockDeviceMapping
-Parameter von New-EC2Image
übergeben.
Entfernen von AWS EC2-Snapshots
Wenn wir mit dem Snapshot fertig sind, können wir ihn jetzt entfernen. Das ist einfach. Leiten Sie einfach die von Get-EC2Snapshot
zurückgegebene Instanz an Remove-EC2Snapshot
weiter. Es kann jedoch zu diesem Fehler kommen, wenn ein AMI verwendet wird.
In diesem Fall ist das AMI registriert und Sie müssen es zuerst mit dem Befehl Unregister-EC2Image
abmelden.
Zusammenfassung
PowerShell ermöglicht es Ihnen, alle Aspekte von EBS-Snapshots zu verwalten. Wenn die hier behandelten Szenarien nicht Ihren Anforderungen entsprechen, empfehle ich Ihnen, einen Blick auf alle verfügbaren EC2-Snapshot-Befehle zu werfen, indem Sie Get-Command -Noun *ec2snapshot* -Module AWSPowerShell
ausführen. Das gibt Ihnen eine gute Vorstellung davon, was mit PowerShell und EC2 (EBS)-Snapshots möglich ist.