Интеграция AWS API MCP Server с Amazon Quick через Amazon Bedrock AgentCore Runtime
По мере масштабирования инфраструктуры AWS операционные процессы неизбежно усложняются. SRE и DevOps Engineers тратят много времени на переключение между AWS Management Console, документацией по CLI и несколькими панелями сервисов. Они вручную переводят бизнес-вопросы в корректный синтаксис API, связывают вызовы между сервисами и заново собирают одни и те же шаблоны интеграции для каждого нового сценария. Со временем эта трение накапливается. Расследование инцидентов требует сопоставления Amazon CloudWatch Logs, состояний экземпляров Amazon Elastic Compute Cloud (Amazon EC2) и политик AWS Identity and Access Management (IAM) в разных интерфейсах. Планирование емкости означает ручные запросы к нескольким сервисам и сбор результатов. Аудиты безопасности требуют последовательностей вызовов API, которые долго писать с нуля.
В этой статье показано, как использовать Amazon Bedrock AgentCore Runtime с поддержкой Model Context Protocol (MCP), чтобы подключить Amazon Quick к сервисам AWS через AWS API MCP Server и создать разговорного AI-ассистента, который переводит естественный язык в команды AWS Command Line Interface (AWS CLI) без переключения между инструментами в критические моменты.
Обзор решения
С Amazon Bedrock AgentCore Runtime и поддержкой MCP естественные запросы напрямую преобразуются в вызовы AWS API. Можно спросить: «Покажи все запущенные экземпляры EC2 в us-east-1», — и получить немедленный и точный результат без переключения между инструментами и без необходимости запоминать синтаксис API. Запросы выполняются безопасно в рамках уже существующих разрешений IAM, а для соответствия требованиям доступен полный журнал аудита Amazon CloudWatch. Вместо того чтобы заново строить логику подключения для каждого рабочего процесса, можно стандартизировать взаимодействие AI-агентов с сервисами AWS через одну повторно используемую интеграцию. На следующей схеме показано, как Amazon Bedrock AgentCore Runtime соединяет Amazon Quick с сервисами AWS через AWS API MCP Server.

Как это работает в повседневных операциях:
- Вы задаете вопрос на естественном языке: «Покажи запущенные экземпляры EC2 в us-east-1».
- Пользовательский агент Amazon Quick интерпретирует ваше намерение.
- Amazon Cognito аутентифицирует запрос: Quick получает JWT-токен из вашего пользовательского пула Amazon Cognito, используя поток client credentials OAuth 2.0 с настроенными Client ID и Client Secret.
- Агент подключается к AWS API MCP Server: аутентифицированный запрос достигает Amazon Bedrock AgentCore Runtime, который проверяет JWT-токен по конфигурации вашего поставщика удостоверений Cognito.
- AgentCore Runtime авторизует и маршрутизирует запрос: после проверки токена Cognito AgentCore Runtime безопасно вызывает AWS API MCP Server, работающий в контейнеризованной среде.
- MCP server преобразует ваш запрос: ваш запрос на естественном языке конвертируется в соответствующую команду AWS CLI.
- Сервисы AWS выполняют команду: используя настроенную IAM execution role, команда запускается с минимально необходимыми привилегиями для сервисов AWS.
- Результаты возвращаются в удобочитаемом формате: синтаксис CLI не нужен. Вы получаете структурированный и читаемый ответ прямо в интерфейсе Quick.
Требования
Для прохождения этого материала вам понадобятся следующие условия.
Требования к учетной записи и доступу:
- Учетная запись AWS с административным доступом
- Подписка Amazon Quick Enterprise (минимум Professional tier)
- Доступ к AWS Marketplace — AWS API MCP Server
- Разрешения IAM на создание:
- пулов пользователей Amazon Cognito
- ролей и политик IAM
- агентов Amazon Bedrock AgentCore Runtime
- групп журналов Amazon CloudWatch Log groups
Необходимые программные средства и инструменты:
- Установленный и настроенный AWS CLI (нужен для шага с URL-encoding в walkthrough)
Необходимые знания и опыт:
- Базовое понимание ролей и политик IAM (указано выше)
- Знакомство с потоками аутентификации OAuth 2.0
- Понимание концепций JWT (JSON Web Token)
Дополнительная информация:
- Оценка времени выполнения: 30–45 минут
- Оценочная ежемесячная стоимость: для одного Enterprise-пользователя, выполняющего примерно 500 запросов в месяц, стоимость составляет около $292 в месяц. Основные статьи затрат — подписка Amazon Quick Enterprise ($40/пользователь в месяц) и инфраструктурный сбор ($250/аккаунт в месяц).
Развертывание решения
Ручное развертывание
Чтобы реализовать решение, выполните следующие шаги:
- Настройте пользовательский пул Amazon Cognito — для аутентификации.
- Создайте роли IAM — для авторизации.
- Создайте агента Amazon Bedrock AgentCore Runtime.
- Настройте Integrations в Amazon Quick для AWS API MCP Server.
- Создайте пользовательского чат-агента в Amazon Quick.
Визуальные макеты на некоторых скриншотах в этой статье могут отличаться от тех, что отображаются в вашем AWS Management Console.
Настройка пользовательского пула Amazon Cognito
Amazon Cognito обеспечивает аутентификацию и авторизацию вашего приложения. В этом решении вы настраиваете пользовательский пул Cognito для генерации JWT-токенов, которые аутентифицируют запросы к Amazon Bedrock AgentCore Runtime. При JWT-аутентификации с Amazon Cognito вы настраиваете авторизатор в операции CreateAgentRuntime, указывая URL обнаружения для конкретного провайдера идентификации (IdP) и разрешенных клиентов. Существующий код агента изменять не нужно. Вы добавляете конфигурацию авторизатора в развертывание runtime. Когда вызывающая сущность или пользователь обращается к агенту, они передают токен доступа, специфичный для IdP, как bearer token в заголовке Authorization. AgentCore Runtime использует AgentCore Identity, чтобы автоматически проверить этот токен относительно настроенного авторизатора, и отклоняет неавторизованные запросы.
Создайте пользовательский пул Amazon Cognito для JWT-аутентификации с уникальным именем приложения и типом приложения Machine-to-machine application, как показано на следующем скриншоте. Укажите имя приложения, а затем выберите create user directory.
Когда вы создаете пользовательский пул Cognito с приложением типа machine-to-machine, Amazon Cognito автоматически создает ресурсный сервер для вашего приложения. Resource server определяет пользовательские области OAuth 2.0, которые задают разрешения, запрашиваемые приложением.


