AWS Bedrock как LLM-провайдер: от OpenAI fallback до Claude + Nova Pro
Один SDK вместо двух библиотек. IAM вместо API-ключей. Данные в ЕС вместо США. Единый биллинг вместо двух инвойсов. Вот как мы перевели весь fallback-слой на AWS Bedrock — и почему это изменило больше, чем мы ожидали.
AWS Bedrock как LLM-провайдер: от OpenAI fallback до Claude + Nova Pro
Как один PR изменил архитектуру fallback-слоя и почему API-ключи — это вчерашний день
Проблема: два API-ключа, два биллинга, ноль гарантий
LEX AI обрабатывает тысячи юридических запросов ежедневно. Каждый запрос — это вызов LLM: классификация намерения, поиск по базе, анализ решения суда, генерация ответа. Когда OpenAI ложится (а это случается чаще, чем хотелось бы), платформа должна продолжать работать.
Раньше мы использовали Anthropic API как fallback-провайдер. Это работало, но создавало ряд проблем:
| Проблема | Последствие |
|---|---|
| Два отдельных API-ключа | Ротация секретов x 2, риск утечки x 2 |
| Два биллинга | Ежемесячная сверка двух инвойсов, невозможность Reserved Capacity |
| Данные летят в США | Anthropic API не гарантирует EU-резидентность |
| Rate limits на уровне ключа | При всплеске нагрузки fallback тоже ограничен |
| Round-robin провалился | Мы уже писали об этом — разные форматы ответов ломали парсинг |
Нам нужен был единый fallback-провайдер, который даёт доступ к нескольким моделям через один SDK, с IAM-авторизацией и данными в пределах ЕС.
Решение: AWS Bedrock
AWS Bedrock — это managed-сервис, который предоставляет доступ к моделям разных вендоров через единый API. Один SDK, одна авторизация (IAM), один биллинг, выбор региона.
Через Bedrock мы получили доступ сразу к двум семействам моделей:
- Claude (Anthropic) — через Bedrock, без отдельного API-ключа
- Amazon Nova — собственные модели AWS, оптимизированные под цену
Budget-aware модельные тиры
Наш ModelSelector уже поддерживал три тира производительности. Мы просто заменили fallback-модели:
| Тир | Назначение | Primary (OpenAI) | Fallback (Bedrock) |
|---|---|---|---|
quick |
Классификация, роутинг | gpt-5-nano | Amazon Nova Micro |
standard |
Выполнение тулов, суммаризация | gpt-5-mini | Amazon Nova Lite |
deep |
Юридический анализ, паттерны | gpt-5.1 | Amazon Nova Pro |
Nova Micro и Nova Lite закрывают дешёвые задачи, а Nova Pro — полноценная альтернатива для сложного анализа. Claude через Bedrock остаётся доступным для случаев, где нужно именно его качество reasoning.
Миграция: что изменилось в коде
До: два клиента, два формата
// Было: прямое подключение к Anthropic API
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY, // ещё один секрет
});
После: единый AWS SDK
// Стало: Bedrock через AWS SDK
import {
BedrockRuntimeClient,
ConverseCommand,
} from '@aws-sdk/client-bedrock-runtime';
const bedrock = new BedrockRuntimeClient({
region: 'eu-central-1', // данные остаются в ЕС
// IAM авторизация — никаких API-ключей
});
Ключевое изменение — Converse API. Это унифицированный интерфейс Bedrock, который принимает одинаковый формат сообщений независимо от модели. Тот же код работает и для Nova Pro, и для Claude через Bedrock. Никакого парсинга разных форматов — проблема, которая убила наш round-robin.
Авторизация: IAM вместо API-ключей
Это, пожалуй, самый большой выигрыш. Вместо хранения ANTHROPIC_API_KEY в .env-файлах на каждом сервере, мы используем IAM-роль EC2-инстанса:
{
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": "arn:aws:bedrock:eu-central-1::foundation-model/*"
}
Никаких секретов в переменных окружения. Никакой ротации ключей. Credentials берутся автоматически из Instance Metadata Service. Одним вектором атаки меньше.
Результаты
| Метрика | До (Anthropic API) | После (Bedrock) | Изменение |
|---|---|---|---|
| Fallback latency (p50) | 1.8s | 1.2s | -33% |
| Fallback latency (p99) | 8.4s | 4.1s | -51% |
| Стоимость fallback-запросов | $0.018/запрос | $0.011/запрос | -39% |
| Секретов в .env | 4 (2 OpenAI + 2 Anthropic) | 2 (только OpenAI) | -50% |
| Данные в EU | Не гарантировано | eu-central-1 | Гарантировано |
Снижение latency объясняется двумя факторами: EC2 -> Bedrock — это трафик внутри AWS-региона (без выхода в интернет), а Nova Pro просто быстрее Claude для типичных юридических задач.
Provisioned Throughput: следующий шаг
Bedrock позволяет купить Provisioned Throughput — гарантированную пропускную способность для конкретной модели. Для нас это значит:
- Предсказуемая стоимость: фиксированная цена вместо pay-per-token
- Гарантированный SLA: никаких 429 (rate limit) при всплеске нагрузки
- Планирование бюджета: ежемесячная сумма известна заранее
Мы планируем активировать Provisioned Throughput для Nova Pro на deep-тире, где предсказуемость важнее всего — юридический анализ не может ждать в очереди.
Выводы
Один PR, но архитектурное изменение ощутимо:
- IAM вместо API-ключей — меньше секретов, меньше риска
- EU data residency — данные не покидают eu-central-1
- Единый биллинг — AWS Cost Explorer вместо двух инвойсов
- Converse API — один формат для всех моделей
- Nova Pro — более дешёвый и быстрый fallback для юридического анализа
Если ваша платформа использует несколько LLM-провайдеров и вы устали от зоопарка API-ключей — посмотрите на Bedrock. Это не серебряная пуля, но для fallback-сценария это самое элегантное решение, которое мы нашли.