Сценарий из ада: как выглядит типичная боль
Ты неделю настраиваешь AI-агента на Bedrock, обучаешь его крутым действиям, а он в ответ — "Access Denied". Потому что твоя база данных, внутренний API или модель лежат в приватной VPC. Агент по умолчанию живёт в публичной сети AWS. И да, он не видит твои приватные ресурсы. Звучит знакомо?
Типичная ошибка: разработчики пытаются открыть Security Group нараспашку или тянуть публичные эндпоинты. Но это убивает всю идею приватности и комплаенса. Не делай так.
Решение — Amazon Bedrock AgentCore Gateway. С апреля 2025 года (и в 2026-м функционал только прокачался) есть два режима подключения к VPC: Resource Gateway и Elastic Network Interfaces (ENI). Разберёмся, какой и когда использовать, на трёх реальных сценариях: API Gateway, EKS и REST API.
Два зверя: Resource Gateway vs ENI — кого выбрать
Прежде чем лезть в код, надо понять разницу. Если коротко:
| Параметр | Resource Gateway | ENI (Elastic Network Interface) |
|---|---|---|
| Когда появился | Конец 2024 | С самого старта AgentCore |
| Что делает | Проксирует HTTP/HTTPS трафик к ресурсам внутри VPC | Создаёт прямой сетевой интерфейс в твоей VPC |
| Простота настройки | 😊 Просто: указываешь эндпоинт и VPC | 😬 Сложно: надо разбираться с подсетями, Security Groups, маршрутами |
| Безопасность | Хорошая: только к указанным ресурсам | Более гибкая: полный доступ к VPC через Security Groups |
| Поддержка не-HTTP протоколов | ❌ Нет (только HTTP/HTTPS) | ✅ Да (любой TCP/UDP) |
| Когда выбирать | Если нужно быстро и безопасно подключить REST API или API Gateway | Если нужно подключаться к EKS, RDS, RabbitMQ или другому не-HTTP сервису |
Я обычно начинаю с Resource Gateway — он проще, меньше шансов прострелить себе ногу. ENI беру только когда упрусь в лимит.
Три сценария, которые покроют 90% кейсов
1 Сценарий: API Gateway (REST) внутри VPC
Задача: у тебя есть приватный API Gateway (например, для внутреннего сервиса поиска товаров). Агент должен дёргать его по HTTPS, но через интернет — нельзя. Решение — Resource Gateway.
Как НЕ надо делать
В логах я видел такое: разработчик создавал ENI, открывал Security Group на 0.0.0.0/0, а потом удивлялся, почему комплаенс-отдел в ярости. Или пытался добавить IP агента в белый список — но IP у Bedrock динамические, так себе идея.
Правильный путь
- Создай Resource Gateway в той же VPC, где висит API Gateway.
- Укажи целевой эндпоинт:
https://my-internal-api.execute-api.region.amazonaws.com - В агенте в Bedrock AgentCore при создании действия (action group) выбери тип Resource Gateway и укажи созданный Gateway.
- Настрой IAM-роль агента, чтобы разрешить
bedrock:InvokeResourceGateway.
Готово. Трафик пойдёт через VPC, не вылезая наружу.
2 Сценарий: EKS с микросервисами
Задача: внутри EKS крутится сервис рекомендаций, он говорит на gRPC. Resource Gateway не умеет gRPC (только HTTP/HTTPS). Значит, берём ENI.
Как НЕ надо делать
Самая популярная ошибка — не настроить Security Group для ENI, оставить всё по дефолту. В итоге ENI блокирует весь трафик, агент не видит ничего. Или наоборот — открыть все порты.
Правильный путь
- Создай ENI в одной из приватных подсетей, где находятся поды EKS.
- Назначь Security Group, которая разрешает входящий трафик от самого ENI (да, ты не ослышался — ENI сам инициирует соединение, но ответный трафик должен проходить). Лучше разрешить исходящий трафик к портам сервисов (например, 443, 50051).
- При создании действия в AgentCore выбери тип Elastic Network Interface и укажи ENI ID.
- Укажи эндпоинт:
http://recommendation-service.namespace.svc.cluster.local:50051(агент будет резолвить через VPC DNS, если настроен).
Нюанс: чтобы DNS внутри VPC работал, убедись, что в VPC есть Route53 Resolver или включены enableDnsHostnames и enableDnsSupport.
3 Сценарий: REST API за ALB/NLB внутри VPC
Задача: твой внутренний REST API висит за Application Load Balancer в приватной подсети. Агент должен вызывать его. Тут можно использовать и Resource Gateway (если API чисто HTTP), и ENI. Но я рекомендую Resource Gateway — проще в поддержке.
# Пример конфигурации Resource Gateway через AWS CLI
aws bedrock-agent create-resource-gateway \
--name my-rest-api-gateway \
--vpc-id vpc-0abcd1234 \
--subnet-ids subnet-123 subnet-456 \
--target "https://internal-alb-123.region.elb.amazonaws.com" \
--region us-east-1
Грабли, на которые наступили мы (и вы тоже наступите)
Расскажу о трёх подводных камнях, которые я видел в продакшнах клиентов.
1. Resource Gateway не умеет в мутные сертификаты
Если твой внутренний API использует самоподписанный сертификат — Resource Gateway его не примет. Решение: либо используй ACM для выпуска приватного CA, либо переходи на ENI, где можно отключить проверку сертификата (но это риск).
2. ENI требует ручного управления
При удалении/создании нового агента ENI не удаляется автоматически — висит мёртвым грузом в твоей VPC. Это и дополнительные счета, и потенциальные дыры в безопасности. Автоматизируй очистку через Lambda или Terraform.
3. Timeout при холодном старте
Если твой API долго отвечает (больше 30 секунд), Resource Gateway может оборвать соединение. Настрой таймауты в агенте и API (или используй ENI с собственными настройками).
Хочешь защитить агентов от опасных запросов? Обязательно настрой Amazon Bedrock Guardrails параллельно с Gateway — это слои безопасности, которые работают вместе.
Собираем всё вместе: автоматизация через CI/CD
Создавать Gateway и ENI вручную — путь в ад. Правильный подход — описать инфраструктуру как код (Terraform, CloudFormation, CDK) и деплоить через пайплайн. В нашем гайде по CI/CD для Bedrock AgentCore мы показываем, как зашить создание Gateway в шаги GitHub Actions. Это избавит от ручного копирования ID и ошибок.
Пример Terraform для Resource Gateway
resource "aws_bedrock_agent_resource_gateway" "example" {
name = "my-gateway"
vpc_id = var.vpc_id
subnet_ids = var.private_subnet_ids
target_urls = [var.internal_api_url]
}
Кстати, если ты используешь Agentic AI-архитектуры с автономными агентами, рекомендую изучить реальный кейс автоматизации публикации контента — там как раз используется связка Gateway + Guardrails.
Неочевидный совет (запиши на лбу)
Многие думают, что Resource Gateway — это просто прокси. Но у него есть скрытая фишка: он автоматически реплицирует конфигурацию в несколько Availability Zones (если указать несколько подсетей). Это даёт отказоустойчивость на уровне сети — твой агент продолжит работать, если одна AZ упадёт. В случае с ENI такой репликации нет, ты сам отвечаешь за мульти-AZ развёртывание.
Прогноз на 2027: ждите поддержку приватных DNS-зон в Resource Gateway (чтобы резолвить имена в VPC без лишнего геморроя). Уже сейчас это можно организовать через ENI, но хочется удобства.
Хочешь проверить настройки? Создай тестового агента с одним действием, которое вызывает пустой эндпоинт внутри VPC и смотри логи в CloudWatch. Если видишь AccessDeniedException — проверяй IAM и Security Groups. Если таймаут — проверяй доступность эндпоинта и DNS.
P.S. У нас в блоге есть ещё материал про браузер агента в Bedrock — если твой сценарий связан с веб-скрапингом, глянь, пригодится.