AWS CLI

CLI Cheat Sheet – AWS Academy

Einrichtung, häufige Befehle und Troubleshooting auf einen Blick.

Zweck der AWS CLI

Was bringt die CLI?
Mit der AWS CLI steuerst du AWS-Dienste per Terminal statt per Klick in der Konsole. Das ist schneller, reproduzierbar (Scripts) und gut automatisierbar.
Typische Einsätze
S3-Dateien kopieren/synchronisieren, EC2-Status prüfen/starten/stoppen, wiederkehrende Aufgaben in Shell-Skripte packen.

AWS Learner Lab starten & Konsole öffnen

1) Kurs öffnen
Im LMS den AWS Academy Kurs/Lab öffnen und auf Start Lab klicken.
2) Warten bis aktiv
Warte, bis der Lab-Status auf aktiv/ready wechselt.
3) AWS Details öffnen
Im Lab-Fenster rechts oben AWS Details öffnen.
4) AWS Console starten
Auf AWS Console klicken. In einem neuen Tab wird die Konsole mit temporärer Lab-Session geöffnet.

AWS CLI V2 installieren

Ubuntu / Debian
sudo apt update && sudo apt install -y awscli && aws --version
Amazon Linux 2023
sudo dnf install -y awscli && aws --version
macOS (Homebrew)
brew install awscli && aws --version
Windows
MSI-Installer von AWS installieren und danach in PowerShell prüfen: aws --version (muss mit aws-cli/2... beginnen).

~/.aws: config vs credentials

~/.aws/credentials
Enthält Zugangsdaten: aws_access_key_id, aws_secret_access_key, bei Lab-Umgebungen zusätzlich aws_session_token.
~/.aws/config
Enthält Standard-Einstellungen wie Region und Ausgabeformat (z.B. region = us-east-1, output = json).
Hinweis zu "settings"
Im AWS-CLI-Kontext heißt die Datei standardmäßig config (nicht settings).

AWS Academy CLI einrichten (bei jedem Lab-Start)

1
Credentials aus dem Portal holen
Im AWS Academy Lab rechts oben auf AWS Details klicken. Im rechten Panel bei Cloud Access → AWS CLI den kompletten Block kopieren (inkl. [default], aws_access_key_id, aws_secret_access_key, aws_session_token).
[default] aws_access_key_id=ASIAQ3H5PUC6CLXJ6ZRP aws_secret_access_key=ZqBHefXXXXXXXXXXXXXX aws_session_token=IQoJb3JpZ2luX2VjEH...
Den kompletten Block kopieren — nicht einzeln eingeben!
2
Credentials-Datei öffnen und einfügen
nano ~/.aws/credentials
Kompletten Block aus dem Portal einfügen (Strg+Shift+V im Terminal). Alten Inhalt vorher komplett löschen. Speichern: Strg+O → Enter → Strg+X
3
Config-Datei setzen (einmalig, bleibt erhalten)
nano ~/.aws/config
Folgenden Inhalt eintragen:
[default] region = us-east-1 output = json
Speichern: Strg+O → Enter → Strg+X
4
Testen
aws s3 ls
Wenn Buckets (oder eine leere Liste ohne Fehler) erscheinen → fertig ✓
aws configure nicht für Academy-Credentials nutzen! Das Tool ist für permanente IAM-Keys gedacht. Bei temporären Session-Tokens (Academy) immer die Datei direkt bearbeiten — sonst werden Token als Region eingetragen und nichts funktioniert.
ℹ Credentials laufen nach ~4 Stunden ab. Bei Fehlern wie ExpiredTokenException einfach neue Credentials aus dem Portal holen und wieder in die Datei einfügen.

Schnellcheck pro Lab-Start (AWS Academy)

1) Session aktiv?
Erst Start Lab ausführen und warten, bis AWS erreichbar ist. Ohne aktive Session funktionieren auch korrekte Keys nicht.
2) Richtigen Block kopiert?
Immer den gesamten Block aus AWS Details → AWS CLI übernehmen. Keine Zeilen weglassen und nichts manuell ergänzen.
3) Live testen
aws sts get-caller-identity && aws s3 ls
Wenn die Identität ausgegeben wird und kein Token-Fehler erscheint, ist die CLI korrekt eingerichtet.

