FinOps агент на Amazon Bedrock AgentCore: управление затратами AWS через чат в 2026 | AiManual
AiManual Logo Ai / Manual.
31 Мар 2026 Гайд

FinOps агент на Amazon Bedrock AgentCore: когда ваш AWS счёт перестаёт быть сюрпризом

Пошаговый гайд по созданию AI-агента для анализа и оптимизации затрат AWS. Используем Bedrock AgentCore, Claude 3.7 Sonnet, Strands SDK и MCP. Актуально на март

Ваш AWS счёт снова вырос на 30%? Вы не знаете, почему

Каждый месяц одно и то же. Приходит счёт от AWS. Вы открываете его с ощущением, что играете в русскую рулетку. Иногда плюс-минус 5%. Иногда плюс 40%. Вы звоните DevOps-инженеру. Он три дня строит дашборды в Cost Explorer. Находит пару неиспользуемых EBS-томов. Сэкономили 200 долларов. А счёт всё равно на 38% выше.

Проблема не в том, что AWS дорогой. Проблема в том, что управление затратами — это отдельная работа. Работа, которую никто не хочет делать. Нужно мониторить десятки сервисов, сотни ресурсов, тысячи метрик. Сравнивать с прошлым месяцем. Искать аномалии. Проверять резервирования. А потом ещё объяснять финансистам, почему траты скачут.

FinOps пытается это исправить. Но классический FinOps — это процессы, дашборды, еженедельные встречи. Это медленно. Это бюрократия.

На 31 марта 2026 года ситуация изменилась. Появился инструмент, который делает FinOps интерактивным, мгновенным и... ленивым. Вы просто спрашиваете: «Почему вчера потратили на 15% больше?» И получаете ответ. Не дашборд. Не ссылку на документацию. Конкретный ответ: «В регионе us-east-1 запустили три инстанса m6g.2xlarge для тестирования. Они работают 14 часов. Стоимость — $127. Кто запустил? Сергей из команды разработки. Вот ссылка на CloudTrail.»

Встречайте: FinOps агент на стероидах

Я не буду рассказывать про «преимущества AI» и «революцию в управлении затратами». Вместо этого покажу, как собрать инструмент, который реально работает. Сегодня. В 2026 году.

Архитектура проста до безобразия:

  1. Amazon Bedrock AgentCore — движок для создания агентов. Последняя версия на март 2026 года поддерживает многопоточность, долгосрочную память и динамическое планирование задач.
  2. Claude 3.7 Sonnet — модель по умолчанию. Да, к 2026 году вышла новая версия. Она быстрее, дешевле и лучше понимает контекст финансовых данных.
  3. Набор инструментов (Tools): AWS Cost Explorer API, Trusted Advisor, AWS Config, CloudTrail, собственные скрипты для анализа.
  4. Model Context Protocol (MCP) — для подключения динамических источников данных: Jira, Slack, базы данных с бюджетами.
  5. Strands SDK — для создания сложных, многошаговых workflows (найти аномалию → определить причину → предложить действие).
  6. Интерфейс: Slack, Teams или просто веб-чат. Как в нашем гайде по интеграции со Slack.

Агент не просто отвечает на вопросы. Он proactive. Сам мониторит затраты. Сам пишет в канал, когда видит отклонение. Сам предлагает оптимизации. Вы спите, а он экономит ваши деньги.

1 Сначала подготовьте поле боя (инфраструктуру)

Перед тем как лезть в Bedrock, настройте IAM. Это самая важная и самая скучная часть. Если сделаете неправильно — либо агент ничего не увидит, либо увидит слишком много (и получите проблемы с безопасностью).

