Einführung ins AWS Command Line Interface, Teil 1

AWS CLI – Grundlagen und Befehlsaufbau

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

Der Befehl „aws --version“ zeigt, ob und in welcher Version AWS CLI installiert wurde.
Der Befehl „aws --version“ zeigt, ob und in welcher Version AWS CLI installiert wurde. (Bild: Drilling / AWS)

Die Web-basierte Management-Konsole von Amazon Web Services wird dem Elastizitäts-Prinzip und Automatisierungsgedanken der Public Cloud nicht immer gerecht. Mit AWS CLI gibt es aber eine Kommandozeilen-Integration, die Cloud-Spezialisten bei der Ressourcen-Verwaltung entgegenkommt.

Mit der AWS-Befehlszeilen-Schnittstelle (Command Line Interface, CLI) steht dem Cloud-Admin ein Werkzeug zur Verfügung, mit der er sämtlicher Aspekte seiner AWS-Dienste steuern und verwalten kann. Amazon Web Services stellt die Kommandoschnittstelle für Windows (64- und 32-Bit) sowie für Mac und Linux (diese beiden erfordern Python 2.6.5 oder jünger) zum kostenlosen Download zur Verfügung. Die iX-Installation kann dabei mit Hilfe von pip erfolgen:

pip install awscli

Der Setup Wizard der AWS-Kommandozeilen-Schnittstelle.
Der Setup Wizard der AWS-Kommandozeilen-Schnittstelle. (Bild: Drilling / AWS)

Der Admin findet die Download-Pakete, ein Erste-Schritte-How-To, eine CLI-Befehlsreferenz und den Einstieg ins Community-Form auf der AWS-CLI-Seite. Man kann die AWS-Kommonadozeilen-Schnittstelle auf einem beliebigen Arbeitsplatz im eigenen Rechenzentrum, im Heimbüro und natürlich in jeder beliebigen EC2-Instanz installieren.

Möchte der Admin das AWS-CLI in einer EC2-Instanz verwenden, bietet es sich an, eine Art „Command Host“ in einem Public Subnet bereitzustellen und dazu das Amazon-Linux-AMI zu verwenden, weil die CLI-Tools in diesem bereits vorinstalliert sind. Wurde CLI installiert, muss es noch konfiguriert werden, was man durch Eingeben von

aws configure

erreicht. Unter Windows lässt sich dieser Befehl wahlweise im Kommandozeilentool CMD oder über die Powershell absetzen. Das interaktive Kommando erfragt zunächst einen Access Key und das zugehörige Secret für gewünschten User.

Access Keys

Für das Management von AWS-Ressourcen genügt ein rein programmatischer Zugriff.
Für das Management von AWS-Ressourcen genügt ein rein programmatischer Zugriff. (Bild: Drilling / AWS)

Dieser Anwender kann theoretisch ein root-Benutzer sein. Allerdings wird man zu diesem Zweck üblicherweise einen IAM-Benutzer verwenden, der nicht notwendigerweise eine menschliche Entinität sein muss. Geht es nur um das Verwalten von AWS-Ressourcen per CLI, kann man durchaus einen IAM-User (z. B. zum Berechtigen von EC2-Instanzen) anlegen, der keinen Zugriff auf die Management-Konsole sondern nur programmatischen Zugriff besitzt.

Der Installationsdialog.
Der Installationsdialog. (Bild: Drilling / AWS)

Hierbei hat man jederzeit die Möglichkeit, temporär benötigte Access Keys anzulegen. Dabei liefert IAM die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel zurück. Letzterer lässt sich nur beim Anlegen einmal sichtbar anzeigen und muss dann heruntergeladen und sicher aufbewahrt werden. Geht ein geheimer Zugriffsschlüssel verloren, muss der Admin den Zugriffsschlüssel des zugehörigen IAM-Benutzers löschen und einen neuen Schlüssel erstellen. Allgemein handelt es sich bei Access-Keys um ein symmetrisches AES-Verfahren.

