Direkt zum Inhalt

Wie man AWS CLI verwendet: Ein geführter Rundgang für Anfänger

Lerne, die AWS CLI auf deinem System einzurichten, sie für die Arbeit mit deinem AWS-Konto zu konfigurieren und Befehle auszuführen, um mit verschiedenen AWS-Services zu interagieren!
Aktualisierte 29. Jan. 2025  · 30 Min. Lesezeit

AWS ist ein Cloud-Service-Anbieter, der in seinen Rechenzentren auf der ganzen Welt eine breite Palette an skalierbaren und bedarfsgerechten Diensten anbietet, darunter Rechenleistung, Speicherplatz, Datenbanken, maschinelles Lernen, Netzwerke, Analysen und mehr. In den Kursen Einführung in AWS und AWS Cloud-Technologie und -Services erfährst du mehr!

Um mit Ressourcen auf AWS zu interagieren und sie zu konfigurieren, können wir entweder die AWS Management Console oder die AWS CLI verwenden.

In diesem Tutorial zeigen wir dir, wie du die AWS CLI von Grund auf installierst, sie so konfigurierst, dass sie mit deinem AWS-Konto kommuniziert, und wie du einige grundlegende Ressourcen mit der CLI erstellst.

Was ist die AWS CLI?

Die AWS CLI ist ein leistungsstarkes Tool, mit dem du direkt über die Befehlszeile auf deinem Computer mit den AWS-Diensten interagieren kannst. AWS CLI-Befehle bieten Funktionen, die der Durchführung von Aufgaben in der AWS Management Console entsprechen.

Wenn du zum Beispiel alle Sicherheitsgruppen in einer bestimmten AWS-Region auflisten möchtest, musst du über die Konsole zum Abschnitt "Sicherheitsgruppen" im EC2-Service navigieren.

Anzeigen der Sicherheitsgruppen in der AWS-Konsole

Sieh dir die Sicherheitsgruppen in der AWS-Konsole an.

Dasselbe Ergebnis kannst du auch mit dem Befehl aws ec2 describe-security-groups in der AWS CLI erzielen.

AWS CLI-Befehl zum Beschreiben und Abrufen von Informationen zu den Sicherheitsgruppen

Sieh dir die Sicherheitsgruppen über die AWS CLI auf dem lokalen Terminal an.

Installation der AWS CLI

Wir gehen durch die Installation von AWS CLI auf Windows, Mac und Linux. 

Es gibt zwei Hauptversionen von AWS CLI, Version 1 und 2. Wir werden nur die Version 2 besprechen, da sie die spätere Version mit mehr Funktionen ist. Die neuesten Informationen zur Installation oder zum Update auf die neueste Version der AWS CLI findest du in der AWS-Dokumentation.

Installieren unter Windows

Lade das Installationsprogramm von der offiziellen AWS-Websiteherunter. Öffnedas "AWSCLIV2"-Windows-Installationspaket und du wirst mit dem unten abgebildeten Fenster begrüßt.

AWS CLI Einrichtungsassistent

AWS CLI Einrichtungsassistent.

Wähle "Weiter" und fahre fort, die Lizenzvereinbarung zu akzeptieren. 

AWS CLI-Lizenzvertrag

AWS CLI-Lizenzvertrag.

Bestätige den Installationsort und fahre mit der Installation fort. Die Installation selbst sollte nicht länger als 5 Minuten dauern.

Bestätige den Installationsort für AWS CLI

Bestätige den Installationsort.

AWS CLI-Installation im Gange

Installation in Arbeit.

AWS CLI-Installation abgeschlossen

Installation abgeschlossen.

Um zu überprüfen, ob die Installation erfolgreich war, öffne das Terminal und führe den Befehl aws --version aus. Sie sollte ähnlich wie die folgende Ausgabe aussehen.

Überprüfen der AWS CLI-Installation unter Windows

Überprüfe die Installation von AWS CLI unter Windows.

Installieren unter macOS

Wir können das AWS CLI auf MacOS über Homebrew oder den Paketinstaller installieren. Ich werde beide Installationsmethoden behandeln.

Paket-Installation

Lade das .pkg-Installationsprogramm von der offiziellen AWS-Website herunter. Wenn du die Datei AWSCLIV2.pkg öffnest, siehst du das unten stehende Fenster.

Installation des AWS CLI-Pakets auf MacOS

AWS CLI-Installation.

Akzeptiere die Lizenz, bestätige den Installationsort und fahre mit der Installation fort.

AWS CLI Meldung über die erfolgreiche Installation

Meldung über die erfolgreiche Installation.

Um zu überprüfen, ob die Installation erfolgreich war, öffne das Terminal und führe den Befehl aws --version aus. Sie sollte ähnlich wie die folgende Ausgabe aussehen.

Überprüfe die AWS CLI-Installation auf MacOS

