Skip to main content
Glama
farmountain

aaws - AI-Assisted AWS CLI

aaws - AI 기반 AWS CLI

PyPI version Python 3.11+ License: Apache 2.0

자연어를 입력하면 AWS 명령어가 출력됩니다.

pip install aaws -- pypi.org/project/aaws/

AWS 문서를 찾아보느라 문맥을 전환할 필요가 없습니다. 원하는 작업을 평이한 영어로 설명하면 aaws가 올바른 AWS CLI 명령어를 생성, 설명하고 안전하게 실행합니다.

$ 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)

목차


작동 원리

모든 aaws 호출은 6단계 파이프라인을 따릅니다. 일부 단계는 사용자 주도(사용자가 트리거)이며, 다른 단계는 에이전트 주도(시스템이 자율적으로 처리)입니다. 이러한 분리가 핵심 설계 원칙입니다.

 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 <───────

Claude Code와 함께 사용하기 (MCP)

Claude Code 구독으로 aaws를 사용하세요 — API 키, LLM 구성, 추가 비용이 전혀 없습니다.

aaws가 LLM을 직접 호출하는 대신 Claude Code가 LLM 역할을 합니다. aaws MCP 서버는 Claude Code가 호출하는 도구로서 안전 분류, 명령어 실행 및 출력 형식을 제공합니다.

 Standalone CLI:                     MCP Mode:
 User -> aaws -> LLM (you pay)      User -> Claude Code (subscription) -> aaws MCP tools
                -> AWS CLI                                               -> AWS CLI

설정

전제 조건: AWS CLI v2가 설치 및 구성되어 있어야 합니다 (위의 설치 참조).

# 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

또는 프로젝트 범위의 .mcp.json을 추가하세요 (버전 관리되며 팀과 공유 가능):

{
  "mcpServers": {
    "aaws": {
      "command": "python",
      "args": ["-m", "aaws.mcp_server"]
    }
  }
}

Claude Code 내에서 /mcp를 입력하여 도구 목록을 확인하세요.

사용 가능한 MCP 도구

도구

목적

LLM 필요 여부

classify_aws_command

모든 AWS CLI 명령어에 대한 위험 등급 분류 (0-3)

아니요 (정적 테이블)

execute_aws_command

프로필/리전 주입을 통한 안전한 하위 프로세스 실행

아니요

format_aws_output

JSON 형태 감지 -> 일반 텍스트 테이블/카드

아니요

list_safety_tiers

서비스별 알려진 명령어 위험 등급 탐색

아니요

check_aws_environment

AWS CLI, 활성 프로필, 리전 확인

아니요

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(...)

독립형 CLI와 비교하여 변경된 점

측면

독립형 CLI

MCP 모드

LLM 제공자

직접 구성 (Bedrock/OpenAI)

Claude Code 구독 (무료)

자연어 번역

aaws translator.py

Claude Code LLM

세션 메모리

프로세스 내, 10회 제한

Claude Code 내장 (전체 문맥)

다단계 워크플로우

한 번에 하나의 명령어

Claude Code가 여러 단계 조정

오류 해석

오류당 LLM 호출

Claude Code가 stderr를 추론

구성

aaws config init 필수

MCP 서버 등록만 하면 됨

AWS 클라우드 엔지니어링 수명 주기 (MCP)

수명 주기 단계

독립형 CLI

+ Claude Code와 함께 MCP 사용

탐색

쿼리 기반

+ 자율 인벤토리, 서비스 간 탐색

프로비저닝

단일 명령어

+ 의존성 순서가 있는 다단계 작업

모니터링

스냅샷 쿼리

+ 대화형 드릴다운

문제 해결

하드코딩 + LLM 오류

+ 자율 로그/메트릭 조사

유지보수

수동 삭제/크기 조정

+ 에이전트가 낭비 발견, 최적화 제안

보안

CLI 패스스루

+ 권한 감사

재해 복구

단일 명령어 백업

+ 조정된 DR 워크플로우


가치 흐름: 사용자 주도 vs 에이전트 주도 작업

다음은 개발 및 사용 수명 주기의 모든 활동을 사용자(수동, 의도적) 또는 에이전트(자율, 무터치) 중 누가 소유하는지 매핑한 것입니다.

설정 단계

#

활동

소유자

설명

1

aaws 설치

사용자

pip install aaws

2

구성 마법사 실행

사용자

aaws config init — 제공자, 모델, 프로필, 리전 선택