AWS-Benutzer benötigen immer dann eigene Access-Keys, wenn sie AWS-Ressourcen über die AWS-CLI oder die Windows PowerShell Tools erstellen/verwalten möchten oder AWS-Ressourcen z. B. in Skripten oder einer Programmiersprache mit AWS-Support programmgesteuert aufzurufen. Auch werden Access-Keys benötigt, um direkte HTTP-Aufrufe mithilfe der APIs für einzelne AWS-Services auszuführen.

AWS Command Line Interface für EC2

Einführung in AWS CLI, Teil 2

AWS Command Line Interface für EC2

08.01.18 - 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. lesen

Erstellt man einen neuen Schlüssel, ist er per Default aktiv. Er lässt sich also für Aufrufe nutzen, die über AWS CLI, Windows-PowerShell-Tools und/oder direkt per API getätigt werden. Jeder Nutzer kann zu jedem Zeitpunkt zwei gleichzeitig aktive Zugriffsschlüssel besitzen. So lassen sich Schlüssel auch effizient rotieren. Ein Schlüssel lässt sich jederzeit deaktivieren und kann dann nicht mehr für API-Aufrufe benutzt werden.

Ferner kann der Nutzer nicht mehr benötigte und deaktivierte Keys jederzeit löschen. Zudem kann ein root-Nutzer oder ein IAM-User mit administrativen IAM- Berechtigungen anderen IAM-Usern Berechtigungen zum Auflisten, Rotieren und Verwalten ihrer eigenen Schlüssel geben. Doch zurück zur AWS CLI.

AWS-CLI konfigurieren

Erste Amtshandlung nach dem Installieren des CLI (bzw. zu dem Zeitpunkt und Kontext, zu dem CLI benutzt werden soll) ist es, mit Hilfe von

aws configure

die gewünschten Access Keys zu übergeben. Diese definieren dann, welche AWS-Ressourcen überhaupt per CLI administrierbar sind. Dies könnte der Bequemlichkeit halber der Access Key eines humanen IAM-Nutzers mit weitreichenden Berechtigungen sein.

Besser ist es, einen IAM-User mit speziell auf den Einsatzzweck abgestimmten Berechtigungen zu verwenden. Ein solcher muss nicht notwendigerweise den Access Type „AWS Management Console“ haben, d. h. auch ein Dienst oder Service kann ein IAM-User sein. Nach Access-Key und Secret fragt „aws configure“ nach der Default-Region. Die kann man angeben oder nicht.

EC2-Ressourcen mittels AWS-CLI filtern

Einführung in AWS-CLI, Teil 3

EC2-Ressourcen mittels AWS-CLI filtern

17.01.18 - Das AWS-CLI-Kommando „EC2“ bietet eine große Auswahl an Möglichkeiten, virtuelle Maschinen in AWS zu erstellen, zu steuern und zu verwalten. Der dritte Teil unseres CLI-Workshops befasst sich mit der Suche nach Ressouren, bzw. allgemein mit den Filtermöglichkeiten der Ausgaben, die „jedes“ CLI-Kommando liefert. lesen

In eckigen Klammern erscheint stets der Wert, der bei der letztmaligen Verwendung von „aws configure“ angegeben worden wurde, abgesehen von den beiden Access-Key-Werten. Bei denen sind jeweils nur die letzten vier Stellen sichtbar, damit man die verwendeten Schlüssel erkennt. Gibt der Nutzer die Default-Region nicht man, muss er die Region ggf. bei jedem einzelnen CLI-Befehl per Parameter „--region“ anhängen.

Ausgabeformat

Fehlt noch das gewünschte Ausgabeformat. AWS CLI unterstützt drei Varianten „JSON (json)“, „durch Tabstopps getrennten Text (text)“ und „Tabellen im ASCII-Format (table)“. Auch hier gilt: entweder man legt das Ausgabeformat pauschal mit „aws configure“ fest oder muss es beim betreffenden Befehl per Parameter „--output“ angeben.

Per Default werden sämtliche Ausgaben aus AWS CLI im JSON-Format (Javascript Object Notation) zurückgeliefert. JSON hat sich in den letzten Jahren zu einem De-facto-Standard für die Datenformatierung und vor allem den Datenaustausch im Internet entwickelt, weil es von Menschen und „Maschinen“ gleichermaßen gut les- und analysierbar ist. JSON basiert auf dem JavaScript-Standard und lässt sich problemlos als Objekt in einer JavaScript-Anwendung instanziieren.