Überprüfe die AWS CLI-Installation auf MacOS.

Homebrew

Stelle sicher, dass du Homebrew lokal installiert hast. Um das zu überprüfen, führe brew --version aus. Ansonsten kannst du die Installationsanweisungen auf der offiziellen Homebrew-Seite nachlesen.

Führe dann die folgenden Befehle aus, um das CLI zu installieren:

# With brew installed, update Homebrew's formulae and cask definitions
brew update

# Install AWS CLI
brew install awscli

# Verify the installation
aws --version

Terminal-Screenshot der Brew-Befehle

brew aktualisieren und installieren

Überprüfe die AWS CLI-Installation über brew

Überprüfe die Installation der Brühe.

Installieren unter Linux

Um die Installation unter Linux zu demonstrieren, habe ich eine Amazon Linux EC2 mit dem AMI ami-0bd55ebedabddc3c0 in Betrieb genommen. Obwohl die AWS CLI Version 2 standardmäßig installiert ist, ist sie nicht die neueste Version. Die Schritte zur Aktualisierung und Installation sind ähnlich.

# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli

# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# Unzip the file
unzip awscliv2.zip

# Run the installer
./aws/install

# Verify AWS CLI 
aws --version

Lade das Installationsprogramm herunter und entpacke es auf Linux

Lade das Installationsprogramm herunter und entpacke es.

Führe das Installationsprogramm aus und überprüfe die Installation unter Linux

Führe das Installationsprogramm aus und überprüfe die Installation.

Konfigurieren der AWS CLI

Nachdem wir AWS CLI installiert haben, müssen wir es konfigurieren, bevor wir es für die Interaktion mit unseren AWS-Ressourcen nutzen können. Die Konfiguration umfasst das Einrichten der AWS-Anmeldedaten und einiger optionaler Standardeinstellungen.

Wenn wir uns bei der AWS-Konsole anmelden, melden wir uns entweder als Benutzer an oder übernehmen eine Rolle. Wenn wir AWS CLI verwenden, um mit unseren Ressourcen zu interagieren, müssen wir dies als Benutzer tun oder eine Rolle übernehmen.

AWS-Anmeldeinformationen einrichten

Es gibt zwei Möglichkeiten, sich bei der AWS-Konsole anzumelden. Die erste Möglichkeit ist die Verwendung eines Benutzers, der über den Identity and Access Management (IAM) Service erstellt wurde.

Benutzeroberfläche für die IAM-Benutzeranmeldung

IAM-Benutzer-Anmeldeseite.

Die zweite Möglichkeit ist die Verwendung eines Benutzers, der über den IAM Identity Center Service erstellt wurde.

Benutzeroberfläche für die Benutzeranmeldung beim IAM Identity Center

AWS Access Portal Anmeldeseite.

Um AWS CLI einzurichten, musst du aws_access_key_id und aws_secret_access_key auf deinem Rechner einrichten. Dieses Schlüsselpaar identifiziert dein Konto und gewährt dir Zugang zu AWS. Je nachdem, auf welche Weise du dich einloggst, unterscheidet sich der Erhalt der Daten leicht. 

IAM-Benutzer

Um die AWS CLI als IAM-Benutzer zu verwenden, navigierst du über die AWS-Konsole zum IAM-Service und wählst einen bestehenden Benutzer aus oder erstellst einen neuen. Ich werde einen bestehenden Benutzer verwenden.

Benutzer im IAM-Dienst

IAM-Benutzer.

Wähle den Benutzer aus und navigiere zur Registerkarte "Sicherheitsnachweise". Scrolle nach unten, um die "Zugriffstasten" zu sehen. Für dieses Tutorial werde ich einen weiteren Zugangsschlüssel erstellen. Wähle "Zugangsschlüssel erstellen".

Registerkarte "Sicherheitsnachweise" eines IAM-Benutzers

Registerkarte "Sicherheitsnachweise" eines IAM-Benutzers.

Wähle "Command Line Interface (CLI)". 

Einen Zugangsschlüssel für einen IAM-Benutzer erstellen

Erstelle einen Zugangsschlüssel.

Bestätige und erstelle.

Erstellter Zugangsschlüssel

Zugangsschlüssel erstellt.

Lade die .csv-Datei zur sicheren Aufbewahrung herunter. Dann führst du den Befehl aws configure lokal aus und gibst den Wert für den Zugang und den geheimen Zugangsschlüssel ein. Wir schreiben diesen Satz von Anmeldeinformationen in das "Standard"-Profil, da wir kein Profil mit dem --profile Flag angegeben haben. Wir werden die Profile in einem späteren Abschnitt besprechen.

"aws configure" CLI-Befehl

AWS configure-Befehl.

Ein versteckter Ordner namens ".aws" wird in deinem Home-Verzeichnis (~) erstellt. 

".aws" Ordner im Home-Verzeichnis

