Die AWS-CLI für „EC2“ bietet umfassende Funktionen, um Snapshots von EBS Volumes erstellen, verwalten und konvertieren zu können. Neben Backups aus der EC2-Instanz trägt dies auch zu Erhöhung der Ausfallsicherheit bei.
Der AWS-Dienst Amazon Elastic Block Store (EBS) stellt virtuellen Maschinen Volumes für die persistente Blockspeicherung zur Verfügung. Der Clou dabei: jedes Amazon EBS-Volume wird in seiner Availability Zone (AZ) automatisch repliziert und bietet damit von sich aus bereits einen hohen Schutz bei Ausfall von Komponenten der AWS-Infrastruktur.
EBS-Volumes und Snapshots
EBS-Volumes sind zwar ähnlich wie iSCSI- oder FC-LUNs bei einem SAN im Rechenzentrum über das Netzwerk an die AWS-Cloud (VPC) angebunden, bieten aber eine einheitliche Leistung und trotzdem niedrige Latenz. Zudem lassen sich EBS-Volumes binnen Minuten erweitern oder verkleinern.
Legt der Admin in AWS EC2 eine neue virtuelle Maschine (EC2-Instanz) an, deren Boot-Laufwerk ein EBS-Volume ist, wird das Volume innerhalb der AZ automatisch repliziert. Darüber hinaus kann der Admin selbst einen Snapshot jedes Volumes anlegen. Während EBS-Volumes immer an ihre Availability Zone und damit stets an eine spezifische Instanz explizit gebunden sein können, ist der „Scope“ von Snapshots die Region des Nutzers.
Snapshots in der CLI
Sämtliche Snapshots eines EBS-Volumes findet der Admin in der AWS Management Console stets im EC2-Dashboard im Abschnitt „Elastic Block Store“ unter „Snapshots“. Per AWS CLI lässt sich das Erstellen von Snapshots sehr komfortabel automatisieren. Legt man z. B. auf diese Weise periodisch neue Snapshots an und löscht ebenfalls automatisiert alte Snapshots (um die Kosten im Griff zu halten), verfügt man über eine einfache und effiziente zusätzliche Sicherheitsstrategie im Hinblick auf die Ausfallsicherheit.
Um einem Snapshot anlegen zu können, benötigt man die Volume-ID des betreffenden Volumes der gewünschten Instanz (Intance-ID). Diese lässt sich wie folgt ermitteln. So liefert z. B. …
aws ec2 describe-instances –query
sich wie folgt ermitteln. So liefert z. B. …
aws ec2 describe-instances –query ‚Reservations[*].Instances[*].BlockDeviceMappings[0].Ebs.{VolumeId:VolumeId}‘
… die Volume-IDs des jeweils ersten EBS-Volumes aller Instanzen aller Reservierungen (Reservations[*].Instances[*].BlockDeviceMappings[0]). Alternativ kann man die Volume ID für die gewünschte Instanz und das gewünschte Volume auch in der Management Console nachschauen. Um einen Snapshot anlegen zu können, muss die Instanz gestoppt sein. Dazu benötigen wir die Instanz-ID:
aws ec2 describe-instances –filters ‚Name=tag:Name,Values=Processor‘ –query ‚Reservations[*].Instances[*].InstanceId‘
Das Stoppen der Instanz erfolgt dann mit …
aws ec2 stop-instances –instance-ids <instance-id>
… wobei wir uns in der Abbildung für die zweite der gefundenen Instanzen [1] entscheiden.
Ob das Stoppen erfolgreich war, liefert:
aws ec2 describe-instance-status –instance-id <instance-id>
Nun können wir wie folgt einen Snapshot anlegen:
aws ec2 create-snapshot –volume-id <volume-id>
Ob auch das erfolgreich war, verrät …
aws ec2 describe-snapshots –snapshot-id <snapshot-id>
Danach kann die Instanz neu gestartet werden:
aws ec2 start-instances –instance-ids <instance-id>
Ob das erfolgreich war, verrät wieder …
aws ec2 describe-instance-status –instance-id <instance-id>