# finops-agent-role.yaml
# IAM роль для агента. Актуальный синтаксис CDK на 2026 год.
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  FinOpsAgentRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: 'bedrock.amazonaws.com'
            Action: 'sts:AssumeRole'
      Policies:
        - PolicyName: CostExplorerReadOnly
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'ce:GetCostAndUsage'
                  - 'ce:GetDimensionValues'
                  - 'ce:GetReservationUtilization'
                Resource: '*'
        - PolicyName: TrustedAdvisorAccess
          PolicyDocument:
            Statement:
              - Effect: Allow
                Action: 'trustedadvisor:DescribeCheckItems'
                Resource: '*'
        # Осторожно с этим! Давайте доступ только к чтению тегов.
        - PolicyName: ResourceTagging
          PolicyDocument:
            Statement:
              - Effect: Allow
                Action: 'tag:GetResources'
                Resource: '*'

Как НЕ надо делать: Не давайте агенту права на запись в IAM, удаление ресурсов или изменение конфигураций. Это FinOps агент, не автономный пентест-бот. Для безопасного создания таких агентов есть отдельное руководство по Guardrails.

2 Создаём агента в Bedrock AgentCore

Здесь всё через консоль AWS. Или через CDK, если вы любите код. В консоли Bedrock выбираете «AgentCore», «Create agent».

  • Имя: finops-agent-prod (не называйте «test» — потом забудете)
  • Модель: Claude 3.7 Sonnet (на март 2026 она самая сбалансированная по цене и качеству)
  • Instruction (самая важная часть): Не просто «ты помогаешь с затратами». Нужно конкретно.
Ты — финансовый инженер FinOps в нашей компании. Твоя задача — анализировать затраты AWS, находить аномалии, предлагать оптимизации.

Твои принципы:
1. Всегда отвечай точно, с числами и процентами.
2. Если видишь рост затрат — сразу называй сервис-виновника и регион.
3. Предлагай конкретные действия: «останови инстанс», «купи резервирование», «переключись на Graviton».
4. Ссылайся на источники данных: Cost Explorer, Trusted Advisor.
5. Если не уверен — говори «не знаю», не придумывай.
6. Для всех рекомендаций оценивай экономию в долларах в месяц.

Формат ответа:
- Краткий вывод (одно предложение)
- Данные (в виде маркированного списка)
- Рекомендации (если есть)
- Детали (ссылки на дашборды, ID ресурсов)

Почему это важно? Без четких инструкций Claude начнёт «размышлять»: «Возможно, затраты выросли из-за увеличения нагрузки... Может быть, стоит посмотреть...» Нам не нужно «возможно». Нужно «вот конкретная причина, вот конкретное действие».

3 Подключаем инструменты (Tools) — глаза и уши агента

Инструменты — это API, которые агент может вызывать. Каждый инструмент — это функция. В Bedrock AgentCore есть визуальный редактор. Но мы любим код, поэтому используем Strands SDK (последняя версия 2.1 на март 2026).

# finops_tools.py
# Пример инструмента для анализа ежедневных затрат с использованием Strands SDK
import boto3
from datetime import datetime, timedelta
from typing import Dict, Any
import json

# Инициализируем клиента Cost Explorer
ce_client = boto3.client('ce')

def get_daily_cost_spike(day_offset: int = 1) -> Dict[str, Any]:
    """
    Определяет, был ли вчера скачок затрат по сравнению со средним за неделю.
    Возвращает данные для агента.
    """
    end_date = datetime.now() - timedelta(days=day_offset)
    start_date = end_date - timedelta(days=7)
    
    # Форматируем даты для API
    end = end_date.strftime('%Y-%m-%d')
    start = start_date.strftime('%Y-%m-%d')
    
    try:
        response = ce_client.get_cost_and_usage(
            TimePeriod={'Start': start, 'End': end},
            Granularity='DAILY',
            Metrics=['UnblendedCost'],
            GroupBy=[{'Type': 'DIMENSION', 'Key': 'SERVICE'}]
        )
        
        # Обрабатываем данные: находим вчерашний день и сравниваем со средним
        # ... (логика анализа)
        
        return {
            'hasSpike': True,
            'spikePercentage': 25.5,
            'topService': 'Amazon Relational Database Service',
            'estimatedCost': '145.67',
            'recommendation': 'Проверить нагрузку на RDS. Возможно, нужно увеличить период idle shutdown.'
        }
    except Exception as e:
        return {'error': str(e)}