Der Ordner .aws.

Sie enthält zwei Dateien, config und credentials

Inhalt im Ordner .aws

Inhalte im Ordner .aws.

Die Datei config speichert die Standardregion und die Ausgabeoption, die du oben eingegeben hast. In der Datei credentials werden die Dateien aws_access_key_id und aws_secret_access_key gespeichert. Um ihren Inhalt einzusehen, kannst du die Befehle cat config und cat credentials ausführen.

Führe den Befehl aws sts get-caller-identity aus, um zu überprüfen, ob die Anmeldedaten funktionieren und die richtige IAM-Identität zurückgegeben wird.

AWS CLI-Befehl zur Validierung der Anmeldeinformationen

Überprüfe die Anmeldedaten.

IAM Identity Center Benutzer

Nach der Anmeldung wirst du zum AWS Access Portal weitergeleitet, um das AWS-Konto und die Rolle auszuwählen, die du bei der Anmeldung an der Konsole übernehmen möchtest. Wähle "Zugriffsschlüssel" für das Konto und die Rolle, die du für die AWS CLI verwenden möchtest.

AWS-Zugangsportal

AWS Access Portal.

Es erscheint ein Fenster, das mit dem unten abgebildeten Screenshot identisch ist. Wähle Option 2, kopiere den angegebenen Text und füge ihn in deine AWS-Anmeldedatei ein.

Anmeldeinformationen für einen Benutzer über das AWS Access Portal abrufen

Anmeldeinformationen aus dem AWS Access Portal.

Beachte, dass es neben aws_access_key_id und aws_secret_access_key auch aws_session_token gibt, verglichen mit den Anmeldedaten für einen IAM-Benutzer, die im vorherigen Abschnitt behandelt wurden. Dies erhöht die Sicherheit der über das IAM Identity Center erstellten Benutzeranmeldeinformationen, da das Sitzungs-Token abläuft und der Benutzer sich erneut authentifizieren muss, um das Token zu aktualisieren.

Nachdem du den Text aus Option 2 in deine AWS-Anmeldedatei eingefügt hast:

# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>

# Valid that the credentials work
aws sts get-caller-identity

Gültige Anmeldeinformationen vom AWS Access Portal

Überprüfe die Anmeldedaten.

Das Sitzungs-Token wird irgendwann ablaufen und wir müssen ein neues generieren. 

Fehlermeldung aufgrund eines abgelaufenen Tokens

Abgelaufener Token.

Anstatt sie erneut aus dem Access Portal zu kopieren, wie wir es oben getan haben, können wir die aws sso login von unserem lokalen Rechner aus ausführen. Befolge die folgenden Befehle, um die Single Sign-On (SSO)-Einstellungen auf deinem Rechner zu konfigurieren.

# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso

Ausgabe des Befehls "aws configure sso"

AWS configure SSO Befehl.

Du wirst aufgefordert, dich einzuloggen.

Zugriff über AWS CLI zulassen

Gewähre AWS CLI-Zugriff.

Berechtigung für AWS CLI erteilt

AWS CLI-Antrag genehmigt.

Wenn dein Session-Token wieder abläuft, rufe einfach aws sso login auf.

Ausgabe des Befehls "aws sso login"

Ausgabe der AWS SSO-Anmeldung.

Konfigurationsoptionen

Wir können verschiedene Konfigurationen als Standardoptionen nach unseren Wünschen anpassen. Wenn nicht explizit angegeben, gelten diese Standardkonfigurationen für den AWS CLI-Befehl.

Um Konfigurationswerte in der Datei config zu aktualisieren oder hinzuzufügen, kannst du den unten stehenden Befehl ausführen oder sie manuell mit vim oder nano ändern.

aws configure set <setting> <value>

region

Bei AWS-Ressourcen, die sich in einer Region befinden, muss bei der Ausführung der AWS CLI-Befehle die Adresse region angegeben werden. 

Wenn das Flag "--region <region name>" im Befehl nicht angegeben wird, wird die in der Konfigurationsdatei angegebene Standardregion verwendet. Wenn keine Standardregion definiert ist, bekommst du folgende Fehlermeldung.

Fehlermeldung, wenn keine Standardregion angegeben ist

Fehler, wenn keine Region angegeben ist.

Ausgabe

Die Einstellung output konfiguriert das Ausgabeformat, das der AWS CLI-Befehl zurückgibt. 

Das Standard-Ausgabeformat, das wir oben konfiguriert haben, ist zum Beispiel "JSON", und der Befehl aws sts get-caller-identity liefert die Ausgabe im JSON-Format. Andere gültige Optionen sind "Tabelle" und "Text". 

So sieht die Ausgabe der Tabelle aus. Ich habe das --output table Flag hinzugefügt, um den Standardausgabewert "JSON" zu überschreiben.