3

누락된 구성 감지

에이전트

구성이 없으면 실행 가능한 메시지를 출력하고 종료

4

구성 스키마 검증

에이전트

Pydantic이 모든 필드를 검증하고 잘못된 값 거부

5

구성 내 ${ENV_VAR} 해결

에이전트

YAML 값의 환경 변수 참조를 대체

6

AAWS_* 환경 재정의 적용

에이전트

환경 변수가 파일 기반 구성을 재정의 (CI/CD 친화적)

7

AWS CLI 존재 감지

에이전트

시작 시 PATH에서 aws 확인; 설치 링크와 함께 즉시 실패

단일 명령어 흐름

#

활동

소유자

설명

8

자연어 요청 작성

사용자

aaws "show my running EC2 instances"

9

AWS 프로필 + 리전 해결

에이전트

--profile/--region 플래그 > 구성 > boto3 세션 > 폴백 병합

10

문맥과 함께 LLM 프롬프트 작성

에이전트

시스템 프롬프트 + 프로필/리전 문맥 + 사용자 요청 주입

11

도구/함수 호출을 통해 LLM 호출

에이전트

구조화된 도구 스키마 전송, 도구 사용 강제 (자유 텍스트 없음)

12

명령어가 aws 로 시작하는지 검증

에이전트

환각된 비 AWS 출력 거부

13

잘못된 명령어 자동 재시도

에이전트

수정 지침 전송, 1회 재시도 후 명확한 오류와 함께 실패

14

모호할 경우 명확화 요청

에이전트

요청이 모호하면 추측하는 대신 하나의 명확화 질문을 함

15

위험 등급 분류 (정적 테이블)

에이전트

100개 이상의 알려진 명령어 패턴과 최장 접두사 일치

16

LLM 할당 등급으로 폴백

에이전트

알 수 없는 명령어는 LLM의 위험 평가 사용

17

보호된 프로필 확인

에이전트

prod-* 또는 사용자 정의 글로브 패턴에 대한 모든 쓰기 차단

18

명령어 + 설명 표시

에이전트

생성된 명령어와 평이한 영어 설명을 표시

19

실행 확인 또는 취소

사용자

등급 0: 자동 실행. 등급 1: y/n. 등급 2: "yes" 입력. 등급 3: 거부. --yes는 1-2 자동 확인

20

EC2용 --dry-run 제공

에이전트

파괴적인 EC2 명령어의 경우 --dry-run으로 먼저 검증 제안

21

하위 프로세스를 통해 실행

에이전트

shlex.split() + subprocess.run(shell=False) — 주입 불가능

22

출력 형태 감지

에이전트

JSON 검사: 리스트 -> 테이블, 딕셔너리 -> 카드, 비어있음 -> "결과 없음."

23

형식화된 출력 렌더링

에이전트

리소스 유형별 열 힌트가 있는 풍부한 테이블 또는 구문 강조 JSON

24

실패 시 오류 분류

에이전트

자격 증명, 권한, 리소스 오류에 대한 정규식 일치

25

인증을 위한 하드코딩된 수정 제공

에이전트

만료된 토큰 -> aws sso login. 자격 증명 없음 -> aws configure

26

리소스 오류에 대한 LLM 해석

에이전트

실패한 명령어 + stderr를 LLM으로 전송하여 평이한 영어 복구 단계 제공

대화형 세션 흐름

#

활동

소유자

설명

27

세션 시작

사용자

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

28

세션 헤더 표시

에이전트

활성 프로필, 리전, 종료 지침 표시

29

후속 요청 입력

사용자

이전 문맥을 참조하는 대화형 입력

30

대화 기록 유지

에이전트

각 교환을 추가하며 LLM 문맥을 위해 최근 10개로 제한

31

기록 문맥과 함께 번역

에이전트

LLM이 다단계 개선을 위해 이전 대화를 확인

32

턴당 전체 안전 파이프라인

에이전트

모든 명령어는 분류 -> 게이트 -> 실행 -> 형식화 과정을 거침

33

세션 종료

사용자

exit/quit 입력 또는 Ctrl+C

34

Ctrl+C를 우아하게 처리

에이전트

KeyboardInterrupt를 포착하여 "Goodbye." 출력, 스택 추적 없음

유틸리티 흐름

#

활동

소유자

설명

35

기존 명령어 설명

사용자

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

36

LLM이 설명 생성

에이전트