В меню только что созданного user pool перейдите в Branding и выберите Domain. Выберите созданный Resource server и нажмите edit. Добавьте write scope в пользовательскую область и обновите описания для read и write.

Области read и write управляют доступом к AWS API MCP Server:
- Read scope — разрешает приложению запрашивать ресурсы AWS, например выводить список экземпляров EC2 или описывать корзины Amazon Simple Storage Service (Amazon S3).
- Write scope — разрешает приложению изменять ресурсы AWS, например создавать ресурсы или обновлять конфигурации.
Эти области сопоставляются с разрешениями IAM, которые MCP server использует при выполнении команд AWS CLI от имени аутентифицированных запросов.
Создание ролей IAM
Чтобы запускать агенты или инструменты в Amazon Bedrock AgentCore Runtime, нужна IAM execution role. Инструкции по созданию роли IAM см. в IAM role creation.
Создайте необходимую trust policy и execution role для Amazon Bedrock AgentCore Runtime. Подробнее см. в IAM Permissions for AgentCore Runtime. Замените YOUR_ACCOUNR_ID ниже на ваш идентификатор аккаунта AWS.
Ниже приведен код trust policy для AgentCore Runtime:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AssumeRolePolicy",
"Effect": "Allow",
"Principal": {
"Service": "bedrock-agentcore.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "YOUR_ACCOUNT_ID"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:bedrock-agentcore:*:YOUR_ACCOUNT_ID:*"
}
}
}
]
}
Ниже приведен код для execution role AgentCore Runtime:
Следующая политика IAM предоставляет execution role разрешения, необходимые для загрузки контейнерного образа AWS API MCP Server и записи runtime-журналов. Контейнерный образ размещен в AWS-managed public репозитории Amazon Elastic Container Registry (Amazon ECR). Вам не нужно самостоятельно собирать или сопровождать образ.
Чтобы найти последний URI контейнера, перейдите в AWS Marketplace – AWS API MCP Server.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECRImageAccess",
"Effect": "Allow",
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": [
"arn:aws:ecr:us-east-1:709825985650:repository/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"logs:CreateLogGroup"
],
"Resource": [
"arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock-agentcore/runtimes/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*"
]
},
{
"Sid": "ECRTokenAccess",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"xray:GetSamplingRules",
"xray:GetSamplingTargets"
],
"Resource": [ "*" ]
},
{
"Effect": "Allow",
"Resource": "*",
"Action": "cloudwatch:PutMetricData",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "bedrock-agentcore"
}
}
},
{
"Sid": "GetAgentAccessToken",
"Effect": "Allow",
"Action": [
"bedrock-agentcore:GetWorkloadAccessToken",
"bedrock-agentcore:GetWorkloadAccessTokenForJWT",
"bedrock-agentcore:GetWorkloadAccessTokenForUserId"
],
"Resource": [
"arn:aws:bedrock-agentcore:us-east-1:YOUR_ACCOUNT_ID:workload-identity-directory/default",
"arn:aws:bedrock-agentcore:us-east-1:YOUR_ACCOUNT_ID:workload-identity-directory/default/workload-identity/*"
]
}
]
}
Назначьте роли конкретные разрешения, определяющие, какие действия она может выполнять от вашего имени. В этом примере используется ограниченная политика только для чтения, которая разрешает s3:ListBucket и s3:GetObject для всех buckets. Это намеренно широко задано только для обнаружения и изучения.
Примечание: Использование wildcard-ресурса (arn:aws:s3:::*) предоставляет доступ ко всем корзинам S3 в вашем аккаунте. Это приемлемо для начальной настройки и тестирования, но нарушает принцип минимально необходимых привилегий в production. Перед развертыванием в production замените wildcard на конкретные ARN корзин:
"Resource": [
"arn:aws:s3:::your-specific-bucket",
"arn:aws:s3:::your-specific-bucket/*"
]
Пример роли:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeImages"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ec2:Region": "us-east-1"
}
}
}
]
}
Создание агента Amazon Bedrock AgentCore Runtime
В Amazon AgentCore выберите в меню runtime, затем host/agent tool. Укажите уникальное имя для runtime-агента. Для Agent Source выберите вариант ECR container и введите URI образа из AWS Marketplace.