Ausgabeformat der Tabelle

aws sts get-caller-identity --output table.

rolle_arn & quelle_profil

Wenn du deinen IAM-Benutzer nicht direkt verwenden und stattdessen eine Rolle übernehmen willst, gib die Konfiguration role_arn und source_profile an. 

aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>

# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>

Nachdem du sie angegeben hast, überprüfe, ob die IAM-Rolle tatsächlich angenommen wird.

Anmeldeinformationen für IAM-Benutzer validieren, die eine Rolle übernehmen

Überprüfe die Anmeldedaten.

cli_pager

Standardmäßig leitet die AWS CLI ihre Ausgaben durch einen Pager wie less, bei dem du zum Beenden q drücken musst. Wir können dieses Verhalten ändern, indem wir den Pager deaktivieren und die Ausgabe so konfigurieren, dass sie direkt im Terminal angezeigt wird, indem wir diesen ausführen:

aws configure set cli_pager ""

Ausgabe bei deaktiviertem cli_pager

Ausgabe mit deaktiviertem cli_pager.

cli_history

Um eine Aufzeichnung der ausgeführten AWS CLI-Befehle zu erhalten, aktiviere die cli_history, indem du sie ausführst:

aws configure set cli_history enabled

Der Verlauf wird in einer SQLite-Datenbank auf ~/.aws/cli/history gespeichert. 

# View your AWS CLI history
aws history list

# Show details of a specific command
aws history show <command-id>

Zusammenfassung der Konfiguration

Zusammenfassung der Standardkonfigurationsoptionen:

Konfigurationsschlüssel

Beschreibung

region

Standard-AWS-Region (z. B. us-east-1, ap-southeast-1).

Ausgabe

Ausgabeformat: json, Text oder Tabelle.

role_arn

ARN der zu übernehmenden IAM-Rolle.

source_profile

Profil, das als Quelle verwendet wird, wenn du eine Rolle übernimmst.

cli_pager

Befehlsausgabe-Pager (z. B. weniger, oder auf "" setzen, um zu deaktivieren).

cli_history

Aktiviere oder deaktiviere die CLI-History-Datei (aktiviert oder deaktiviert).

cli_timestamp_format

Lege das Format des Zeitstempels fest (keine, iso8601, iso8601_ms).

Wenn du die obigen Beispiele befolgt hast, sollte deine ~/.aws/config Datei so aussehen.

Inhalt der Datei ~/.aws/config

Inhalt der Konfigurationsdatei.

Die AWS CLI-Befehle verstehen

Alle AWS CLI-Befehle haben ein Standardformat:

Visuelle Aufschlüsselung eines AWS CLI-Befehls

Format der AWS CLI-Befehle - Bild nach Autor.

Für jeden Dienst gibt es optionale oder obligatorische Optionen/Flags, die hinzugefügt werden können.

Grundlegende Befehle

Unsere AWS CLI kann jetzt programmatisch auf unser AWS-Konto zugreifen, um mit den Services zu interagieren. Probieren wir einige grundlegende Befehle für einige häufig genutzte AWS-Services aus!

EC2

Beschreibung

Befehl

Beschreibt die angegebenen Instanzen oder alle Instanzen.

aws ec2 describe-instances [--instance-ids <wert>]

Beschreibe die angegebenen Sicherheitsgruppen oder alle deine Sicherheitsgruppen

aws ec2 describe-security-groups [--group-ids <value>]

Erstellt einen Snapshot eines EBS-Volumes und speichert ihn in Amazon S3

aws ec2 create-snapshot --volume-id <wert>

Eine VPC erstellen

aws ec2 create-vpc [--cidr-block <wert>]

Ausgabe des AWS CLI-Befehls, der alle Instanzen beschreibt

Ausgabe der Beschreibung aller Instanzen.

Weitere Informationen findest du in der offiziellen Dokumentation zu EC2.

S3

Beschreibung

Befehl

Alle S3 Buckets auflisten

aws s3 ls 

Objekte in einem S3-Bucket auflisten

aws s3 ls s3://<bucket-name> --recursive

Verschiebt eine lokale Datei oder ein S3-Objekt an einen anderen Ort lokal oder in S3

aws s3 mv <LocalPath> <S3Uri> oder <S3Uri> <LocalPath> oder <S3Uri> <S3Uri>

Löscht ein Objekt in einem S3-Bucket

aws s3 rm <S3Uri>

Beispiele für "aws s3" Befehle

S3-Befehle.

Weitere Informationen findest du in der offiziellen Dokumentation zu S3.

Beachte, dass es für den AWS S3 Service neben dem oben beschriebenen aws s3 CLI-Befehl auch den aws s3api CLI-Befehl gibt. Die Befehle von aws s3 sind ziemlich allgemein, während die Befehle von aws s3api detaillierter und weniger detailliert sind.

