Ressource-Tags per CLI erstellen und verwalten Einführung in AWS-CLI, Teil 4

Das AWS Command Line Interface bietet zahlreiche Ansätze zum Steuern von EC2-Ressourcen. Hierbei spielen unter anderem Tags eine große Rolle, mit deren Hilfe sich Instanzen, Projekte, Kosten oder anderen AWS-Ressourcen zuordnen lassen. Eingebunden in eigene Operations-Skripte ergeben sich damit interessante Möglichkeiten.

Mit in Skripten verpackten CLI-Befehlen oder kleinen Programmen – für alle wichtigen Programmiersprachen ist die die AWS-SDK verfügbar – lassen sich auch komplexer Operations-Aufgaben erledigen. So lassen sich z. B. mit dem EC2-Sub-Command „create-tag“ Tags auch in der CLI erzeugen.

Im folgenden Beispiel wollen wir ein Versions-Tag erstellen. Um die Aufgabe etwas interessanter zu gestalten, sollten zwei AWS-CLI-Kommandos per Pipe-Operator einander zuarbeiten. Der erste Teil des folgenden kleinen Bash-Skriptes findet z. B. mittels „describe instances“ alle EC2-Instanzen in der Default-Region, in denen das Tag „Project“ auf „ERPSystem“ und das Tag „Envrionment“ auf „production“ gesetzt ist.

#!/bin/bash
ids=$(aws ec2 describe-instances –filter “Name=tag:Project,Values=ERPSystem” “Name=tag:Environment,Values=production” –query ‘Reservations[*].Instances[*].InstanceId’ –output text)
aws ec2 create-tags –resources $ids –tags ‘Key=Version,Value=2.0’

Das Skript nutzt den Befehl „aws ec2 describe-instances“, um die InstanceIDs aller Instanzen zu finden, welche die Tags Project=“ERPSystems und Envrionment=“production“ gesetzt haben und leitet das Ergebnis an das Kommando „aws ec2 create-tag“ weiter, welches das Tag „Version“ mit dem Wert „ 2.0“ überschreibt, falls es bereits existiert, oder anderenfalls ein neues erstellt.

Nachdem wir das Skript haben laufen lassen, verifizieren wir das Ergebnis mit …

aws ec2 describe-instances –filter “Name=tag:Project,Values=ERPSystem” –query ‘Reservations[*].Instances[*].{ID:InstanceId,AZ:Placement.AvailabilityZone,Project:Tags[?Key==`Project`] | [0].Value,Environment:Tags[?Key==`production`] | [0].Value,Version:Tags[?Key==`Version`] | [0].Value}’

Ausputzer

Damit EC2-Instanzen keine unnötigen Kosten verursachen, verwenden viele AWS-Systemoperatoren eine Lösung, die z. B. am Ende des Arbeitstages nach Instanzen sucht, die beendet werden können, und diese terminiert. Das kann unter anderem auch wieder auf Basis von Tags passieren. So könnte man beispielsweise ein kleines PHP-Programm schreiben, um entsprechende Instanzen zu identifizieren und dann entweder zu stoppen oder zu starten.

Unser „stopinator“-PHP-Skript nutzt die AWS-SDK für PHP, um Instanzen zu starten oder zu stoppen. Es akzeptiert zwei Argumente „-t“ (für Terminate), bzw „-s“ (für Start) von denen das Erste einen Satz von Tags im Format „name=value, name=value“ aufnimmt. Der zweite Parameter „-s“ ist vom Typ Boolean. Das Skript konvertiert die Tags allerdings für den zugehörigen PHP-API-Call „EC2::DescribeInstance()“ in das von diesem erwartete Format.

Hier weiterlesen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.