명령어가 수행하는 작업, 각 플래그 및 안전 주의 사항 설명

37

해결된 구성 보기

사용자

aaws config show — 비밀이 마스킹된 유효 구성

38

스크립팅을 위해 --raw 사용

사용자

`aaws --raw "list my buckets"

jq '.Buckets[].Name'`

39

미리보기를 위해 --dry-run 사용

사용자

실행하지 않고 생성된 명령어 표시

40

등급 3 거부 재정의

사용자

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

CI/CD 및 자동화

#

활동

소유자

설명

41

환경 변수로만 구성

사용자

AAWS_LLM_PROVIDER, AAWS_AWS_REGION 등 설정 — 구성 파일 불필요

42

원시 출력을 도구로 파이프

사용자

스크립트 소비를 위해 `aaws --raw "..."

jq ...` 사용

43

푸시 시 테스트 (GitHub Actions)

에이전트

Lint (ruff) + 유형 검사 (mypy) + Python 3.11-3.13 전반의 pytest

44

태그 시 PyPI에 게시

에이전트

hatch build + v* 태그에 대한 신뢰할 수 있는 게시


설치

1단계: AWS CLI v2 설치

aaws는 AWS CLI가 설치되어 있고 PATH에 있어야 합니다. 모든 AWS 작업을 aws 명령어에 위임합니다.

macOS:

brew install awscli

Windows:

https://awscli.amazonaws.com/AWSCLIV2.msi 에서 설치 프로그램을 다운로드하여 실행하세요.

또는 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

확인:

aws --version
# aws-cli/2.x.x Python/3.x.x ...

2단계: AWS 자격 증명 구성

유효한 자격 증명이 구성된 AWS 프로필이 하나 이상 필요합니다.

옵션 A: IAM 액세스 키 (가장 간단함)

aws configure

다음 항목을 입력하라는 메시지가 표시됩니다:

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

옵션 B: AWS SSO (조직에 권장)

aws configure sso

브라우저 로그인 흐름을 따르세요. 그런 다음 세션을 활성화하세요:

aws sso login --profile your-profile-name

옵션 C: 환경 변수 (CI/CD)

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-east-1

자격 증명이 작동하는지 확인:

aws sts get-caller-identity
# Should return your account ID, ARN, and user ID

3단계: aaws 설치

요구 사항: Python 3.11+, AWS CLI v2 (위에서 구성)

패키지는 pypi.org/project/aaws/에 게시되어 있습니다.

독립형 CLI (LLM 제공자 필요 — Bedrock 또는 OpenAI):

pip install aaws

Claude Code MCP 지원 포함 (Anthropic 구독 사용, API 키 불필요):

pip install aaws[mcp]
claude mcp add --scope user aaws -- python -m aaws.mcp_server

설치 확인:

aaws --help
aws sts get-caller-identity   # confirm AWS creds work

최신 버전으로 업그레이드

pip install --upgrade aaws

소스에서 설치 (개발)

git clone https://github.com/farmountain/ai_aws_cli.git
cd ai_aws_cli
pip install -e ".[dev,mcp]"

빠른 시작

1. 구성

aaws config init

마법사가 다음 단계를 안내합니다:

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. 첫 번째 명령어 실행

aaws "list my S3 buckets"

3. 더 많은 명령어 시도

# 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'

구성

구성 파일 위치

OS

경로

Linux/macOS

~/.config/aaws/config.yaml

Windows

%APPDATA%\aaws\config.yaml

전체 구성 참조

llm:
  provider: bedrock          # "bedrock" or "openai"
  model: anthropic.claude-3-5-haiku-20241022-v1:0
  api_key: ${OPENAI_API_KEY} # Only for OpenAI; supports ${ENV_VAR} syntax
  temperature: 0.1           # Low for deterministic output
  timeout: 30                # Seconds

aws:
  default_profile: default
  default_region: us-east-1

safety:
  auto_execute_tier: 0       # Auto-run commands at or below this tier (0=read-only)
  protected_profiles:        # Glob patterns — all writes blocked on these profiles
    - "prod-*"
    - "production"

output:
  format: auto               # "auto" detects tables/cards/JSON
  raw: false                 # true = always output raw JSON
  color: true

환경 변수 재정의

모든 구성 필드는 AAWS_ 접두사가 붙은 환경 변수로 재정의할 수 있습니다. 파일 구성이 비실용적인 CI/CD에 유용

Related MCP Connectors