Почему ваш AWS-дашборд врет, а Chaplin — нет
Вы когда-нибудь просыпались в 3 часа ночи от того, что упал RDS? Я — да. И первое, что вы делаете — лезете в CloudWatch, AWS Health Dashboard, Support Center. Смотрите на графики, читаете статусы, ищете иголку в стоге логов. Через час вы находите причину. Еще через час — фиксите. А могли бы спать.
Проблема операционных команд AWS (и моя тоже) — контекст размазан по десятку сервисов. AWS Health Dashboard показывает события, но не говорит, что делать. Trusted Advisor сыплет рекомендациями, но их надо вручную проверять. Support API дает кейсы, но их надо читать. А вам нужно быстрое решение.
И тут появляется Chaplin — open-source AI-агент, который собирает всю эту кашу в единый интерфейс и через Amazon Bedrock выдает осмысленный диагноз. Зачем ему MCP? А затем, что без протокола он не сможет дергать API AWS, смотреть дашборды и писать в Slack. MCP — это тот самый клей, который превращает LLM из болтуна в инженера.
В этой статье я расскажу, как Chaplin работает, зачем он вообще нужен, и как поднять его у себя за 15 минут. Никакой магии — только код, IAM и пара шишек.
Что такое Chaplin и почему он не очередной хайп
Chaplin — это open-source проект на GitHub, который использует Amazon Bedrock AgentCore для построения AI-агента, анализирующего здоровье AWS-аккаунта. Название — отсылка к Чарли Чаплину: агент должен быть «немым», но эффективным. Никаких лишних движений.
В отличие от коробочных решений вроде AWS Systems Manager OpsCenter, Chaplin не просто агрегирует события — он делает выводы. Например: «У вас в us-east-1 упал EC2, потому что превышен лимит инстансов. Рекомендую запросить увеличение квоты или переместить нагрузку в us-west-2». Это не тривиально.
Chaplin использует Model Context Protocol (MCP) для подключения к внешним инструментам: AWS Health API, CloudWatch, Trusted Advisor, Support API, а также к Slack и PagerDuty для оповещений. MCP — это стандарт коммуникации между LLM и инструментами, который позволяет агенту динамически выбирать, какой API дернуть и как интерпретировать результат. Подробнее про настройку MCP в Bedrock AgentCore я писал в статье про веб-поиск в AgentCore — там та же механика.
MCP — клей, который все склеивает
Давайте честно: без MCP любой AI-агент — это просто дорогой ChatGPT, который не умеет ничего делать руками. MCP решает три проблемы:
- Контекстная маршрутизация — агент понимает, что для ответа на вопрос «Что с моими инстансами?» нужно дернуть EC2 DescribeInstances, а не Support API.
- Безопасное выполнение — MCP позволяет ограничить, какие API может вызывать агент. Не хотите, чтобы он удалял production-базу? Просто не давайте ему permission на DeleteDBInstance.
- Гибкость интеграций — вы можете добавить любой кастомный инструмент, написав MCP-сервер. Например, парсер логов или вызов internal-микросервиса.
В Chaplin MCP используется для подключения к AWS Health API (через boto3) и к CloudWatch. Агент может запросить последние события здоровья, проверить метрики и даже открыть новый support-кейс, если нужно. И все это через Bedrock AgentCore, где модель (например, Claude 4 Opus или новая Sonnet 4.5) принимает решение, какой инструмент вызвать.
Кстати, если вы следите за новыми CloudWatch-метриками для Bedrock — я писал про TimeToFirstToken и EstimatedTPMQuotaUsage — они отлично подходят для мониторинга самого агента, чтобы понимать, не перегружен ли он.
Как это работает: архитектура под капотом
Архитектура Chaplin на удивление простая, и это плюс. Никаких Kubernetes-кластеров, только Lambda, Bedrock и S3 для хранения контекста.
| Компонент | Назначение |
|---|---|
| Amazon Bedrock AgentCore | Оркестрация агента, вызов LLM и инструментов |
| AWS Lambda | Функции-обработчики для каждого MCP-инструмента |
| S3 | Хранение сессионного контекста и истории диалогов |
| Chaplin Core (GitHub) | Open-source код на Python: парсеры, промпты, IAM-шаблоны |
Когда пользователь задает вопрос (например, «Что случилось в eu-west-1 за последние 2 часа?»), Bedrock AgentCore получает запрос, выбирает подходящий инструмент через MCP, вызывает соответствующую Lambda, та дергает AWS Health API (или CloudWatch), возвращает результат, и LLM формулирует понятный ответ.
Звучит логично, но есть нюанс: агент должен уметь отличать, что ему нужно вызвать Health API, а не Trusted Advisor. MCP-спецификация позволяет задавать описание каждого инструмента, и LLM использует это описание для выбора. Если описание плохое — агент тупит. Например, если вы напишете «Инструмент для получения событий здоровья» слишком обще, он может вызвать его для вопроса о квотах, хотя есть специализированный инструмент. Поэтому в Chaplin каждому инструменту дается четкое, однозначное описание.
Пошаговый гайд: поднимаем Chaplin за 15 минут
Все, что нужно — AWS-аккаунт с доступом к Bedrock (модели Claude 4 Opus или Sonnet 4.5), GitHub, и 15 минут времени. Погнали.
1 Клонируем репозиторий
git clone https://github.com/someorg/chaplin.git
cd chaplin
2 Настраиваем IAM-роли
В Chaplin есть готовый CloudFormation-шаблон iam.yaml, который создает роль для Lambda и для Bedrock AgentCore. Внимание: не используйте AdminAccess! Лучше ограничиться read-only на Health API, CloudWatch и Support. Пример политики:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"health:DescribeEvents",
"health:DescribeEventDetails",
"cloudwatch:GetMetricData",
"support:DescribeCases"
],
"Resource": "*"
}
]
}
Если вы работаете в GovCloud, рекомендую почитать мой гайд по Claude в GovCloud — там те же принципы безопасности.
3 Деплоим Lambda-функции
Chaplin использует AWS SAM для деплоя. Просто запустите:
sam build
sam deploy --guided
В процессе он спросит название S3-бакета для артефактов и регион. Выберите тот же регион, где будут работать Bedrock (обычно us-east-1 или eu-west-1).
4 Регистрируем MCP-инструменты в Bedrock
В Bedrock AgentCore нужно создать агента и добавить action groups, которые ссылаются на Lambda. В репозитории есть скрипт register_tools.py, который автоматизирует это через boto3. Убедитесь, что у вас установлен AWS CLI и настроены credentials.
python register_tools.py --profile myprofile --region us-east-1
Скрипт создаст агента, подключит MCP-серверы (Lambda) и задаст промпт-инструкцию. Промпт вы можете отредактировать под свои нужды — например, добавить требование всегда проверять регион.
5 Тестируем
Зайдите в Bedrock AgentCore в консоли, выберите своего агента и отправьте тестовое сообщение: «Покажи последние 10 событий здоровья». Должен вернуться читаемый ответ. Если нет — смотрите логи Lambda в CloudWatch. Типичная ошибка: недостаточно прав на Health API. Проверьте политику.
Типичные грабли (я на них наступил)
Поделюсь тремя ошибками, которые сломали мне пятницу.
Грабли 1: Агент вызывает не тот инструмент
Проблема: на вопрос о квотах агент вызывал Health API, а нужно было Support API. Решение: улучшить описания инструментов в MCP-манифесте. Добавить примеры запросов к каждому инструменту. В статье про smolagents я показывал аналогичный подход с промпт-примерами.
Грабли 2: Timeout Lambda
Health API иногда отвечает медленно, особенно если много событий. Lambda по умолчанию таймаут 3 секунды — увеличьте до 30. И не забудьте про estimatedTPMQuotaUsage — если превысите лимит Bedrock, агент просто зависнет. Про метрики квот я писал отдельно.
Грабли 3: Слишком дорогие запросы
Если вы используете Claude 4 Opus, каждый вызов агента может стоить $0.10-0.50. Chaplin по умолчанию запрашивает полный контекст каждый раз. Оптимизация: кэшировать ответы Health API в S3 на 5 минут, и перед вызовом инструмента проверять кэш.
Когда Chaplin не нужен (да, такое бывает)
Честно: Chaplin — не серебряная пуля. Он не нужен, если:
- У вас один-два аккаунта и вы вручную смотрите дашборды раз в день — проще открыть консоль.
- Вам нужно compliance-отчеты для аудита — для этого лучше использовать специализированные инструменты вродe автоматизации сбора доказательств через Bedrock.
- Ваша команда не готова доверять AI-агенту — культурный барьер серьезнее технического.
Но если у вас 10+ аккаунтов, множество сервисов и вы устали от алертов в 3 ночи — Chaplin реально сэкономит часы.
Прогноз: будущее AI-операций
Я вижу тренд: от мониторинга к автономному исправлению. Chaplin сейчас — это read-only агент (анализирует, но не чинит). Но MCP позволяет добавить инструменты для выполнения действий: перезапустить инстанс, изменить scaling policy, открыть support-кейс. Уже сейчас можно расширить его функционал, как это сделали в OncoAgent — мультиагентная система, где разные агенты отвечают за разные задачи.
Думаю, через год open-source AI-агенты для AWS станут стандартом де-факто в крупных компаниях. Просто потому, что это дешевле, чем держать штат инженеров, которые круглосуточно следят за дашбордами. А пока — берите Chaplin, форкайте, допиливайте под себя. И, ради всего святого, не давайте ему permission на удаление.