На той же странице в разделе permissions выберите существующую роль, созданную на предыдущем шаге.

В разделе inbound auth на той же странице выберите протокол MCP и JWT token для типа входной аутентификации. Для конфигурации схемы JWT используйте существующую конфигурацию identity provider — Cognito identity pool, созданный на первом шаге.

Получите URL обнаружения из сведений о вашем пользовательском пуле Cognito. Найдите Token signing key URL, который имеет следующий формат:https://cognito-idp.$REGION.amazonaws.com/$POOL_ID/.well-known/jwks.json
Замените jwks.json на openid-configuration. Итоговый URL должен выглядеть примерно так:
https://cognito-idp.us-east-1.amazonaws.com/us-east-1_ev5CwXjma/.well-known/openid-configuration
Добавьте разрешенных клиентов в конфигурацию. Перейдите в раздел App Client в вашем пользовательском пуле Cognito, выбрав App Client в левой панели. Скопируйте client ID из сведений App client information и добавьте его в раздел allowed clients.
Настройте дополнительные параметры развертывания AgentCore Runtime. В разделе Advanced configurations оставьте режим сети по умолчанию Public для этого walkthrough. Это позволит runtime быть доступным через интернет на этапе начальной настройки и тестирования.
Для production-развертываний выберите опцию VPC, чтобы ограничить сетевой доступ частной контролируемой средой. Это рекомендуемый подход для рабочих нагрузок, которые обрабатывают чувствительные данные или требуют сетевой изоляции. Затем добавьте переменные окружения, как показано в следующем разделе, и нажмите Create agent.
AUTH_TYPE: «no-auth»AWS_API_MCP_HOST: «0.0.0.0»AWS_API_MCP_PORT: «8000»AWS_API_MCP_STATELESS_HTTP: «true»AWS_API_MCP_TRANSPORT: «streamable-http»AWS_API_MCP_ALLOWED_HOSTS= «*»AWS_API_MCP_ALLOWED_ORIGINS= «*»
Понимание аутентификации AWS API в AgentCore
| Переменная | Описание |
AWS_API_MCP_TRANSPORT |
Задает протокол передачи streamable HTTP для обмена сообщениями MCP. |
AWS_API_MCP_STATELESS_HTTP |
Включает stateless HTTP mode, необходимый для транспорта streamable-http. |
AWS_API_MCP_PORT |
Порт, на котором MCP server слушает входящие запросы. |
AWS_API_MCP_HOST |
Привязывает сервер ко всем доступным сетевым интерфейсам внутри контейнера. |
AWS_API_MCP_ALLOWED_ORIGINS |
Разрешает запросы из любого origin. Это допустимо в контролируемой среде выполнения AgentCore Runtime. |
AWS_API_MCP_ALLOWED_HOSTS |
Разрешает запросы с любого host. Область ограничена сетевой границей контейнера, которую обеспечивает AgentCore Runtime. |
AUTH_TYPE |
Отключает аутентификацию на уровне MCP server. Аутентификация выполняется AgentCore Runtime с помощью проверки JWT-токена. Подробнее см. следующую заметку по безопасности. |
AUTH_TYPE установлен в no-auth, потому что сам MCP server не выполняет аутентификацию. Это сделано намеренно и безопасно при развертывании через Amazon Bedrock AgentCore Runtime. AgentCore Runtime выступает в роли границы безопасности. До того как запрос попадет в контейнер MCP server, AgentCore Runtime выполняет проверку JWT-токена. Он проверяет криптографические подписи с помощью публичных ключей из AgentCore Identity, валидирует claims токена (issuer, audience, expiration) и отклоняет запросы, которые не предоставляют действительный bearer token OAuth 2.0. Иными словами, MCP server доверяет тому, что AgentCore Runtime уже аутентифицировал вызывающую сторону. Это тот же подход, который применяется к внутренним микросервисам за API Gateway. Сам сервис не выполняет повторную аутентификацию, потому что это уже сделал gateway.
Примечание: Не используйте AUTH_TYPE: no-auth, если вы запускаете этот MCP server вне AgentCore Runtime, например напрямую на EC2 instance или как отдельный контейнер. В этом случае сервер будет доступен без слоя аутентификации.
Wildcard-значения для AWS_API_MCP_ALLOWED_HOSTS и AWS_API_MCP_ALLOWED_ORIGINS (*) в этом руководстве выбраны намеренно широко. В production замените их на конкретные hostname и origins, которые требуются вашей нагрузке, чтобы обеспечить сетевой доступ по принципу минимально необходимых привилегий.
Создание пользовательского чат-агента в Amazon Quick
Теперь, когда AWS API MCP server работает в Amazon Bedrock AgentCore Runtime, создадим пользовательского чат-агента в Amazon Quick, который можно использовать для выполнения команд AWS CLI через взаимодействие на естественном языке.
Перейдите в консоль Amazon Quick и откройте настройки интеграций. В левой панели навигации выберите Integrations, затем Actions. Добавьте интеграцию протокола MCP, чтобы подключить Amazon Quick к вашему MCP server, размещенному в Amazon Bedrock AgentCore Runtime.
Чтобы настроить параметры интеграции, введите метаданные integration. Укажите описательное Name для интеграции и добавьте понятное Description, объясняющее ее назначение.