# Экспортируем функцию как инструмент для Strands SDK
# В реальном коде здесь будет декоратор @tool или регистрация в агенте

Стандартные инструменты, которые нужно добавить сразу:

Инструмент Для чего Критичность
GetCostByService Разбивка затрат по сервисам за период Обязательно
CheckReservedInstances Анализ использования резервирований Обязательно
GetTrustedAdvisorChecks Проверка рекомендаций по оптимизации Рекомендуется
FindUntaggedResources Поиск ресурсов без тегов (чтобы понять, кому выставить счёт) Рекомендуется

4 Добавляем контекст через Model Context Protocol (MCP)

Инструменты — это хорошо. Но они работают с AWS. А где данные о бюджетах из Excel? Где план по затратам на квартал? Где список approved instance types?

Для этого используем MCP. Это протокол, который позволяет подключать внешние источники данных как «контекст» для модели. На март 2026 года MCP поддерживается в Bedrock AgentCore нативно.

// mcp-config.json
// Конфигурация для подключения Google Sheets (где хранится бюджет) и базы данных PostgreSQL (где approved list)
{
  "sources": [
    {
      "type": "google_sheets",
      "id": "budget-2026-q2",
      "config": {
        "spreadsheetId": "ваш_ид_таблицы",
        "range": "Budget!A1:F30",
        "refreshInterval": 3600
      }
    },
    {
      "type": "postgres",
      "id": "approved-resources",
      "config": {
        "connectionString": "ваша_строка_подключения",
        "query": "SELECT service, instance_type, max_monthly_cost FROM approved_instances WHERE active = true;"
      }
    }
  ]
}

Теперь агент может отвечать так: «Вы превысили бюджет на 15% в этом месяце. Согласно вашему approved list, инстанс c6g.2xlarge не одобрен для продакшена. Рекомендую остановить или перейти на утверждённый тип.»

💡
MCP — это не только базы данных. Это также подключение к Jira (чтобы связывать затраты с задачами), Slack (чтобы узнавать, кто что запускал) и даже внутренним системам тикетов. По сути, вы даёте агенту доступ ко всем источникам знаний компании. И тогда он становится настоящим финансовым экспертом.

5 Собираем сложные сценарии со Strands SDK

Простые вопросы — это хорошо. Но FinOps — это сложные сценарии. «Проанализируй затраты на Kubernetes за последний месяц, сравни с онпремис, найди три самых дорогих неймспейса и предложи оптимизацию для каждого.»

Один инструмент с этим не справится. Нужен workflow. Для этого используем Strands SDK — фреймворк для создания многошаговых агентов внутри Bedrock AgentCore.

# advanced_analysis_strand.py
# Пример Strand для глубокого анализа затрат на EKS
from strands_sdk import Strand, step
from typing import List
import asyncio

