aaws - AI-Assisted AWS CLI
aaws - KI-gestützte AWS CLI
Natürliche Sprache rein, AWS-Befehl raus.
pip install aaws -- pypi.org/project/aaws/
Schluss mit dem Kontextwechsel zu AWS-Dokumenten. Beschreiben Sie in einfachem Englisch, was Sie möchten, und aaws generiert, erklärt und führt den korrekten AWS CLI-Befehl sicher aus.
$ aaws "list my S3 buckets"
Command: aws s3api list-buckets --output json
Lists all S3 buckets in your account.
Name CreationDate
my-app-assets 2024-03-15T10:22:00+00:00
my-logs-bucket 2024-06-01T08:00:00+00:00
staging-uploads 2025-01-10T14:30:00+00:00
3 result(s)Inhaltsverzeichnis
Wie es funktioniert
Jeder aaws-Aufruf folgt einer Pipeline mit sechs Stufen. Einige Stufen sind benutzerinitiiert (Sie lösen sie aus), andere sind agentisch (das System erledigt sie autonom). Diese Trennung ist das grundlegende Designprinzip.
YOU aaws (AGENT)
─── ────────────
Type natural language ──────────> LLM translates to AWS CLI command
Agent classifies risk tier (0-3)
Agent selects safety gate
Review command + confirm ───────> Agent executes via subprocess
Agent detects output shape
Agent formats as table/card/JSON
Read formatted results <────────
(on error) Agent classifies error
(on error) Agent generates recovery advice
Read error + suggestion <───────Verwendung mit Claude Code (MCP)
Verwenden Sie aaws mit Ihrem Claude Code-Abonnement – keine API-Schlüssel, keine LLM-Konfiguration, null zusätzliche Kosten.
Anstatt dass aaws direkt ein LLM aufruft, wird Claude Code zum LLM. Der aaws MCP-Server stellt Sicherheitsklassifizierung, Befehlsausführung und Ausgabeformatierung als Werkzeuge bereit, die von Claude Code aufgerufen werden.
Standalone CLI: MCP Mode:
User -> aaws -> LLM (you pay) User -> Claude Code (subscription) -> aaws MCP tools
-> AWS CLI -> AWS CLIEinrichtung
Voraussetzung: Die AWS CLI v2 muss installiert und konfiguriert sein (siehe Installation oben).
# Install with MCP support
pip install aaws[mcp]
# Register with Claude Code (one-time)
claude mcp add --scope user aaws -- python -m aaws.mcp_serverOder fügen Sie eine projektbezogene .mcp.json hinzu (versionskontrolliert, für das Team freigegeben):
{
"mcpServers": {
"aaws": {
"command": "python",
"args": ["-m", "aaws.mcp_server"]
}
}
}Überprüfen Sie mit /mcp innerhalb von Claude Code, ob die Werkzeuge aufgelistet sind.
Verfügbare MCP-Werkzeuge
Werkzeug | Zweck | LLM erforderlich? |
| Risikoklassen-Klassifizierung (0-3) für jeden AWS CLI-Befehl | Nein (statische Tabelle) |
| Sichere Subprozess-Ausführung mit Profil-/Region-Injektion | Nein |
| JSON-Formerkennung -> Klartext-Tabellen/Karten | Nein |
| Durchsuchen bekannter Befehls-Risikoklassen nach Dienst | Nein |
| Überprüfung von AWS CLI, aktivem Profil, Region | Nein |
Beispielkonversation in Claude Code
You: List my S3 buckets in us-west-2
Claude Code:
1. Calls check_aws_environment() -> {aws_cli_available: true, active_profile: "default"}
2. Calls classify_aws_command("aws s3api list-buckets --output json")
-> {tier: 0, tier_label: "Read-only", should_confirm: false}
3. Calls execute_aws_command("aws s3api list-buckets --output json", region="us-west-2")
-> {stdout: '{"Buckets": [...]}', success: true}
4. Calls format_aws_output(stdout)
-> Formatted table with bucket names and dates
You: Now delete the one named old-logs
Claude Code:
1. Calls classify_aws_command("aws s3 rb s3://old-logs --force")
-> {tier: 2, tier_label: "Destructive", should_confirm: true}
2. Asks: "This is a destructive operation (tier 2). Delete bucket old-logs?"
3. You confirm
4. Calls execute_aws_command(...)Was ändert sich gegenüber der eigenständigen CLI
Aspekt | Eigenständige CLI | MCP-Modus |
LLM-Anbieter | Sie konfigurieren (Bedrock/OpenAI) | Claude Code-Abonnement (kostenlos) |
NL-Übersetzung | aaws translator.py | Claude Code LLM |
Sitzungsspeicher | In-Prozess, 10-Turn-Limit | Claude Code integriert (voller Kontext) |
Mehrstufige Workflows | Ein Befehl nach dem anderen | Claude Code orchestriert mehrere |
Fehlerinterpretation | LLM-Aufruf pro Fehler | Claude Code analysiert stderr |
Konfiguration |
| Einfach MCP-Server registrieren |
AWS Cloud Engineering Lifecycle (MCP)
Lebenszyklus-Phase | Eigenständige CLI | + MCP mit Claude Code |
Erkennung | Abfragebasiert | + Autonome Inventarisierung, dienstübergreifend |
Bereitstellung | Einzelbefehl | + Mehrstufig mit Abhängigkeitsreihenfolge |
Überwachung | Snapshot-Abfragen | + Konversationsbasiertes Drill-down |
Fehlerbehebung | Hardcodiert + LLM-Fehler | + Autonome Log-/Metrik-Untersuchung |
Wartung | Manuelles Löschen/Ändern | + Agent findet Verschwendung, schlägt Optimierung vor |
Sicherheit | CLI-Durchleitung | + Berechtigungsprüfung |
Notfallwiederherstellung | Einzelbefehl-Backup | + Orchestrierte DR-Workflows |
Wertstrom: Benutzerinitiierte vs. agentische Aktionen
Das Folgende ordnet jede Aktivität im Entwicklungs- und Nutzungslebenszyklus dem Eigentümer zu: dem Benutzer (manuell, absichtlich) oder dem Agenten (autonom, ohne Eingreifen).
Einrichtungsphase
# | Aktivität | Eigentümer | Beschreibung |
1 |
| Benutzer |
|
2 | Konfigurationsassistent ausführen | Benutzer |
|
3 | Fehlende Konfiguration erkennen | Agent | Wenn keine Konfiguration existiert, wird eine hilfreiche Nachricht ausgegeben und beendet |
4 | Konfigurationsschema validieren | Agent | Pydantic validiert alle Felder, lehnt falsche Werte ab |
5 |
| Agent | Ersetzt Umgebungsvariablen-Referenzen in YAML-Werten |
6 |
| Agent | Umgebungsvariablen überschreiben dateibasierte Konfiguration (CI/CD-freundlich) |
7 | AWS CLI-Präsenz erkennen | Agent | Prüft |
Einmaliger Befehlsablauf
# | Aktivität | Eigentümer | Beschreibung |
8 | Anfrage in natürlicher Sprache schreiben | Benutzer |
|
9 | AWS-Profil + Region auflösen | Agent | Führt |
10 | LLM-Prompt mit Kontext erstellen | Agent | Injiziert System-Prompt + Profil-/Region-Kontext + Benutzeranfrage |
11 | LLM via Tool/Funktionsaufruf aufrufen | Agent | Sendet strukturiertes Tool-Schema, erzwingt Tool-Nutzung (kein Freitext) |
12 | Validieren, dass Befehl mit | Agent | Lehnt halluzinierte Nicht-AWS-Ausgabe ab |
13 | Automatischer Wiederholungsversuch bei ungültigem Befehl | Agent | Sendet korrigierende Anweisung, versucht es einmal erneut, dann Fehler mit klarer Meldung |
14 | Klärung bei Mehrdeutigkeit zurückgeben | Agent | Wenn Anfrage vage ist, wird EINE klärende Frage gestellt, statt zu raten |
15 | Risikoklasse klassifizieren (statische Tabelle) | Agent | Longest-Prefix-Match gegen 100+ bekannte Befehlsmuster |
16 | Fallback auf LLM-zugewiesene Klasse | Agent | Unbekannte Befehle nutzen die Risikobewertung des LLM |
17 | Geschütztes Profil prüfen | Agent | Blockiert alle Schreibvorgänge auf |
18 | Befehl + Erklärung anzeigen | Agent | Zeigt den generierten Befehl mit Erklärung in einfachem Englisch |
19 | Ausführung bestätigen oder abbrechen | Benutzer | Stufe 0: Auto-Ausführung. Stufe 1: j/n. Stufe 2: "yes" eingeben. Stufe 3: verweigert. |
20 |
| Agent | Für destruktive EC2-Befehle wird angeboten, zuerst mit |
21 | Ausführung via Subprozess | Agent |
|
22 | Ausgabeform erkennen | Agent | Prüft JSON: Liste -> Tabelle, Dict -> Karte, leer -> "Keine Ergebnisse." |
23 | Formatierte Ausgabe rendern | Agent | Umfangreiche Tabellen mit Spaltenhinweisen pro Ressourcentyp oder syntax-hervorgehobenes JSON |
24 | Fehler bei Fehlschlag klassifizieren | Agent | Regex-Abgleich für Anmelde-, Berechtigungs-, Ressourcenfehler |
25 | Hardcodierte Korrektur für Auth bereitstellen | Agent | Abgelaufenes Token -> |
26 | Ressourcenfehler durch LLM interpretieren | Agent | Sendet fehlgeschlagenen Befehl + stderr an LLM für Wiederherstellungsschritte in einfachem Englisch |
Interaktiver Sitzungsablauf
# | Aktivität | Eigentümer | Beschreibung |
27 | Sitzung starten | Benutzer |
|
28 | Sitzungs-Header anzeigen | Agent | Zeigt aktives Profil, Region, Beendigungsanweisungen |
29 | Folgeanfragen eingeben | Benutzer | Konversationsbasierte Eingabe unter Bezugnahme auf vorherigen Kontext |
30 | Konversationsverlauf beibehalten | Agent | Hängt jeden Austausch an, begrenzt auf die letzten 10 für LLM-Kontext |
31 | Mit Verlaufskontext übersetzen | Agent | LLM sieht vorherige Konversation für mehrstufige Verfeinerung |
32 | Vollständige Sicherheitspipeline pro Turn | Agent | Jeder Befehl durchläuft Klassifizierung -> Gate -> Ausführung -> Formatierung |
33 | Sitzung beenden | Benutzer |
|
34 | Strg+C elegant handhaben | Agent | Fängt KeyboardInterrupt ab, gibt "Goodbye." aus, kein Stack-Trace |
Hilfsabläufe
# | Aktivität | Eigentümer | Beschreibung | |
35 | Bestehenden Befehl erklären | Benutzer |
| |
36 | LLM generiert Erklärung | Agent | Beschreibt, was der Befehl tut, jedes Flag und Sicherheitswarnungen | |
37 | Aufgelöste Konfiguration anzeigen | Benutzer |
| |
38 |
| Benutzer | `aaws --raw "list my buckets" | jq '.Buckets[].Name'` |
39 |
| Benutzer | Zeigt generierten Befehl ohne Ausführung | |
40 | Stufe-3-Verweigerung überschreiben | Benutzer |
|
CI/CD und Automatisierung
# | Aktivität | Eigentümer | Beschreibung | |
41 | Nur via Umgebungsvariablen konfigurieren | Benutzer |
| |
42 | Rohausgabe an Werkzeuge weiterleiten | Benutzer | `aaws --raw "..." | jq ...` für skriptbasierte Nutzung |
43 | Tests bei Push (GitHub Actions) | Agent | Lint (ruff) + Typ-Check (mypy) + pytest über Python 3.11-3.13 | |
44 | Veröffentlichung auf PyPI bei Tag | Agent |
|
Installation
Schritt 1: AWS CLI v2 installieren
aaws erfordert, dass die AWS CLI installiert ist und sich in Ihrem PATH befindet. Es delegiert alle AWS-Operationen an den aws-Befehl.
macOS:
brew install awscliWindows:
Laden Sie den Installer von https://awscli.amazonaws.com/AWSCLIV2.msi herunter und führen Sie ihn aus.
Oder via winget:
winget install Amazon.AWSCLILinux (x86_64):
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/installÜberprüfen:
aws --version
# aws-cli/2.x.x Python/3.x.x ...Schritt 2: AWS-Anmeldedaten konfigurieren
Sie benötigen mindestens ein AWS-Profil, das mit gültigen Anmeldedaten konfiguriert ist.
Option A: IAM-Zugriffsschlüssel (am einfachsten)
aws configureSie werden nach Folgendem gefragt:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: jsonOption B: AWS SSO (empfohlen für Organisationen)
aws configure ssoFolgen Sie dem Browser-Login-Ablauf. Aktivieren Sie dann die Sitzung:
aws sso login --profile your-profile-nameOption C: Umgebungsvariablen (CI/CD)
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-east-1Überprüfen, ob Anmeldedaten funktionieren:
aws sts get-caller-identity
# Should return your account ID, ARN, and user IDSchritt 3: aaws installieren
Anforderungen: Python 3.11+, AWS CLI v2 (oben konfiguriert)
Das Paket ist unter pypi.org/project/aaws/ veröffentlicht.
Eigenständige CLI (benötigt einen LLM-Anbieter — Bedrock oder OpenAI):
pip install aawsMit Claude Code MCP-Unterstützung (nutzen Sie Ihr Anthropic-Abonnement, kein API-Schlüssel erforderlich):
pip install aaws[mcp]
claude mcp add --scope user aaws -- python -m aaws.mcp_serverÜberprüfen Sie die Installation:
aaws --help
aws sts get-caller-identity # confirm AWS creds workAuf die neueste Version aktualisieren
pip install --upgrade aawsAus Quellcode installieren (Entwicklung)
git clone https://github.com/farmountain/ai_aws_cli.git
cd ai_aws_cli
pip install -e ".[dev,mcp]"Schnellstart
1. Konfigurieren
aaws config initDer Assistent führt Sie durch:
aaws configuration wizard
LLM provider [bedrock/openai] (bedrock):
Bedrock model ID (anthropic.claude-3-5-haiku-20241022-v1:0):
Default AWS profile (default):
Default AWS region (us-east-1):
Configuration saved to ~/.config/aaws/config.yaml
Run aaws "list my S3 buckets" to test.2. Ihren ersten Befehl ausführen
aaws "list my S3 buckets"3. Weitere Befehle ausprobieren
# Read-only (auto-executes, no confirmation)
aaws "show my running EC2 instances in us-west-2"
aaws "how many Lambda functions do I have"
aaws "get the details of my RDS database named prod-db"
# Write operations (asks y/n)
aaws "create an S3 bucket named my-new-bucket in us-east-1"
aaws "tag instance i-abc123 with Environment=staging"
# Preview without executing
aaws --dry-run "terminate instance i-abc123"
# Explain an existing command
aaws explain "aws iam attach-role-policy --role-name MyRole --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess"
# Raw output for scripting
aaws --raw "list my S3 buckets" | jq '.Buckets[].Name'Konfiguration
Speicherort der Konfigurationsdatei
Betriebssystem | Pfad |
Linux/macOS | `~/.config/aaws/config. |
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
An MCP server that gives your AI access to the source code and docs of all public github repos