Для настройки endpoint получите ARN вашего Amazon Bedrock AgentCore Runtime. Перейдите в раздел Tools Details вашего агента. Скопируйте Runtime ARN из раздела Runtime.
Пример формата ARN:
arn:aws:bedrock-agentcore:us-east-1:123456789123:runtime/demoagent-LmNop08QoR
URL конечной точки должен иметь следующий формат; замените Region на ваш регион AWS и выполните шаги по созданию URL-encoded ARN.
https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{url-encoded-arn}/invocations?qualifier=DEFAULT
Чтобы создать URL-encoded ARN, выполните следующую команду в терминале:
echo "YOUR_ARN" | sed 's/:/%3A/g; s/\//%2F/g'
[System.Uri]::EscapeDataString("YOUR_ARN")
Примечание: bash-команда требует Linux, macOS или Windows с установленным WSL (Windows Subsystem for Linux). Командлет Windows PowerShell работает нативно в Windows без дополнительных зависимостей. Затем оставьте включенной опцию enable auto-publishing. Чтобы обеспечить защищенную связь между Amazon Quick и MCP server, настройте service authentication с использованием учетных данных вашего пользовательского пула Amazon Cognito.
Примечание: Amazon Cognito — это полностью управляемый AWS сервис идентификации, который обрабатывает аутентификацию и авторизацию приложений. Client secret приложений хранится в зашифрованном виде at rest и in transit. Ваши учетные данные не передаются в открытом виде. Cognito также поддерживает ротацию client secret по запросу, так что можно поддерживать до двух активных секретов на app client для ротации без простоя.
Когда появится страница настроек аутентификации, выберите Service Authentication в качестве метода аутентификации.
Чтобы найти Client ID и Client Secret:
- Откройте Amazon Cognito console.
- Выберите User Pools, затем ваш user pool.
- В левой панели навигации выберите App clients (в разделе Applications).
- Выберите свой app client. App client ID отображается прямо на этой странице.
- Выберите Show client secret, чтобы раскрыть App client secret.
Примечание: Относитесь к Client Secret как к паролю. Для production-развертываний храните его безопасно с помощью AWS Secrets Manager. Не встраивайте его в клиентский код и системы контроля версий.
Для Token URL соберите его на основе домена вашего user pool:
- В левой панели user pool прокрутите до раздела Branding.
- Выберите Domain. Здесь отображается домен Cognito в формате:
https://your-domain.auth.region.amazoncognito.com - Добавьте
/oauth2/token к этому домену, чтобы получить полный endpoint токена:https://your-domain.auth.region.amazoncognito.com/oauth2/token
После ввода Client ID, Client Secret и Token URL выберите Create and Continue.