class EksCostOptimizationStrand(Strand):
    """
    Многошаговый анализ затрат на EKS кластер.
    Strands SDK позволяет разбить сложную задачу на шаги, 
    каждый из которых может использовать разные инструменты и даже вызывать других агентов.
    """
    
    @step
    async def get_eks_clusters(self) -> List[str]:
        # Шаг 1: Получить список всех EKS кластеров
        # Использует AWS SDK
        clusters = await self.call_tool('ListEKSClusters')
        return clusters['clusterNames']
    
    @step
    async def get_cost_per_cluster(self, cluster_name: str) -> dict:
        # Шаг 2: Для каждого кластера получить затраты через Cost Explorer с тегом 'kubernetes-cluster'
        cost_data = await self.call_tool(
            'GetCostByTag', 
            tagKey='kubernetes-cluster', 
            tagValue=cluster_name,
            timePeriod='LAST_MONTH'
        )
        return {'cluster': cluster_name, 'cost': cost_data}
    
    @step
    async def analyze_namespaces(self, cluster_name: str) -> dict:
        # Шаг 3: Использовать инструмент для анализа метрик CloudWatch и Kubecost (если подключен)
        namespace_metrics = await self.call_tool(
            'GetNamespaceMetrics',
            cluster=cluster_name
        )
        return namespace_metrics
    
    @step
    async def generate_recommendations(self, cost_data: dict, metrics: dict) -> str:
        # Шаг 4: Генерация финального отчёта с рекомендациями
        # Здесь модель Claude анализирует собранные данные и формулирует вывод
        analysis_prompt = f"""
        Вот данные по затратам кластера {cost_data['cluster']}:
        Затраты: ${cost_data['cost']}
        Метрики по неймспейсам: {metrics}
        
        Сформулируй три конкретные рекомендации по оптимизации.
        """
        
        recommendations = await self.call_model(analysis_prompt)
        return recommendations

# Регистрируем Strand в агенте
# В реальном коде будет отдельный процесс регистрации

Теперь в чате можно просто написать: «/analyze-eks-costs». Агент запустит этот Strand, пройдёт все шаги и через минуту выдаст развёрнутый отчёт.

Развертывание и подводные камни

Собрать агента — полдела. Заставить его работать стабильно — это искусство.

Используйте AWS CDK для развертывания. Не делайте всё вручную в консоли. Через полгода забудете, как это настроено. Код — документация. Возьмите за основу FAST шаблон (Fullstack AgentCore Solution Template). Он уже включает мониторинг, логирование и CI/CD.

Что обязательно нужно сделать:

  • Включите CloudWatch метрики агента. Особенно TimeToFirstToken и EstimatedTPMQuotaUsage. Как их настроить — в отдельной статье. Если агент начнёт тормозить, вы сразу увидите.
  • Настройте SNS уведомления для критических событий: «Превышен месячный бюджет», «Обнаружен неиспользуемый RDS > 100 ГБ».
  • Протестируйте с реальными вопросами. Не «сколько потратили?», а «почему вчерашние затраты на S3 в регионе eu-west-1 были на 200% выше среднего?».

Типичные ошибки:
1. Слишком много прав у агента. Он FinOps, ему не нужен доступ к секретам в Secrets Manager.
2. Слишком сложные инструкции. Claude запутается. Пишите конкретно, как для стажёра.
3. Нет fallback. Если Cost Explorer не отвечает, агент должен сказать «сервис временно недоступен», а не молчать или генерировать ошибку.
4. Забыли про стоимость самого агента. Bedrock AgentCore, вызовы моделей, Strands — это тоже деньги. Настройте бюджет и на это.

Что дальше? Агент вырос и хочет большего

Через месяц ваш FinOps агент станет незаменимым. Команды разработки будут спрашивать у него, сколько стоит их новый микросервис. Финансовый отдел — строить прогнозы. Менеджеры — готовить отчёты для руководства.

Самое время расширять функциональность. Добавьте:

  • Мультиагентную систему для управления контрактами с облачными провайдерами. Как в этом кейсе.
  • Автоматические действия (с подтверждением!). Например, агент находит инстанс, который работает 720 часов в месяц, но загрузка CPU 1%. Он предлагает: «Остановить? [Да/Нет]». Вы говорите «Да» — агент останавливает инстанс и помечает его для последующего удаления.
  • Интеграцию с процессом закупок. Агент видит, что через месяц истекает резервирование. Сам создаёт тикет в Jira для продления. Прикрепляет расчёт экономии.

Главное — помните: этот агент не заменит FinOps инженера. Он заменит рутинную, скучную, однообразную работу. Освободит время для настоящей оптимизации: архитектурной, процессной, стратегической.

А следующий шаг? Агент, который не только анализирует затраты, но и самостоятельно проводит security-аудит ресурсов. Но это уже другая история, близкая к пентесту.

Подписаться на канал