Blog
So minimieren Sie versehentliche Cloud-Kosten in Ihrem AWS-Konto

Letzten Monat habe ich mit einem neuen Auftrag begonnen. Während ich darauf wartete, Zugang zur Cloud-Umgebung des Kunden zu erhalten, begann ich mit der Arbeit in meinem eigenen AWS-Spielplatzkonto. Ich machte gute Fortschritte und konnte nach ein paar Tagen umschalten. Da ich vergessen hatte, die Infrastruktur zu zerstören, hatte ich am Ende eine Rechnung über 1700 Dollar. Damit das nicht noch einmal passiert, zerstöre ich jeden Tag um 23:00 Uhr UTC automatisch alle Ressourcen in meinem AWS-Konto. Die von mir erstellte Funktion ist extrem leistungsfähig und extrem gefährlich. Mit einem einzigen Befehl können Sie ganze Produktionsumgebungen auslöschen. Die Verwendung dieses Dienstprogramms erfolgt also auf eigene Gefahr!!!
Was befindet sich auf dem Stapel?
Im Kern führt es das Dienstprogramm aws-nuke aus, das alle Ressourcen in Ihrem AWS-Konto vernichtet. Das Dienstprogramm ist in einem CloudFormation-Stack mit den folgenden Komponenten verpackt:
Ein CloudWatch-Ereignis veranlasst das CodeBuild-Projekt, aws-nuke auszuführen. aws-nuke vernichtet alle Ressourcen in Ihrem AWS-Konto. Die Konfiguration wird in einem entsprechenden Codecommit-Repository gespeichert. Ich verwende ein aws-nuke.yaml stellt sicher, dass es sich nicht selbst löscht.
Wie installieren Sie es?
Um den automatischen Destruktor für AWS-Konten zu installieren, geben Sie ein:
$ git clone https://github.com/binxio/aws-account-destroyer.git
$ cd aws-account-destroyer
$ bin/deploy ENABLED
WARNING: you are about to install the AWS nuke in account 123456789012/mvanholsteijn
it will destroy the content of entire 123456789012/mvanholsteijn every day at 23:00, continue yes/no? yes
Waiting for changeset to be created..
Waiting for stack create/update to complete
Die Atombombe ist jetzt in Position, aber noch nicht scharf.
Wie machen Sie sie scharf?
Sie aktivieren es, indem Sie die aws-nuke-Konfiguration in das codecommit-Repository verschieben. Wenn Sie aws-nuke über die Befehlszeile verwenden, gibt es normalerweise einige Sicherheitsvorkehrungen, um eine versehentliche Zerstörung von Konten zu vermeiden. Es löscht keine Konten ohne Alias, es zeigt Ihnen an, was es löschen wird und fordert Sie dann auf, dies zu bestätigen. Bei diesem Einsatz ist der manuelle Schutz nicht mehr möglich. Um Ihren Job zu behalten, empfehle ich Ihnen, alle AWS-Konten, die Ihnen wirklich wichtig sind, zum aws-nuke.yaml.template schwarze Liste:
account-blacklist:
# add ALL account id's that you definitely want to keep
- account-id-1
- account-id-2
- account-id-3
- ...
Die Konten auf der schwarzen Liste werden nicht gelöscht, auch wenn Sie sie versehentlich in der Konfiguration angegeben haben. Sie können auch eigene Filter für Ressourcen hinzufügen, die Sie beibehalten möchten. Stellen Sie sicher, dass Sie die Konfiguration testen, bevor Sie sie festschreiben, indem Sie die Option Trockenlauf von aws-nuke verwenden. Jetzt machen Sie den Nuke scharf, indem Sie den Code in das codecommit-Repository in Ihrem Zielkonto pushen:
$ git add aws-nuke.yaml.template
$ git commit -m 'account blacklist and filters'
$ git remote add aws codecommit://$AWS_PROFILE@aws-account-destroyer
$ git push -u aws master
Jetzt wird aws-nuke jede Nacht alle Ressourcen Ihres Kontos auf der ganzen Welt zerstören.
Fazit
Das Dienstprogramm aws-nuke ist äußerst nützlich, um ungewollte Cloud-Kosten in Grenzen zu halten. Mit dieser Bereitstellung ist es noch einfacher zu verwenden. Aber Vorsicht: Es kann genauso gut dazu verwendet werden, Ihr Produktionskonto zu zerstören. Verwenden Sie es also mit äußerster Vorsicht!
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