Weitere Informationen findest du in der offiziellen Dokumentation zu s3api.

Lambda

Beschreibung

Befehl

Um alle Lambda-Funktionen aufzulisten

aws lambda list-functions

Um Informationen über eine Lambda-Funktion zu erhalten

aws lambda get-function --function-name <Funktionsname>

Ruft eine Lambda-Funktion auf

aws lambda invoke --function-name <Funktionsname>

Ausgabe des AWS CLI-Befehls zum Abrufen von Informationen über eine Lambda-Funktion

Gibt Informationen über die Funktion zurück.

Weitere Informationen findest du in der offiziellen Dokumentation für Lambda.

Beispiel: Verwendung der AWS CLI für die EC2-Verwaltung

Schau dir den Blog AWS EC2 Tutorial For Beginners an, um die Grundlagen von EC2 aufzufrischen! Sie hilft dir, die folgenden Befehle besser zu verstehen.

# To create an EC2 instance
aws ec2 run-instances \
    --image-id ami-0bd55ebedabddc3c0 \
    --count 1 \
    --instance-type t2.micro

AWS CLI-Ausgabe bei der Erstellung einer Instanz

Ausgabe der Erstellung einer Instanz.

Führe aws ec2 describe-instances aus, um die Details aller EC2-Instanzen anzuzeigen, wie in den grundlegenden Befehlen beschrieben.

Wenn du den Befehl ausführen willst, um eine bestimmte Instanz oder mehrere Instanzen abzufragen, füge das Flag --instance-ids mit der Instanz-ID hinzu. Zum Beispiel: aws ec2 describe-instances --instance-ids i-00836ea7575852f10.

AWS CLI-Ausgabe der Beschreibung einer Instanz

Ausgabe der Beschreibung einer Instanz.

# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

AWS CLI-Ausgabe beim Stoppen einer Instanz

Ergebnis des Anhaltens einer Instanz.

# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

AWS CLI-Ausgabe beim Starten einer Instanz

Ausgabe des Starts einer Instanz.

# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

AWS CLI-Ausgabe beim Beenden einer Instanz

Ausgang des Beendens einer Instanz.

Beispiel: Arbeiten mit S3-Buckets

Hier sind einige nützliche Befehle, um gängige Operationen mit S3-Buckets auszuführen - eine Grundvoraussetzung in AWS!

# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>

# To list out all buckets
aws s3 ls

# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>

# To delete an object from the S3 bucket
aws s3 rm <S3Uri>

# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>

# To list the objects in the bucket
aws s3 ls <S3Uri>

# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68

# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force

Beispiel "aws s3" Befehle

Ausgabe der AWS S3-Befehle.

Erweiterte AWS CLI-Funktionen

Nachdem wir nun einige grundlegende CLI-Befehle geübt haben, können wir uns einige fortgeschrittene Funktionen und Anwendungsfälle der Benutzeroberfläche ansehen.

Aufgaben mit der AWS CLI automatisieren

Die AWS CLI-Beispiele, die wir bisher behandelt haben, beinhalten einen einzigen Befehl, um Informationen zu erhalten oder eine Aktion für den Service durchzuführen. Sehen wir uns Beispiele dafür an, wie man mehrere CLI-Befehle in einem Skript zusammenfasst, um Aufgaben zu automatisieren.

Beispiel: Automatisiertes Skript zum Start einer EC2-Instanz

Erstelle eine launch_ec2.sh Datei mit dem folgenden Inhalt. 

#!/bin/bash

# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro"       # Replace with the desired instance type
REGION="ap-southeast-1"

# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
  --image-id "$AMI_ID" \
  --instance-type "$INSTANCE_TYPE" \
  --region "$REGION" \
  --query "Instances[0].InstanceId" \
  --output text)

echo "Instance launched with ID: $INSTANCE_ID"

# Add a Name tag to the instance
aws ec2 create-tags \
  --resources "$INSTANCE_ID" \
  --tags Key=Name,Value="$INSTANCE_NAME" \
  --region "$REGION"

echo "Tag added: Name=$INSTANCE_NAME"

# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."

Du kannst das Skript so anpassen, dass es weitere Parameter enthält, z. B. den Schlüsselnamen (--key-name), die Sicherheitsgruppen-ID (--security-group-ids), die Subnetz-ID (--subnet-id) usw.

# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh

# Run the script
./launch_ec2.sh

Führe das Skript launch_ec2.sh aus

Starte das EC2-Skript.

Beispiel: Automatisches Stoppen aller laufenden EC2-Instanzen

Erstelle eine stop_ec2.sh Datei mit dem folgenden Inhalt:

#!/bin/bash

# Check if a region is provided as an argument
if [ -n "$1" ]; then
  REGION="$1"
else
  # Get the default region from AWS CLI configuration
  REGION=$(aws configure get region)

  if [ -z "$REGION" ]; then
    echo "No region provided, and no default region found in AWS CLI configuration."
    echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
    exit 1
  fi