Примечание: В Amazon Quick ваши учетные данные шифруются с помощью AWS Key Management Service (AWS KMS). По умолчанию Quick использует service-managed AWS KMS key для шифрования учетных данных источников данных и OAuth-токенов. Для организаций с более строгими требованиями комплаенса администраторы аккаунта могут настроить customer managed keys, чтобы полностью контролировать жизненный цикл ключей шифрования, включая возможность мгновенно отзывать доступ и вести аудируемый журнал доступа к учетным данным.
Затем задайте параметры общего доступа для этого действия. Выберите, делиться ли этим действием с другими членами команды, и настройте соответствующие права доступа. Нажмите Done и убедитесь, что действие появилось в разделе Actions.
Теперь создадим разговорного агента, который переводит естественный язык в команды AWS CLI. Перейдите к созданию агента в консоли Amazon Quick, в левой панели выберите Custom Agents, затем Create Chat Agent.
Настройте агента с описательным prompt:
Prompt: Создайте разговорного агента, который позволяет пользователям выполнять команды AWS CLI с помощью естественного языка. Переводите запросы пользователей в соответствующие вызовы AWS API через коннектор aws-api-mcp.
Amazon Quick автоматически обнаруживает и выбирает MCP connector на основе вашего prompt. Проверьте, что к вашему агенту привязана правильная интеграция. Выберите Launch Agent, чтобы сделать его доступным для тестирования.

Автоматизированное развертывание
Для автоматизированного развертывания следуйте инструкциям в GitHub, чтобы развернуть AWS API MCP server в Amazon Bedrock Runtime. Кроме того, чтобы развернуть Cognito user pool и app client, следуйте инструкциям AWS documentation в разделе Appendix в материале Set up Cognito user pool for authentication.
Наконец, для настройки интеграции между Amazon Quick и AWS API MCP server выполните шаги, описанные в разделе Create Custom Chat Agent in Amazon Quick.
Тестирование решения
Чтобы проверить работу пользовательского чат-агента, откройте чат-интерфейс только что созданного custom chat agent и протестируйте команды на естественном языке:
Prompt: Покажи запущенные экземпляры EC2 в регионе us-east-1.

Очистка ресурсов
Чтобы избежать постоянных расходов, удалите ресурсы, созданные в рамках этого решения.
- Удалите ресурсы Amazon Quick. Уберите включенные функции Amazon Quick, включая пользовательского чат-агента, Spaces и Flows.
- Удалите MCP integration. Удалите созданное действие Amazon Quick MCP.
- Очистите ресурсы Amazon Bedrock. Удалите агент Amazon Bedrock AgentCore и связанную с ним IAM execution role.
- Удалите пользовательский пул Amazon Cognito. Наконец, удалите пользовательский пул Amazon Cognito, созданный для аутентификации.
Заключение
В этой статье вы узнали, как подключить Amazon Quick к сервисам AWS с помощью Amazon Bedrock AgentCore Runtime и AWS API MCP Server. Когда вы стандартизируете взаимодействие AI-агентов с вашей инфраструктурой через MCP, вам не придется заново строить пользовательские шаблоны интеграции для каждого нового сценария.
Дальше этот подход можно расширить для автоматизации типовых операционных запросов. Вы также можете создавать специализированных агентов для задач безопасности, оптимизации затрат или планирования емкости и интегрировать их в процессы управления инцидентами с помощью Amazon Quick Flows и Amazon Quick Automate. В результате вы получаете более последовательный, безопасный и эффективный способ управления инфраструктурой AWS в масштабе.
Материал — перевод статьи с английского.
Оригинал: Integrating AWS API MCP Server with Amazon Quick using Amazon Bedrock AgentCore Runtime