Tags mit AWS-CLI für EC2 erstellen

Einführung in AWS-CLI, Teil 4

Tags mit AWS-CLI für EC2 erstellen

29.01.18 - 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. lesen

Die JSON-Ausgabe eignet sich am besten für die programmatische Behandlung der Ausgabe durch verschiedene Sprachen. Das Tabellenformat hingegen ist für Entwickler einfacher lesbar und das Textformat funktioniert gut mit traditionellen Unix-Tools für die Textverarbeitung, zum Beispiel sed, grep und awk oder für Windows PowerShell-Skripte.

Erste Schritte

Der Befehl „aws --version“ zeigt, ob und in welcher Version AWS CLI installiert wurde.
Der Befehl „aws --version“ zeigt, ob und in welcher Version AWS CLI installiert wurde. (Bild: Drilling / AWS)

Wurde AWS CLI installiert, sollte der Admin durch Eingeben von

aws –version

zunächst prüfen, ob die Installation erfolgreich war und welche CLI-Version installiert wurde. Eine komplette Befehlsreferenz für das AWS CLI findet sich in der offiziellen Dokumentation. Hierbei ist auch zur erkennen, dass sich Befehlsumfang, Parametersatz und Optionen für jeden einzelnen, mittels CLI steuerbaren AWS-Service unterscheiden (wie auch API-Calls bzw. SDK-Aufrufe). Die allgemeine Aufrufstruktur folgt dabei immer dem Muster:

aws <service> <operation> <parameters> <options>

Das Subkommando „describe instances“ führt mitunter zu sehr komplexen Ausgaben.
Das Subkommando „describe instances“ führt mitunter zu sehr komplexen Ausgaben. (Bild: Drilling / AWS)

Ein AWS-CLI-Aufruf ist also immer eine Konstruktion aus den drei Teilen „Command“, „Sub-Command“ und „Parameter“. Dabei gilt Folgendes:

Command ist der anzusteuernde Top-Level-„Service“, wie z. B. „EC2“ oder „S3“. Eine Liste aller aktuell unterstützten Dienste findet sich in der der o. e. Kommando-Referenz.

Subcommand ist die „Operation, die auf diesem Dienst ausgeführt wird (bei „EC2“ beispielsweise „run-instances“), wobei „run-instances“ ein Unterbefehl (Subcommand) von „EC2“ ist und für das Erstellen einer neuen Instanz verwendet wird.

Parameters sind sämtliche Argumente, die zur Durchführung der „Operation“ (Subcommand) erforderlich sind. Dem Argument-Namen werden immer zwei Bindestriche (-) vorangestellt. Um zum Beispiel die Operation „ec2 run-instances“ auszuführen, übergibt man eine Reihe von Parametern, wie z. B. die AMI ID.

Options bieten innerhalb der CLI Auswahlmöglichkeiten, die der Admin beim Ausführen des Vorgangs angeben könnte. Eine der am häufigsten verwendeten Optionen ist z. B „--query“, mit deren Hilfe man die JSON-Ausgabe so begrenzen kann, dass z. B. nur die Instanz-ID der neuen Instanz zurückgegeben wird.

Hier eine per Option „--output table“ generierte Tabelle für das „describe instances“-Subkommando.
Hier eine per Option „--output table“ generierte Tabelle für das „describe instances“-Subkommando. (Bild: Drilling / AWS)

Begrenzt man die Ausgabe nicht mit „--query2“, wird immer das komplette JSON-Array ausgegeben. Beim Subcommand „describe instances“ beispielsweise, der alle im aktuellen Kontext (Access-Key, Region) vorhandenen Instanzen anzeigt, kann die Ausgabe (wie in der obigen Powershell-Abfrage gezeigt) sehr komplex ausfallen. Im tabellarischen Ausgabeform (--output table) sähe es dann so aus, wie im vorangestellten Bild.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45026587 / Cloud & PaaS)