Skip to main content
Glama
farmountain

aaws - AI-Assisted AWS CLI

aaws - KI-gestützte AWS CLI

PyPI version Python 3.11+ License: Apache 2.0

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 CLI

Einrichtung

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_server

Oder 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?

classify_aws_command

Risikoklassen-Klassifizierung (0-3) für jeden AWS CLI-Befehl

Nein (statische Tabelle)

execute_aws_command

Sichere Subprozess-Ausführung mit Profil-/Region-Injektion

Nein

format_aws_output

JSON-Formerkennung -> Klartext-Tabellen/Karten

Nein

list_safety_tiers

Durchsuchen bekannter Befehls-Risikoklassen nach Dienst

Nein

check_aws_environment

Ü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

aaws config init erforderlich

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

aaws installieren

Benutzer

pip install aaws

2

Konfigurationsassistent ausführen

Benutzer

aaws config init — Anbieter, Modell, Profil, Region wählen

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

${ENV_VAR} in Konfiguration auflösen

Agent

Ersetzt Umgebungsvariablen-Referenzen in YAML-Werten

6

AAWS_* Env-Overrides anwenden

Agent

Umgebungsvariablen überschreiben dateibasierte Konfiguration (CI/CD-freundlich)

7

AWS CLI-Präsenz erkennen

Agent

Prüft aws im PATH beim Start; bricht bei fehlender Installation mit Link ab

Einmaliger Befehlsablauf

#

Aktivität

Eigentümer

Beschreibung

8

Anfrage in natürlicher Sprache schreiben

Benutzer

aaws "show my running EC2 instances"

9

AWS-Profil + Region auflösen

Agent

Führt --profile/--region Flags > Konfiguration > boto3-Sitzung > Fallback zusammen

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 aws beginnt

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 prod-* oder benutzerdefinierte Glob-Muster

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. --yes bestätigt 1-2 automatisch

20

--dry-run für EC2 anbieten

Agent

Für destruktive EC2-Befehle wird angeboten, zuerst mit --dry-run zu validieren

21

Ausführung via Subprozess

Agent

shlex.split() + subprocess.run(shell=False) — keine Injektion möglich

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 -> aws sso login. Keine Anmeldedaten -> aws configure

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

aaws session [--profile X] [--region Y]

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

exit/quit eingeben oder Strg+C

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

aaws explain "aws ec2 describe-instances --filters ..."

36

LLM generiert Erklärung

Agent

Beschreibt, was der Befehl tut, jedes Flag und Sicherheitswarnungen

37

Aufgelöste Konfiguration anzeigen

Benutzer

aaws config show — effektive Konfiguration mit maskierten Geheimnissen

38

--raw für Skripte verwenden

Benutzer

`aaws --raw "list my buckets"

jq '.Buckets[].Name'`

39

--dry-run zur Vorschau verwenden

Benutzer

Zeigt generierten Befehl ohne Ausführung

40

Stufe-3-Verweigerung überschreiben

Benutzer

aaws --i-accept-responsibility "delete all IAM users"

CI/CD und Automatisierung

#

Aktivität

Eigentümer

Beschreibung

41

Nur via Umgebungsvariablen konfigurieren

Benutzer

AAWS_LLM_PROVIDER, AAWS_AWS_REGION etc. setzen — keine Konfigurationsdatei nötig

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

hatch build + vertrauenswürdige Veröffentlichung bei v*-Tags


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 awscli

Windows:

Laden Sie den Installer von https://awscli.amazonaws.com/AWSCLIV2.msi herunter und führen Sie ihn aus.

Oder via winget:

winget install Amazon.AWSCLI

Linux (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 configure

Sie 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]: json

Option B: AWS SSO (empfohlen für Organisationen)

aws configure sso

Folgen Sie dem Browser-Login-Ablauf. Aktivieren Sie dann die Sitzung:

aws sso login --profile your-profile-name

Option 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 ID

Schritt 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 aaws

Mit 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 work

Auf die neueste Version aktualisieren

pip install --upgrade aaws

Aus 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 init

Der 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