Allgemeine CLI-Befehle

Aktuelle Identität prüfen (wer bin ich?)
aws sts get-caller-identity
Ausgabe
{"UserId": "AIDA...", "Account": "058513662140", "Arn": "arn:aws:iam::058513662140:user/..."}
AWS CLI Version prüfen
aws --version
Ausgabe
aws-cli/2.x.x Python/3.x.x Linux/...
Aktuelle Credentials anzeigen
cat ~/.aws/credentials
Hilfe zu einem Befehl
aws s3 help aws s3 cp help
Funktioniert für jeden Befehl — gibt alle Parameter und Beispiele aus.

EC2 – Instanzen via CLI

Alle Instanzen auflisten
aws ec2 describe-instances \ --query "Reservations[].Instances[].[InstanceId,State.Name,PublicIpAddress,Tags[?Key==\`Name\`].Value|[0]]" \ --output table
Ausgabe
| i-0c88f8ad5aaf7a558 | running | 3.236.250.47 | Linuxserver |
Instanz starten
aws ec2 start-instances --instance-ids i-XXXXXXXXXXXXXXXX
Instanz stoppen
aws ec2 stop-instances --instance-ids i-XXXXXXXXXXXXXXXX
Öffentliche IP einer Instanz abrufen
aws ec2 describe-instances \ --instance-ids i-XXXXXXXXXXXXXXXX \ --query "Reservations[0].Instances[0].PublicIpAddress" \ --output text

Output-Formate

JSON (Standard)
aws s3 ls --output json
Tabelle (lesbar)
aws s3 ls --output table
Text (für Scripts)
aws s3 ls --output text
Text-Format eignet sich für Shell-Scripting und grep/awk. JSON ist für alles andere am flexibelsten.

Häufige Fehler & Lösungen

ExpiredTokenException
An error occurred (ExpiredTokenException): The security token included in the request is expired.
Lösung: Neue Credentials aus AWS Academy Portal → AWS Details → AWS CLI holen und in ~/.aws/credentials einfügen.
Could not resolve hostname
ssh: Could not resolve hostname dhge1: Temporary failure in name resolution
Lösung: SSH Config falsch. Host-Alias in ~/.ssh/config prüfen — muss exakt so geschrieben sein wie im ssh-Befehl. Groß-/Kleinschreibung beachten.
Unprotected private key file
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0664 for '...' are too open.
Lösung: chmod 400 ~/.ssh/KEYNAME.pem ausführen.
Syntaxfehler bei Dateinamen mit Leerzeichen
bash: Syntaxfehler beim unerwarteten Wort »(«
Lösung: Dateinamen mit Leerzeichen oder Klammern immer in Anführungszeichen: aws s3 cp "datei (1).svg" s3://bucket/
Paths required (fehlende S3-Zieladresse)
An error occurred (ParamValidation): the following arguments are required: paths
Lösung: Bei aws s3 cp müssen immer zwei Argumente angegeben werden: Quelle UND Ziel. Z.B. aws s3 cp "datei.svg" s3://bucket/datei.svg

Wichtige CLI-Befehle (Tabelle)

Bereich Zweck Befehl Copy
Setup Version prüfen aws --version
Setup Identität prüfen aws sts get-caller-identity
Setup Credentials ansehen cat ~/.aws/credentials
S3 Buckets listen aws s3 ls
S3 Datei hochladen aws s3 cp ./datei.txt s3://BUCKET/datei.txt
S3 Datei herunterladen aws s3 cp s3://BUCKET/datei.txt ./
S3 Ordner synchronisieren aws s3 sync ./ordner s3://BUCKET/
S3 S3 -> lokal sync aws s3 sync s3://BUCKET/ ./ordner
S3 S3 -> S3 sync aws s3 sync s3://QUELLE/ s3://ZIEL/
EC2 Instanzen auflisten aws ec2 describe-instances --output table
EC2 Instanz starten aws ec2 start-instances --instance-ids i-XXXXXXXX
EC2 Instanz stoppen aws ec2 stop-instances --instance-ids i-XXXXXXXX
Hilfe Befehlshilfe öffnen aws s3 help