Einführung in AWS CLI, Teil 2 AWS Command Line Interface für EC2
EC2-Instanzen lassen sich innerhalb der Amazon Web Services per Command Line Interface anlegen, bearbeiten und verwalten. Wie das Sub-Command „EC2“ mit AWS-CLI über einen Kommando-Host realisiert wird, sehen wir uns in diesem Beitrag an.
Anbieter zum Thema

Im ersten Teil dieses Workshops haben wir die AWS-CLI auf einem lokalen Windows-Arbeitsplatz im eigenen Rechenzentrum installiert. In freier Wildbahn wird man die AWS-CLI häufig aus einer EC2-Instanz heraus verwenden, um andere AWS-Dienste zu steuern.
:quality(80)/images.vogel.de/vogelonline/bdb/1323500/1323540/original.jpg)
Einführung ins AWS Command Line Interface, Teil 1
AWS CLI – Grundlagen und Befehlsaufbau
Ein populäres Beispiel ist der Betrieb einer Art Kommando-Hosts in einem Public-Subnet. Dieser basiert auf einem Amazon-Linux-AMI, bei dem die CLI bereits vorinstalliert ist und soll ausschließlich dazu dienen, AWS-Ressourcen im aktuellen VPC zu verwalten oder neue Services zu instanziieren.
Dieser Kommando-Host wird in einem öffentlichen Subnetz platziert und ist damit selbst aus dem eigenen Rechenzentrum heraus per SSH steuerbar. Das Aufsetzen des Kommando-Hosts erledigen wir für das folgende Beispiel mithilfe der AWS Management Console und platzieren diesem in einem eigens dazu angelegten öffentlichen Subnetz. Die notwenigen Workflows im EC2- und VPC-Dashboard sollten allerdings geläufig sein.
Da unser Kommando-Host letztendlich als Steuerzentrale zum Provisionieren weiterer EC2-Instanzen dienen soll, muss die Instanz über den erforderlichen Berechtigungskontext verfügen. Hierfür erstellen wir zunächst einfach eine neue IAM-Rolle „Kommando-Host“ für den EC2-Service, der wir die verwaltete Policy „EC2 Full Access“ anhängen.
Anschließend erstellt man im VPC-Dashboard ein passendes VPC mit einem öffentlichen Subnetz. Das Erstellen der benötigten Internet-Gateways (IGW) der Routing-Tabelle und Subnetze kann manuell im VPC-Dashboard oder der Einfachheit halber mit Hilfe des VPC-Wizards erfolgen, wie folgende Abbildung zeigt.
Sind die Voraussetzungen geschaffen, können wir die benötigte EC2-Instanz für den Kommando-Host erstellen. Der EC2-Launch-Wizard verwendet das Amazon-Linux-AMI als Vorlage, erhält die oben erstelle IAM-Rolle, das oben erstelle öffentliche Subnetz als Provisionierungsziel und ein einfaches User-Daten-Skript zum Aktualisieren der wichtigsten Pakete:
#!/bin/bash
yum update -y
Das Installieren der AWS-CLI per Instanz-User-Daten erübrigt sich, da diese im AMI für Amazon Linux bereits installiert ist. Bei der Instanz-Größe können wir es bei „T2-Micro“ belassen und auch beim Root-Volume übernehmen wir die Default-Einstellungen, um im Free-Tier-Kontingent zu bleiben.
:quality(80)/images.vogel.de/vogelonline/bdb/1339400/1339490/original.jpg)
Einführung in AWS-CLI, Teil 3
EC2-Ressourcen mittels AWS-CLI filtern
Lediglich bei der Security Group erstellen wir „on the fly“ im EC2-Launch-Wizard eine Neue für „SSH-Access“ (Port 22 eingehend von „überall“, d. h. 0.0.0.0/0) und kreieren abschließend ein neues RSA-Schlüsselpaar (nicht vergessen, den privaten Schlüssel herunterzuladen), um uns per SSH auf die Instanz verbinden zu können.
Wurde die Instanz erstellt, können wir uns per SSH und dem eben erstellten asymmetrischen Schlüsselpaar auf die Instanz verbinden und dort initial „aws configure“ durchlaufen lassen, wie in Teil 1 dieser Workshop-Reihe beschrieben. Die symmetrischen AES-Schlüssel „Access Key + Secret“ muss man allerdings zuvor für den verwendeten IAM-User erstellt und aktiviert haben.
Damit sind alle Voraussetzungen erfüllt, um vom Kommando-Host aus mit der AWS CLI arbeiten und z. B. weitere Instanzen im öffentlichen Subnetz zu erzeugen. Wir verwenden für diesen Teil des Workshops den Sub-Command „EC2“, befassen uns also vorerst nur mit der AWS-CLI für EC2.
Web-Server erstellen
So wollen wir z.B. zunächst eine weitere EC2-Instanz für einen einfachen Webserver erstellen. Dessen User-Daten-Skript erstellen wir direkt auf den Kommando-Host in einem Editor (z. B. nano oder vi) und speichern es in einer Textdatei „UserData.txt“. Der Inhalt ist simpel und installiert nach dem Aktualisieren der Paketbasis den Apache-Webserver, startet ihn und macht ihn persistent.
#!/bin/bash
wget -q --tries=10 --timeout=20 http://google.com
yum update -y
yum -y install httpd php
chkconfig httpd on
/etc/init.d/httpd start
Mit diesem Skript bewaffnet, können wir die gewünschte neue Instanz auf Basis des Amazon-Linux-AMIs nun in der CLI vom Kommando-Host aus wie folgt erstellen:
aws ec2 run-instances --image-id <ami-id> --user-data file:///home/ec2-user/UserData.txt --key-name <key-name> --security-group-ids <sg-id> --instance-type t2.micro --subnet-id <subnet-id> --associate-public-ip-address --query 'Instances[*].InstanceId'
:quality(80)/images.vogel.de/vogelonline/bdb/1342900/1342911/original.jpg)
Einführung in AWS-CLI, Teil 4
Tags mit AWS-CLI für EC2 erstellen
Die hervorgehobenen Eingaben sind dabei zu ergänzen. Die „image-id“ (=ami-id), die „sg-id“ und die „subnet-id“ sind identisch mit denen des Kommando-Hosts und können einfach im Tab „Details“ der Instance-Liste im EC2-Dashboard abgeschaut werden.
Den RSA-Key-Name finden wir im Menü „Key Pairs“ im EC“-Dashboard, sofern man nicht ohnehin ein eigenes Schlüsselpaar hat und verwendet.
Das UserDaten-Skript wurde soeben auf dem Kommando-Host selbst erstellt. Sind alle Angaben vollständig und korrekt, ist die neue Instanz binnen Minuten einsatzbereit. Der Ausgabe-Parameter „--query“ sorgt im Beispiel dafür, dass das Kommando nur die Instance-ID der neu instanziierten Instant zurückliefert.
Die Arbeitsweise des --query-Parameters und weitere Möglichkeiten des EC2-Subcommands zum Erstellen, Verwalten und Auslesen von EC2-Instanzen verrät der nächste Teil dieser Workshop-Reihe.
(ID:45055724)