In der letzten Ausgabe hatten wir uns die AWS-Managementkonsole näher angeschaut. Doch vor allem bei der Nutzung mehrerer Accounts, Regionen und Rollen ist dies bei der Administration der Amazon-Cloud nicht immer der schnellste Weg. Im zweiten Teil zur Verwaltung der AWS-Dienste blicken wir deshalb auf Befehlszeilentools, SDKs, Toolkits für integrierte Entwicklungsumgebungen und die Automatisierung durch Infrastructure-as-Code.
Mithilfe von Command Line Interfaces (CLIs) können Sie die AWS-Dienste über das Terminal verwalten und durch Skripte automatisieren. Das CLI ist in der Managementkonsole in Form der AWS CloudShell direkt verfügbar oder in jeder anderen Umgebung ebenso schnell zu installieren. Dabei handelt es sich um eine browserbasierte Kommandozeilenumgebung, die die sichere Verwaltung, Erkundung und Interaktion mit Ihren AWS-Ressourcen erleichtert.
Sie ist mit Ihren genutzten Berechtigungen aus der Managementkonsole vorauthentifiziert. Gängige Entwicklungs- und Betriebstools sind vorinstalliert, sodass keine lokale Installation oder Konfiguration erforderlich ist. Mit der CloudShell können Sie schnell Skripte mit dem AWS-CLI ausführen, mit AWS-Service-APIs unter Verwendung der AWS-SDKs experimentieren oder eine Reihe anderer Tools verwenden, um effizienter zu arbeiten.
CloudShell nutzen
In der AWS-Managementkonsole starten Sie die CloudShell mit den folgenden Schritten in der Navigationsleiste:
Mithilfe von Command Line Interfaces (CLIs) können Sie die AWS-Dienste über das Terminal verwalten und durch Skripte automatisieren. Das CLI ist in der Managementkonsole in Form der AWS CloudShell direkt verfügbar oder in jeder anderen Umgebung ebenso schnell zu installieren. Dabei handelt es sich um eine browserbasierte Kommandozeilenumgebung, die die sichere Verwaltung, Erkundung und Interaktion mit Ihren AWS-Ressourcen erleichtert.
Sie ist mit Ihren genutzten Berechtigungen aus der Managementkonsole vorauthentifiziert. Gängige Entwicklungs- und Betriebstools sind vorinstalliert, sodass keine lokale Installation oder Konfiguration erforderlich ist. Mit der CloudShell können Sie schnell Skripte mit dem AWS-CLI ausführen, mit AWS-Service-APIs unter Verwendung der AWS-SDKs experimentieren oder eine Reihe anderer Tools verwenden, um effizienter zu arbeiten.
CloudShell nutzen
In der AWS-Managementkonsole starten Sie die CloudShell mit den folgenden Schritten in der Navigationsleiste:
1. Geben Sie zunächst cloudshell in das Suchfeld ein und wählen Sie dann die Option "CloudShell" (Markierung A in Bild 1). Wählen Sie im Anschluss das CloudShell-Symbol oben rechts in der Menüleiste (kleines Kästchen mit ">"-Symbol, Markierung B).
2. Um eine AWS-Region auszuwählen, in der Sie arbeiten möchten, gehen Sie zum Menü und entscheiden Sie sich für eine unterstützte AWS-Region (Markierung C). Die verfügbaren Regionen sind hervorgehoben.
3. Um eine vorinstallierte Shell auszuwählen, mit der Sie arbeiten möchten, geben Sie diese in der Eingabeaufforderung ein: bash (Standard), pwsh oder zsh.
4. Im CloudShell-Menü unter "Actions" ändern Sie das Layout, laden Dateien hoch und herunter, starten die CloudShell neu oder setzen sie zurück (Markierung D).
Bild 1: Die AWS-CloudShell lässt sich in wenigen Schritten an die eigenen Bedürfnisse anpassen.
AWS-CLI installieren
Das AWS-Befehlszeilentool (CLI) ist ein einheitliches Werkzeug zur Verwaltung Ihrer AWS-Dienste. Mit nur einer Software, die Sie herunterladen und konfigurieren, steuern Sie mehrere AWS-Dienste über die Befehlszeile und automatisieren diese durch Skripte. Um außerhalb der CloudShell, zum Beispiel auf Ihrem Laptop, mit AWS über das CLI zu interagieren, müssen Sie die Anmeldeinformationen konfigurieren, die bei API-Aufrufen Verwendung finden sollen. Wir zeigen auch, wie Sie mehrere Profile einrichten können, um auf mehr als ein AWS-Konto zuzugreifen, entweder mit zusätzlichen Anmeldeinformationen oder über IAM-Rollenwechsel.
Es gibt verschiedene Möglichkeiten, um das CLI zu installieren, abhängig von Ihrem Betriebssystem oder Ihrer Präferenz für die Verwendung von Containern. Befolgen Sie dabei immer die neueste Anleitung zur Installation des AWS-CLI in Version 2, die Sie unter [1] finden. Tippen Sie nach der Installation aws -version ein, sollten Sie die folgende Ausgabe sehen – die Versionsnummern sind hier natürlich nur ein Beispiel:
Das CLI ist nun installiert. Sie können versuchen, einen Befehl wie aws ec2 describe-vpcs auszuführen. Da Ihre Anmel-deinformationen noch fehlen, erscheint jedoch eine Fehlermeldung.
Konfigurieren der Anmeldeinformationen
Um die Anmeldeinformationen zu konfigurieren, verwenden Sie den Befehl aws configure. Sie werden nach der AWS Access Key ID, dem AWS Secret Access Key, dem Standard-Regionsnamen und dem Standard-Ausgabeformat gefragt. Verwenden Sie hier die Anmeldeinformationen eines bereits bestehenden Nutzers in AWS-IAM oder legen Sie einen neuen an.
Sie können die Standardregion überschreiben, indem Sie beispielsweise die Option "--region eu-central-1" bei jedem Befehl verwenden. Eine Liste der Regionalcodes finden Sie im Regionen-Menü der AWS-Managementkonsole. Der Formattyp schließlich gibt an, wie die Ausgabe standardmäßig angezeigt werden soll, und umfasst unter anderem JSON, YAML und TEXT. Nach der Eingabe aller Daten sollten Sie eine ähnliche Ausgabe im Terminal sehen:
AWS Access Key ID [None]: ABCDEFGHIJKLM
AWS Secret Access Key [None]: ABCDEFGHIJKLM
Default region name [None]: eu-central-1
Default output format [None]: json
Führen Sie nun den Befehl aws ec2 describe-vpcs von vorhin aus, dann erhalten Sie nun auch eine Ausgabe, da jedes neue AWS-Konto ein standardmäßiges Netzwerk (Amazon VPC) konfiguriert hat:
{
"Vpcs": [
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-d12345",
"State": "available",
"VpcId": "vpc-0123456789abc def",
"OwnerId": "123456789012",
....
Dies bestätigt, dass Ihr AWS CLI nun korrekt eingerichtet ist. Es wurden zwei neue Dateien ("config" und "credentials") erstellt, entweder in "~/.aws" (Linux / macOS) oder in "%UserProfile%\.aws" (Windows). Die Credentials-Datei enthält die von Ihnen angegebenen Anmeldedaten.
S3 via Python-SDK verwalten
Die AWS-Dienste lassen sich direkt über APIs vollständig verwalten. Um die Komplexität der Programmierung zu verringern, stellt der Cloudanbieter SDKs zur Verfügung. Dabei findet eine Vielzahl von Programmiersprachen und Frameworks Unterstützung:
- Generell: C++, JavaScript, Python, PHP, .NET, Rust, Swift, Kotlin, Ruby, Java, Go und Node.js
- Hardwarenahe Programmiersprachen: Embedded C und Arduino
- Web: React, Angular, Vue und Next.js
- Mobile: Android, iOS, React Native Ionic und Flutter
Ein Beispiel: Das AWS-SDK für Python heißt Boto3 – nach dem Süßwasserdelfin aus dem Amazonasgebiet. Es setzt mindestens Python 3.6 voraus. Im Folgenden gehen wir die Schritte durch, um alle Buckets in Amazon S3 aufzulisten. Buckets sind Container für in Amazon S3 gespeicherte Daten.
Installieren Sie zunächst die neueste Boto3-Version mittels pip install boto3. Stellen Sie sicher, dass sie über gültige AWS-Anmeldeinformationen verfügen. Konfigurieren Sie dafür Ihren Access Key und Secret Access Key mithilfe von aws configure wie zuvor beschrieben. Jetzt können Sie Boto3 nutzen. Dafür müssen Sie es zunächst importieren und angeben, welchen Dienst Sie einsetzen wollen. In diesem Beispiel arbeiten wir mit der interaktiven Python-Shell und dem Objekt-Speicherdienst Amazon S3:
import boto3
s3 = boto3.resource('s3')
Da Sie nun eine S3-Ressource haben, können Sie Anfragen an den Dienst senden. Der folgende Code verwendet die S3-Bucket-API, um alle Bucket-Namen auszugeben:
for bucket in s3.buckets.all(): print(bucket.name)
Toolkit für JetBrains nutzen
Um reibungslos Software und Infrastruktur zu entwickeln, zu testen, zu debuggen und bereitzustellen, verwendet eine große Mehrheit an Entwicklern und Administratoren eine integrierte Entwicklungsumgebung (IDE). Bestehende IDEs lassen sich mit AWS-Toolkits um das reibungslose Zusammenspiel mit der AWS-Cloud erweitern. Die unterstützten IDEs sind unter anderem:
- Eclipse
- AWS Cloud9
- Microsoft: Visual Studio, Visual Studio Code und Azure DevOps
Als Beispiel gehen wir auf JetBrains ein. Als Voraussetzung sollten Sie eine unterstützte JetBrains-IDE installieren und starten. Dann öffnen Sie die Einstellungen (Preferences). Wählen Sie zunächst "Plugins" und dann die Registerkarte "Marketplace" aus. Geben Sie in der Suche den Begriff "AWS Toolkit" ein. Wenn "AWS Toolkit by Amazon Web Services" angezeigt wird, wählen Sie es aus. Installieren Sie das Plugin und starten Sie die IDE neu. Um sich zum ersten Mal mit einem AWS-Konto zu verbinden, wählen Sie in der Statusleiste "AWS: No credentials selected".
Entscheiden Sie sich dann entweder für ein aus den vorherigen beiden Abschnitten konfiguriertes AWS-Profil oder bearbeiten Sie die AWS-Anmeldeinformationen unter "Edit AWS Credential file(s)". Um die Konfiguration zu testen, wählen Sie beispielsweise den Knoten "CloudWatch Logs" aus, um die Liste der Protokollgruppen zu sehen. Doppelklicken Sie auf den Namen einer Protokollgruppe und wählen Sie abschließend einen Log-Stream aus, um die spezifischen Log-Messages zu lesen.
Bild 2: Vor der ersten Nutzung des AWS-Toolkit für JetBrains ist zur Verbindung mit einem AWS-Konto ein Klick in die Statusleiste nötig.
Automatisierung durch Infrastructure-as-Code
Mittels Infrastructure-as-Code können Sie Ihre AWS-Ressourcen modellieren und einrichten, sodass Sie weniger Zeit mit deren Verwaltung verbringen und sich mehr auf Ihre in AWS ausgeführten Anwendungen konzentrieren können. Dazu erstellen Sie eine Vorlage, die alle gewünschten AWS-Ressourcen beschreibt, zum Beispiel Elastic-Compute-Cloud-Instanzen oder Amazon-S3-Buckets.
Der Dienst CloudFormation übernimmt das Bereitstellen und Konfigurieren dieser Ressourcen für Sie – Sie müssen sie nicht einzeln in der Benutzeroberfläche der AWS-Managementkonsole erstellen, konfigurieren und herausfinden, was wovon abhängt – das übernimmt CloudFormation.
Eine CloudFormation-Vorlage beschreibt Ihre gewünschten Ressourcen und deren Abhängigkeiten, sodass Sie sie gemeinsam als Stack (englisch für Stapel) starten und konfigurieren können. Sie verwenden eine Vorlage, um einen gesamten Stack als eine Einheit zu erstellen, zu aktualisieren und zu löschen, anstatt Ressourcen einzeln zu verwalten. Stacks lassen sich über mehrere AWS-Konten und -Regionen hinweg verwalten und bereitstellen. Die Vorlage wird als Textdatei gespeichert, deren Format dem Standard JavaScript Object Notation (JSON) oder YAML entspricht. Da es sich um Textdateien handelt, erstellen und bearbeiten Sie sie in einem beliebigen Text-editor und verwalten sie in Ihrem Versionsverwaltungssystem zusammen mit dem restlichen Quellcode.
In der Vorlage beschreiben Sie die AWS-Ressourcen, die Sie erstellen und konfigurieren möchten. Werfen wir einen Blick auf eine grundlegende Vorlage, mit einer einzelnen Ressource des Typs "AWS::S3::Bucket" und dem Namen "HelloBucket". Beachten Sie hier, dass Sie einen einzigartigen Namen für Ihren S3-Bucket wählen müssen (etwa "HelloBucket-123-zufaellige-zahl"), der von keinem anderen AWS-Kunden bereits gewählt wurde.
{
"Resources" : {
"HelloBucket" : {
"Type" : "AWS::S3::Bucket"
}
}
}
Verwenden Sie diese Vorlage, um einen Stack zu erstellen, erstellt CloudFormation einen S3-Bucket. Das Erzeugen eines Buckets ist einfach, da der Dienst einen solchen mit Standardeinstellungen erstellen kann. Für andere Ressourcen wie beispielsweise eine EC2-Auto-Scaling- oder EC2-Instanz benötigt CloudFormation mehr Informationen.
IaC mithilfe von Programmiersprachen
Anstatt die CloudFormation-Vorlagen selbst zu schreiben, können Sie auch Ihre Ressourcen in einer Programmiersprache definieren. Das AWS Cloud Development Kit (AWS CDK) ist ein Beispiel, das bekannte Programmiersprachen unterstützt und deren Ausdrucksstärke nutzt. Die Cloudressourcen werden mit bewährten Standardeinstellungen vorkonfiguriert und dann auf sicherer, wiederholbarer Art und Weise als CloudFormation-Vorlage ausgerollt. Das kurze Beispiel von oben sähe dann in CDK in TypeScript wie folgt aus:
const helloBucket = new s3.Bucket(this, 'HelloBucket');
Neben TypeScript ist auch JavaScript, Python, Java und C# möglich. Für weitere Informationen sehen Sie sich die CDK-Webseite [2] oder den CDK-Workshop [3] an.
Fazit
In zweiten und letzten Teil haben wir uns darauf fokussiert, wie Sie das Klicken in der AWS-Managementkonsole vollständig durch Befehlszeilentools, SDKs, weitere Werkzeuge und Infrastructure-as-Code ersetzen können. Die jeweiligen Abschnitte konnten nur erste kurze Einblicke bieten. Jedoch wurde deutlich, dass die Administration der AWS-Cloud fernab der Weboberfläche schnell, wiederholbar und präzise via Terminal, Skript und Quellcode in Ihrer genutzten Sprache möglich ist.
(ln)
Christopher Henkel ist Solutions Architect bei AWS.