fi

echo "Using region: $REGION"

# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
  --filters Name=instance-state-name,Values=running \
  --query "Reservations[*].Instances[*].InstanceId" \
  --output text \
  --region "$REGION")

if [ -z "$RUNNING_INSTANCES" ]; then
  echo "No running EC2 instances found in region $REGION."
else
  echo "Stopping the following EC2 instances in region $REGION:"
  echo "$RUNNING_INSTANCES"
  echo "Give it around 1 minute for the instances to be stopped."
  
  # Stop the instances
  aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
  
  # Wait for the instances to stop
  aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
  
  echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh

# Run the script with the default region
./stop_all_ec2.sh

# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1

Führe das Skript stop_all_ec2.sh aus

EC2-Skript anhalten.

Verwendung der AWS CLI mit JSON und JQ

Die Ausgaben der AWS CLI-Befehle enthalten eine ganze Reihe von Informationen. In manchen Fällen brauchen wir vielleicht nicht alle Informationen, sondern nur eine Teilmenge der Ausgabe. 

Im Abschnitt "EC2" unter "Grundlegende Befehle" oben haben wir zum Beispiel gesehen, dass der Befehl aws ec2 describe-instances eine lange JSON-Ausgabe zurückgibt. Um diese Ausgabe zu analysieren und nur das zu erhalten, was benötigt wird, können wir das Flag --query oder den Befehl jq verwenden.

Beispiele für die Verwendung des Flags --query findest du in den Automatisierungsskripten im Abschnitt "Automatisieren von Aufgaben mit AWS CLI" oben. 

Beachte, dass der Befehl jq nur bei einer JSON-Ausgabe funktioniert. Konfiguriere daher die Standardausgabe als "JSON" oder übergebe das --output json Flag für jeden Befehl.

Überprüfe, ob jq installiert ist:

Erfahre die installierte Version von jq

Überprüfe die Version von jq.

# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'

# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'

# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'

Beispiel für AWS CLI-Befehle mit jq

AWS CLI-Befehle mit jq.

Verwendung der AWS CLI in einer CI/CD-Pipeline

Wir können die AWS CLI in unserer Pipeline-Konfiguration verwenden, um Interaktionen mit AWS-Services zu automatisieren, z. B. die Bereitstellung und Aktualisierung unserer AWS-Ressourcen, wenn unsere CI/CD-Pipeline läuft. 

Im folgenden Beispiel verwende ich die GitLab-Pipeline, um die Bereitstellung einer Lambda-Funktion zu demonstrieren.

# .gitlab-ci.yml file configuration
stages:
  - demo-cicd

datacamp_job:
  image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
  stage: demo-cicd
  id_tokens:
    GITLAB_OIDC_TOKEN:
      aud: https://gitlab.com
  variables:
    ROLE_ARN: "arn:aws:iam::717240872783:role/<Name of IAM Role that pipeline will use>"
    AWS_DEFAULT_REGION: "ap-southeast-1"
  script:
    - aws --version
    - >
      export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
      $(aws sts assume-role-with-web-identity
      --role-arn ${ROLE_ARN}
      --role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
      --web-identity-token ${GITLAB_OIDC_TOKEN}
      --duration-seconds 3600
      --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
      --output text))

    - aws sts get-caller-identity
    - ls -l
    - aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip

    - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

Gitlab-Pipeline-Job-Protokolle mit einem AWS CLI-Befehl

GitLab-Pipeline-Job-Protokolle.

Du kannst die Pipeline-Konfiguration so ändern, dass die Parameter zusammen mit dem AWS CLI-Befehl als Variablen im Pipeline-Job übergeben werden, anstatt sie fest zu kodieren, wie ich es im obigen Screenshot getan habe.

Auf diese Weise kannst du jedes Mal, wenn du eine Lambda-Funktion erstellen willst, die Variablen zusammen mit deiner Pipeline-Konfiguration in das Git-Repository eingeben und übertragen.

Best Practices für die Verwendung der AWS CLI

Wie bei allen Best Practices gilt auch hier, dass du nur die minimalen Berechtigungen erteilst, die für die Durchführung der Aufgabe erforderlich sind, unabhängig davon, ob du einen Benutzer oder eine Rolle verwendest. 

Lass uns weitere Best Practices für die AWS CLI untersuchen!

AWS IAM-Rollen für die Sicherheit verwenden

AWS IAM-Rollen bieten temporäre Sicherheitsanmeldeinformationen für den Zugriff auf AWS-Ressourcen. Diese Berechtigungsnachweise werden automatisch rotiert und sind auf die Berechtigungen einer bestimmten Rolle beschränkt, wodurch die mit langfristigen Zugangsschlüsseln verbundenen Risiken reduziert werden.

