aaws - AI-Assisted AWS CLI
aaws - AI-помощник для AWS CLI
Естественный язык на входе, команда 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 проходит через шестиэтапный конвейер. Некоторые этапы инициируются пользователем (вы их запускаете), а другие являются агентными (система обрабатывает их автономно). Это разделение — основной принцип проектирования.
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)
Используйте aaws с вашей подпиской Claude Code — никаких API-ключей, никакой настройки LLM, никаких дополнительных затрат.
Вместо того чтобы aaws вызывал LLM напрямую, Claude Code сам становится LLM. MCP-сервер aaws предоставляет классификацию рисков, выполнение команд и форматирование вывода в качестве инструментов, которые вызывает 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"]
}
}
}Проверьте с помощью /mcp внутри Claude Code, чтобы увидеть список инструментов.
Доступные инструменты MCP
Инструмент | Назначение | Нужна LLM? |
| Классификация уровня риска (0-3) для любой команды AWS CLI | Нет (статическая таблица) |
| Безопасное выполнение подпроцесса с внедрением профиля/региона | Нет |
| Определение структуры JSON -> текстовые таблицы/карточки | Нет |
| Просмотр известных уровней риска команд по сервисам | Нет |
| Проверка 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 (бесплатно) |
Перевод NL | aaws translator.py | LLM Claude Code |
Память сессии | Внутри процесса, лимит 10 шагов | Встроено в Claude Code (полный контекст) |
Многошаговые рабочие процессы | Одна команда за раз | Claude Code координирует несколько |
Интерпретация ошибок | Вызов LLM на каждую ошибку | Claude Code анализирует stderr |
Конфигурация | Требуется | Просто зарегистрируйте MCP-сервер |
Жизненный цикл облачной инженерии AWS (MCP)
Этап жизненного цикла | Автономный CLI | + MCP с Claude Code |
Обнаружение | На основе запросов | + Автономная инвентаризация, кросс-сервисы |
Подготовка | Одиночная команда | + Многошаговая с учетом зависимостей |
Мониторинг | Снимочные запросы | + Диалоговое углубление |
Устранение неполадок | Жестко закодированные + ошибки LLM | + Автономное исследование логов/метрик |
Обслуживание | Ручное удаление/изменение размера | + Агент находит отходы, предлагает оптимизацию |
Безопасность | Проброс CLI | + Аудит разрешений |
Аварийное восстановление | Одиночная команда резервного копирования | + Оркестрированные рабочие процессы DR |
Поток ценности: действия пользователя vs действия агента
Ниже приведено сопоставление каждого действия в жизненном цикле разработки и использования с тем, кто им владеет: пользователь (вручную, намеренно) или агент (автономно, без участия).
Фаза настройки
# | Действие | Владелец | Описание |
1 | Установка | Пользователь |
|
2 | Запуск мастера конфигурации | Пользователь |
|
3 | Обнаружение отсутствия конфига | Агент | Если конфига нет, выводит сообщение и завершает работу |
4 | Проверка схемы конфига | Агент | Pydantic проверяет все поля, отклоняет неверные значения |
5 | Разрешение | Агент | Подставляет значения переменных окружения в YAML |
6 | Применение переопределений | Агент | Переменные окружения переопределяют конфиг (удобно для CI/CD) |
7 | Обнаружение AWS CLI | Агент | Проверяет |
Поток одиночной команды
# | Действие | Владелец | Описание |
8 | Написание запроса на естественном языке | Пользователь |
|
9 | Разрешение профиля и региона AWS | Агент | Объединяет флаги |
10 | Создание промпта LLM с контекстом | Агент | Внедряет системный промпт + контекст профиля/региона + запрос пользователя |
11 | Вызов LLM через вызов инструментов | Агент | Отправляет структурированную схему инструментов, принудительно использует их |
12 | Проверка, что команда начинается с | Агент | Отклоняет галлюцинации, не являющиеся выводом AWS |
13 | Автоповтор при неверной команде | Агент | Отправляет корректирующую инструкцию, повторяет один раз, затем выдает ошибку |
14 | Возврат уточнения, если неоднозначно | Агент | Если запрос расплывчат, задает ОДИН уточняющий вопрос вместо угадывания |
15 | Классификация уровня риска (статическая таблица) | Агент | Поиск по префиксу среди 100+ известных шаблонов команд |
16 | Откат к уровню, назначенному LLM | Агент | Неизвестные команды используют оценку риска от LLM |
17 | Проверка защищенного профиля | Агент | Блокирует все операции записи на |
18 | Показ команды + объяснение | Агент | Отображает сгенерированную команду с объяснением на обычном языке |
19 | Подтверждение или отмена выполнения | Пользователь | Уровень 0: автозапуск. Уровень 1: y/n. Уровень 2: введите "yes". Уровень 3: отказ. |
20 | Предложение | Агент | Для деструктивных команд EC2 предлагает сначала проверить через |
21 | Выполнение через подпроцесс | Агент |
|
22 | Определение структуры вывода | Агент | Анализ JSON: список -> таблица, словарь -> карточка, пусто -> "No results." |
23 | Рендеринг отформатированного вывода | Агент | Красивые таблицы с подсказками по колонкам или JSON с подсветкой |
24 | Классификация ошибки при сбое | Агент | Regex-поиск ошибок учетных данных, разрешений, ресурсов |
25 | Предоставление жестко закодированного исправления | Агент | Истек токен -> |
26 | LLM-интерпретация ошибок ресурсов | Агент | Отправляет неудачную команду + stderr в LLM для получения инструкций |
Поток интерактивной сессии
# | Действие | Владелец | Описание |
27 | Начало сессии | Пользователь |
|
28 | Отображение заголовка сессии | Агент | Показывает активный профиль, регион, инструкции по выходу |
29 | Ввод последующих запросов | Пользователь | Диалоговый ввод с учетом предыдущего контекста |
30 | Поддержание истории диалога | Агент | Добавляет каждый обмен, ограничено 10 последними для контекста LLM |
31 | Перевод с учетом истории | Агент | LLM видит предыдущий диалог для уточнения |
32 | Полный конвейер безопасности на шаг | Агент | Каждая команда проходит через классификацию -> шлюз -> выполнение -> формат |
33 | Выход из сессии | Пользователь | Введите |
34 | Обработка Ctrl+C | Агент | Перехватывает KeyboardInterrupt, печатает "Goodbye.", без стека ошибок |
Вспомогательные потоки
# | Действие | Владелец | Описание | |
35 | Объяснение существующей команды | Пользователь |
| |
36 | LLM генерирует объяснение | Агент | Описывает, что делает команда, каждый флаг и предостережения | |
37 | Просмотр разрешенного конфига | Пользователь |
| |
38 | Использование | Пользователь | `aaws --raw "list my buckets" | jq '.Buckets[].Name'` |
39 | Использование | Пользователь | Показывает сгенерированную команду без выполнения | |
40 | Переопределение отказа уровня 3 | Пользователь |
|
CI/CD и автоматизация
# | Действие | Владелец | Описание | |
41 | Конфигурация только через переменные | Пользователь | Установите | |
42 | Передача сырого вывода в инструменты | Пользователь | `aaws --raw "..." | jq ...` для скриптового использования |
43 | Тесты при пуше (GitHub Actions) | Агент | Lint (ruff) + проверка типов (mypy) + pytest на Python 3.11-3.13 | |
44 | Публикация в PyPI при теге | Агент |
|
Установка
Шаг 1: Установка AWS CLI v2
aaws требует установленного AWS CLI в вашем PATH. Он делегирует все операции AWS команде aws.
macOS:
brew install awscliWindows:
Скачайте и запустите установщик с https://awscli.amazonaws.com/AWSCLIV2.msi
Или через 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Проверка:
aws --version
# aws-cli/2.x.x Python/3.x.x ...Шаг 2: Настройка учетных данных AWS
Вам нужен как минимум один профиль AWS с действительными учетными данными.
Вариант A: IAM Access Keys (простейший)
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'Конфигурация
Расположение файла конфигурации
|
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