EC2-Instanzen automatisch abschalten

Lesezeit
1 Minute
Bis jetzt gelesen

EC2-Instanzen automatisch abschalten

18.11.2018 - 00:00
Veröffentlicht in:
Viele Unternehmen greifen für ihre Testmaschinen auf Amazon EC2 zurück. Allerdings summieren sich bei vielen Tests über die Zeit die Kosten in unerwünschte Höhe. Denn der Rat an die Entwickler, die Testsysteme abends und am Wochenende abzuschalten, findet nicht immer Beachtung. Dieser Vorgang lässt sich mit den geeigneten Mittels aber effizient automatisieren.
Mit AWS Lambda ist es auf einfache Weise möglich, kleine Skripte zu schreiben, zum Beispiel in Python. Damit lassen sich die EC2-Instanzen automatisch abschalten und wieder hochfahren. Dabei können Sie die betroffenen EC2-Instanzen mithilfe von Tags kennzeichnen, um sie für das Skript einfach als Testmaschine zu identifizieren. Anschließend ist es möglich, mit Amazon CloudWatch Events bestimmte Regeln zu konfigurieren, die – ähnlich wie bei Cron-Jobs – zu bestimmten Uhrzeiten oder an bestimmten Tagen aktiv werden und die Lambda-Funktionen aktivieren. Dabei gilt es jedoch, die Unterschiede zwischen Events, Targets und Regeln zu beachten:

Ein Event ist als ein Ereignis in der AWS-Umgebung definiert. AWS-Ressourcen können Events kreieren, wenn sich ihr Zustand ändert. So erzeugt EC2 ein Event, wenn der Zustand einer EC2-Instanz von "pending" auf "running" wechselt, und EC2 Auto Scaling erschafft Events, wenn es Instanzen startet oder beendet. AWS CloudTrail wiederum veröffentlicht Events, wenn Sie API-Aufrufe tätigen. Als Anwender können Sie benutzerdefinierte Ereignisse auf Anwendungsebene generieren und in CloudWatch Events veröffentlichen. Außerdem ist es möglich, geplante Events ("scheduled Events") einzurichten, die dann periodisch generiert werden, ähnlich wie Cron-Jobs auf Linux-Systemen.

Ein Target wiederum empfängt Events. Targets können zum Beispiel EC2-Instanzen, Lambda-Funktionen, Kinesis Streams, Amazon ECS Tasks, Step Functions State Machines, Amazon SNS Topics oder Amazon SQS Queues sein. Targets empfangen Events im JSON-Format. Eine Regel schließlich leitet Events zur Verarbeitung an Targets weiter. Dabei kann eine einzelne Regel zu mehreren Targets führen, die alle parallel zur Verarbeitung kommen. Regeln werden jedoch nicht in einer bestimmten Reihenfolge bearbeitet. Das ermöglicht es zum Beispiel verschiedenen Abteilungen, die für sie interessanten Events zu suchen und zu bearbeiten. Eine Regel kann den an das Target gesendeten JSON anpassen, indem sie nur bestimmte Teile übergibt oder mit einer Konstanten überschreibt.

Um also Testmaschinen automatisiert abzuschalten, definieren Sie zum Beispiel mit CloudWatch Events einen periodisch geplanten Event, der etwa wochentags am Abend nach 20 Uhr erzeugt wird. Über eine Regel können Sie ihn mit einem AWS-Lambda-Skript als Target verbinden, das alle laufenden EC2-Instanzen auflistet, die mit dem Tag "Development" versehen sind, und diese stoppen, um Kosten zu sparen. Auf ähnliche Weise können Sie natürlich auch die Developer-Maschinen morgens automatisch starten oder andere Aufräumarbeiten in der Cloud automatisiert verrichten.

ln

Tags

Ähnliche Beiträge