Der empfohlene Weg, eine Rolle zu verwenden, ist die über das IAM Identity Center erstellte Rolle, wie im Abschnitt "IAM Identity Center" unter "Einrichten von AWS-Anmeldeinformationen" oben gezeigt. Dies ist auch die von AWS empfohlene Vorgehensweise.

Screenshot von AWS über den empfohlenen Ansatz für den programmatischen Zugriff

Empfohlene Vorgehensweise von AWS. Bildquelle: AWS.

Wenn der Cloud-Administrator deinen Benutzer über das IAM Identity Center anlegt, muss er einen Berechtigungssatz zuweisen. 

Benutzer im IAM Identity Center

Benutzer im IAM Identity Center.

Für jeden Berechtigungssatz wird von AWS eine IAM-Rolle erstellt.

Berechtigungssätze im IAM Identity Center

Berechtigungssätze im IAM Identity Center.

Mehrere Profile verwalten

In deiner Arbeitsumgebung wirst du wahrscheinlich mehr als ein AWS-Konto verwalten. Wir verwenden Profile, um mehrere Sätze von Anmeldeinformationen in der ~/.aws/credentials und ~/.aws/config Datei zu konfigurieren.

Im Abschnitt "Einrichten der AWS-Anmeldedaten" haben wir den Befehl aws configure ausgeführt, ohne das Profil über das Flag --profile oder die Umgebungsvariable AWS_PROFILE anzugeben. So werden die Anmeldedaten und die Konfigurationsinformationen zum Standardprofil hinzugefügt. Um ein neues Profil hinzuzufügen, kannst du die aws configure --profile ausführen, um einen separaten Satz von Anmeldeinformationen unter dem neuen Profil zu haben.

# Create a new profile called “dev”
aws configure --profile dev

# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev

# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity

Neue Anmeldedaten unter einem neuen Profil

Neue Anmeldedaten unter einem neuen Profil.

Halte dein AWS CLI auf dem neuesten Stand

Es ist wichtig, unsere AWS CLI zu aktualisieren, um eine effektive Interaktion mit unseren AWS-Diensten zu gewährleisten und von den neuesten Funktionen und Verbesserungen zu profitieren.

Wenn du AWS CLI mit dem Installationspaket für Windows und Mac installiert hast, musstest du eine Datei auf deinen lokalen Computer herunterladen und sie ausführen. Die Aktualisierung erfolgt in den gleichen Schritten: Lade das neueste Installationspaket herunter und führe es aus. 

Wenn du AWS CLI über brew auf dem Mac installiert hast, ist die Aktualisierung so einfach wie die Ausführung von brew upgrade awscli. Ich habe hier bereits die neueste Version installiert.

brew upgrade awscli

brew upgrade awscli Befehlsausgabe.

Für Linux sind die Schritte die gleichen wie bei der Installation. Siehe das Codeschnipsel im Abschnitt "Installieren unter Linux". Folge den Befehlen, um die Zip-Datei herunterzuladen, zu entpacken und das Installationsprogramm auszuführen.

Protokollierung und Fehlerbehebung

Die AWS CLI ist ein großartiges Werkzeug, aber wir können bei der Arbeit mit ihr auch vor Herausforderungen stehen. Sehen wir uns an, wie wir sie überwinden können. 

CLI-Verlaufsprotokoll

Gelegentlich kann es vorkommen, dass wir einen Befehl und seine Parameter vergessen haben, den wir zuvor ausgeführt haben, oder dass wir die Ausgabe eines ausgeführten Befehls sehen wollen. Die Aktivierung von cli_history kann dieseBedenken ausräumen. Weitere Informationen findest du im Abschnitt "Konfigurationsoptionen" weiter oben.

CLI-Konfigurationsfehler

Wenn du auf AWS CLI-Konfigurationsfehler stößt, kannst du mit dem Befehl aws configure herausfinden, ob die CLI die Informationen aus deinen Anmeldeinformationen und der Konfigurationsdatei korrekt liest.

AWS CLI-Konfigurationsfehler

Der Fehler "Unable to parse config file".

# View configuration for the existing profile
aws configure list

# Verify credentials
aws sts get-caller-identity

# Verify configuration values
aws configure get region
aws configure get role_arn

# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS

Andere Fehler

In seltenen Fällen kann es vorkommen, dass beim Ausführen von AWS CLI-Befehlen ein unbekannter Fehler auftritt. Um das Problem mit dem API-Aufruf zu beheben oder mehr Informationen zu sammeln, um den Fehler zu verstehen, kann es hilfreich sein, das --debug Flag zum Befehl hinzuzufügen.

# Add the “--debug” flag
aws ec2 describe-instances --debug

AWS CLI-Befehl mit dem Debug-Flag

AWS CLI-Befehl mit dem Debug-Flag.

