Раздавать API-ключи разработчикам — это как дать каждому ключи от сейфа и надеяться, что они не будут брать лишнего. Рано или поздно кто-то вызовет дорогую модель с бесконечным промптом, и вы узнаете, сколько может стоить месяц работы Claude Opus. Claude Apps Gateway — это прокси-сервис от Anthropic, который встаёт между вашей инфраструктурой и клиентами вроде Claude Code или Claude Desktop, и берёт на себя маршрутизацию, авторизацию и контроль лимитов. В этой статье я разберу, как поднять такой шлюз в AWS с использованием PostgreSQL и stateless контейнера, чтобы ваша команда работала с AI не вслепую.
Что нового? В июне 2026 года Anthropic выпустила версию 2.1 Claude Apps Gateway, которая добавила нативную поддержку Amazon Bedrock в качестве backend, а также динамическое обновление policies без перезапуска контейнера. В обзоре я буду опираться именно на эту версию.
Почему это не очередной прокси, а смена парадигмы
Когда я впервые увидел демо, меня зацепила не техническая часть (хотя она крутая), а сама идея: вместо того чтобы каждый разработчик конфигурировал свой Claude Code вручную (выставлял регион, модель, лимиты), всё это выносится в единый шлюз. Разработчик просто указывает URL шлюза, а всё остальное — авторизация через IAM, выбор модели на основе тэгов, логирование каждого запроса — происходит автоматически.
Реальность без шлюза: в одном стартапе разработчики использовали прямой доступ к Bedrock с разными ролями. После того как джуниор случайно запустил кластеризацию 100 тысяч документов через Claude Opus, пришёл счёт на $12 000 за день. Шлюз бы просто не пропустил запрос, превышающий лимит.
Что умеет Claude Apps Gateway 2.1
- Маршрутизация на основе правил — можно настроить, чтобы запросы от Claude Code шли на Claude Haiku, а от Desktop — на Sonnet. Или чтобы код-ревью всегда уходило на самую дешёвую модель.
- Rate limiting и budget control — задаёте дневные/месячные лимиты на пользователя или на команду. При превышении — запросы встают в очередь или отклоняются.
- Полный аудит — каждый промпт и ответ (или только метаданные) пишутся в PostgreSQL. Можно потом анализировать, кто больше всего тратит и на что.
- Stateless контейнер — не нужно хранить сессии. База данных хранит конфигурации и логи, сам шлюз легко масштабируется горизонтально.
- Поддержка двух backend: Claude Platform API и Amazon Bedrock — выбираете, куда направлять трафик. Можно миксовать, например, часть запросов — через Bedrock для соответствия compliance, часть — напрямую в Anthropic для нечувствительных задач.
Ключевой момент: шлюз сам по себе не генерирует ответы. Он — умный балансировщик. И это принципиально отличает его от решений типа PocketCoder-A1, который пытается экономить на подписке через собственного агента.
Сравнение: шлюз против прямого доступа
| Критерий | Прямой доступ к Bedrock | Типичный LLM-прокси (LiteLLM, Helicone) | Claude Apps Gateway 2.1 |
|---|---|---|---|
| Управление пользователями | Через IAM (сложно персонифицировать) | Через API-ключи | Встроенные группы + IAM |
| Cost control | Только глобальные бюджеты AWS | Базовая обрезка по токенам | По пользователям, группам, моделям + очереди |
| Логирование запросов | Через CloudTrail (только метаданные) | Да, но кастомные интеграции | Из коробки в PostgreSQL + S3 |
| Поддержка Claude Code/Desktop | Ручная настройка каждого клиента | Частично (через OpenRouter API) | Нативная через протокол Gateway API |
Прямой доступ к Bedrock — это дикий запад. Вы получаете гибкость, но теряете контроль. Типичные прокси вроде LiteLLM решают часть проблем, но не умеют работать с кастомными конфигами Claude Code и Claude Desktop. Шлюз от Anthropic делает это без костылей. Если вы уже используете Claude Platform on AWS, IAM и биллинг, то это следующий логичный шаг.
Как это выглядит в бою: примеры использования
1 Инженерный отдел с разными уровнями доступа
У вас 10 разработчиков. Трое сеньоров пишут код с Claude Code — им нужен доступ к Sonnet без ограничений. Пять мидлов — только Haiku, с лимитом 500 запросов в день. Джуниоры — только код-ревью через Desktop, и только с использованием Claude Opus (потому что сеньоры хотят качественные ревью). Шлюз разруливает это через политики:
# policy.yaml для группы "senior"
routes:
- model: "claude-sonnet-4-20260501"
max_tokens_per_day: 10000000
rate_limit: 100 rpm
- model: "claude-opus-4-20260501"
max_tokens_per_day: 5000000
# policy.yaml для группы "junior"
routes:
- model: "claude-opus-4-20260501"
max_tokens_per_day: 100000
actions: ["review_code"]
rate_limit: 10 rpm
2 Миграция с прямого Anthropic API на Bedrock без боли для команды
Компания переходит на AWS GovCloud, где требуется особый уровень безопасности. Разработчики привыкли к Claude Platform. Вместо того чтобы менять конфиги 50 машин, вы просто разворачиваете шлюз в GovCloud и указываете бэкенд — Bedrock. Все клиенты подключаются к одному URL. Никто не замечает подмены. Тем, кто работает с военными секретами через GovCloud, этот сценарий спасёт нервы и, возможно, карьеру.
Поднимаем шлюз в AWS: пошаговая инструкция
Для запуска потребуется аккаунт AWS, Terraform (или CloudFormation) и база PostgreSQL — можно использовать Amazon RDS или Aurora. Я покажу минимальный рабочий набор, с которым вы запустите шлюз за 20 минут. Предполагаю, что вы уже имеете доступ к Claude Code 2.0 и знаете его базовые модели.
1 Создаём базу PostgreSQL
Шлюз использует БД для хранения пользователей, политик, логов и метрик. Рекомендуется как минимум db.t4g.small для 50-100 пользователей.
aws rds create-db-instance \
--db-instance-identifier claude-gateway-db \
--db-instance-class db.t4g.small \
--engine postgres \
--master-username gateway_admin \
--master-user-password YourStr0ngPass \
--allocated-storage 20 \
--vpc-security-group-ids sg-xxxxx
2 Разворачиваем ECS Fargate для stateless контейнера
Шлюз распространяется как официальный образ на ECR: public.ecr.aws/anthropic/claude-apps-gateway:2.1. Используем Fargate, чтобы не думать о серверах.
# terraform/main.tf
resource "aws_ecs_task_definition" "gateway" {
family = "claude-gateway"
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
cpu = 1024
memory = 2048
container_definitions = jsonencode([
{
name = "gateway"
image = "public.ecr.aws/anthropic/claude-apps-gateway:2.1"
environment = [
{ name = "DATABASE_URL", value = "postgres://gateway_admin:YourStr0ngPass@your-rds-endpoint:5432/gateway" },
{ name = "BACKEND", value = "bedrock" },
{ name = "BEDROCK_REGION", value = "us-east-1" },
{ name = "ADMIN_API_KEY", value = "your-admin-key" }
]
portMappings = [{ containerPort = 8080 }]
}
])
}
3 Настраиваем пользователей и политики через API
После развёртывания шлюз доступен по адресу ALB. Создаём первого пользователя и выдаём политику.
curl -X POST https://your-alb-url/gateway/admin/users \
-H "Authorization: Bearer your-admin-key" \
-H "Content-Type: application/json" \
-d '{
"user_id": "dev_alice",
"group": "senior",
"allowed_models": ["claude-sonnet-4-20260501", "claude-opus-4-20260501"]
}'
4 Подключаем Claude Code
Каждый разработчик в своём терминале выполняет:
claude config set --api-url https://your-alb-url/gateway
claude config set --auth-token
Всё. Дальше Claude Code шлёт запросы через шлюз, а тот решает — пускать или нет, на какую модель и с каким приоритетом.
Для Claude Desktop настройка аналогична: в файле конфигурации ~/.claude/desktop_config.json указываем apiUrl и apiKey.
Кому этот гайд спасёт бюджет (а кого-то уволит)
Идеальный кандидат: команды от 5 человек, которые уже используют Claude Code или Desktop, и у которых хотя бы раз возникал вопрос «почему счёт за Anthropic вырос в 3 раза?». Если у вас стартап на 3 разработчиках — проще раздать ключи и потом разбираться. Но как только появляется разделение на группы, compliance, аудит — шлюз становится необходимым.
Кто не оценит: соло-разработчики. Для них это избыточно. А также команды, которые уже используют полноценный ML-шлюз вроде Amazon Bedrock Agents с кастомными guardrails — но там другая экосистема, не завязанная на клиенты Anthropic.
Самый жирный плюс — предсказуемость затрат. Вы точно знаете, что разработчик не сможет случайно запустить Claude Opus на обработку 10 ГБ логов, потому что лимит в политике просто не пропустит такой запрос. И это не требует от разработчика никаких дополнительных действий.
Если вы уже по горло сыты бесконтрольным расходом AI-токенов и хотите навести порядок без микроменеджмента — попробуйте развернуть шлюз на выходных. В понедельник команда даже не заметит изменений, а вы увидите первую экономию в конце месяца. И да, не забудьте настроить алерты в CloudWatch на превышение порогов — это спасёт от сюрпризов.