Die zusätzlichen Informationen sollten dir helfen, das Problem zu verstehen und zu beheben.

Fazit

Die AWS CLI ist ein leistungsstarkes Tool, mit dem du effizient mit AWS-Diensten interagieren, Routineaufgaben automatisieren und Cloud-Ressourcen einfach verwalten kannst. In diesem Lernprogramm habe ich dir beigebracht, wie du die AWS CLI installierst, konfigurierst und verwendest, um wichtige Vorgänge für mehrere gängige AWS-Services auszuführen.

Egal, ob du ein Cloud-Anfänger oder ein erfahrener DevOps-Profi bist, die Beherrschung der AWS CLI kann deine Produktivität erheblich steigern. Vom Erstellen und Verwalten von Ressourcen bis hin zum Automatisieren von Bereitstellungen - mit der AWS CLI in deinem Toolkit sind die Möglichkeiten praktisch unbegrenzt.

Nimm dir die Zeit, um mit den Befehlen zu experimentieren, erweiterte Skriptfunktionen in deiner Pipeline zu erkunden und die AWS CLI in deine täglichen Aufgaben zu integrieren. Viel Spaß beim Cloud Computing!

Ich empfehle dir, den AWS Cloud Practitioner Lernpfad auf DataCamp zu besuchen, um ein AWS Experte zu werden.

FAQs

Warum sollte ich AWS CLI statt der AWS Management Console verwenden?

Mit der AWS CLI kannst du direkt von deinem Terminal aus mit den AWS-Diensten interagieren und so Automatisierungsfunktionen und schnellere Arbeitsabläufe nutzen, die mit der AWS Console nicht so einfach möglich sind.

Muss ich die Prüfsumme der Datei überprüfen, nachdem ich das Installationspaket von AWS heruntergeladen habe?

Obwohl es nicht erforderlich ist, ist es eine gute Praxis, die Prüfsumme des Installationspakets zu überprüfen.

Wie kann ich überprüfen, ob AWS CLI bereits auf meinem Rechner installiert ist?

Öffne dein Terminal und führe "aws --version" aus. Wenn er "aws-cli/x.x.x..." zurückgibt, ist AWS CLI installiert. Nichtsdestotrotz ist es ratsam, auf die neueste Version zu aktualisieren.

Was sollte ich tun, wenn bei der Verwendung von AWS CLI Authentifizierungs- oder Berechtigungsfehler auftreten?

Diese Fehler treten aufgrund falscher Anmeldedaten oder unzureichender Berechtigungen auf. Überprüfe deine AWS-Zugangsschlüssel und stelle sicher, dass sie mit dem richtigen IAM-Benutzer oder der richtigen Rolle verknüpft sind und dass deine IAM-Richtlinien die erforderlichen Aktionen zulassen. Wenn du eine Rolle verwendest und das Session-Token abgelaufen ist, führe den Befehl "aws sso login" aus. Detaillierte Schritte findest du im Abschnitt "IAM Identity Center Benutzer".

Wie kann ich AWS CLI verwenden, um Ressourcen über mehrere Regionen hinweg zu verwalten?

Du kannst die AWS-Region in deinen Befehlen mit dem Flag "--region" angeben oder eine Standardregion mit dem Befehl "aws configure" festlegen. Weitere Informationen findest du im Abschnitt "Konfigurationsoptionen".


Kenny Ang's photo
Author
Kenny Ang
LinkedIn

Als erfahrener Cloud-Infrastruktur- und DevOps-Ingenieur mit Fachkenntnissen in Terraform, GitLab CI/CD-Pipelines und einer breiten Palette von AWS-Diensten ist Kenny ein Experte für die Entwicklung skalierbarer, sicherer und kostenoptimierter Cloud-Lösungen. Seine Stärken liegen im Aufbau wiederverwendbarer Infrastrukturen, in der Automatisierung von Arbeitsabläufen mit Python und Bash und in der Einbindung bewährter Sicherheitspraktiken in CI/CD-Pipelines. Mit seiner umfangreichen praktischen Erfahrung mit Kubernetes und verschiedenen Observability-Tools ist Kenny ein Experte für die Verwaltung und Orchestrierung von Microservices und stellt gleichzeitig eine robuste Observability und Leistungsüberwachung sicher. Anerkannt für seine Führungsqualitäten, sein Mentoring und sein Engagement für Innovationen, liefert Kenny stets zuverlässige und skalierbare Lösungen für moderne Cloud-native Anwendungen. Er ist bestrebt, sich über Branchentrends und neue Technologien auf dem Laufenden zu halten und seine Fähigkeiten ständig zu erweitern und zu vertiefen.

Themen

Lerne mehr über AWS mit diesen Kursen!

Kurs

AWS Cloud Technology and Services Concepts

3 hr
7K
Master AWS cloud technology with hands-on learning and practical applications in the AWS ecosystem.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen