AgentCore Gateway
에이전트 도구 연결의 중앙 관리 — 라우팅, 인증, 커넥터
AgentCore Gateway
에이전트 도구 연결의 중앙 관리 — 라우팅, 인증, 커넥터
에이전트의 모든 바깥 연결을 한 곳에서
도구·에이전트·모델 접근을 중앙화하는 단일 보안 진입점
Gateway = 도구 허브
단일 보안 진입점 · 직접 호출의 문제 · 왜 필요한가
AgentCore Gateway
에이전트가 바깥 세계에 접근하는 관문 — 연결이 아니라 통제가 본질
AgentCore Gateway
에이전트가 도구·에이전트·모델에 접근하는 단일 보안 진입점
- Target 3카테고리 — MCP · HTTP · Inference
- 인증·정책·관측을 Gateway 레벨에서 일괄 적용
- Interceptor — 요청·응답 변환 미들웨어
- 시맨틱 도구 검색 — 자연어로 도구 매칭
사용자 요청이 들어오는 입구는 Runtime의 에이전트 엔드포인트입니다. Gateway는 반대 방향 — 에이전트가 밖으로 나가는 도구·에이전트·모델 호출의 진입점입니다.
에이전트가 도구를 직접 호출하면
도구가 2개, 3개로 늘어나는 순간부터 시작되는 문제들
인증 분산
도구마다 인증 방식이 다름 — API Key, OAuth, IAM
- 인증 로직이 에이전트 코드 곳곳에 분산
- 자격 증명이 에이전트마다 복제되어 유출 표면 확대
변경 = 재배포
도구 추가·제거마다 에이전트 코드 수정
- 도구 URL 하나 바뀌어도 전체 재배포
- 에이전트가 늘어날수록 수정 비용이 곱으로 증가
관측·통제 불가
누가 어떤 도구를 왜 호출했는지 알 수 없음
- 호출 실패 시 어느 도구·어떤 파라미터인지 추적 불가
- "이 사용자는 이 도구만" 같은 도구별 접근 제어 어려움
세 문제의 공통 원인은 도구 연결이 에이전트 코드 안에 있다는 것 — Gateway는 이를 코드 밖으로 꺼내 인증·관측·정책을 중앙화합니다.
단일 진입점 구조
에이전트는 Gateway 하나만 바라보는 구조 — 도구 추가는 코드 변경 없는 Target 등록
왼쪽 화살표는 하나, 오른쪽은 계속 늘어납니다 — 에이전트가 보는 주소는 끝까지 하나이고, 인증·정책·관측은 상단 밴드처럼 모든 연결에 일괄 적용됩니다.
타깃
MCP · HTTP · Inference 3카테고리 · 등록 CLI
3카테고리 Target
하나의 Gateway에 동시 등록 가능한 세 카테고리
MCP Targets — 도구 유형 6종
Gateway가 모든 MCP Target을 하나의 가상 MCP 서버로 집약 — tools/list 한 번으로 전체 발견
| 유형 | 설명 | 사용 상황 |
|---|---|---|
| Lambda | Lambda 함수를 MCP 도구로 노출 | 커스텀 비즈니스 로직 |
| OpenAPI | REST API를 OpenAPI 스펙으로 MCP 변환 | 기존 REST 서비스 통합 |
| Smithy | AWS Smithy 모델로 인터페이스 정의 | AWS 서비스 연동 |
| MCP Server | 외부 MCP 서버(Streamable HTTP) 연결 | 3rd party MCP 도구 |
| API Gateway | API Gateway REST API 스테이지를 MCP 도구로 변환 | 기존 REST API 자산 재사용 (IAM·API Key 인증) |
| Connectors | AWS 빌트인 도구 연결 | Knowledge Base, Web Search, x402 Bazaar(유료 도구 장터 — 상세는 Payments 모듈) |
Capability Sync — Target이 바뀌면 도구 목록 자동 갱신, 노출 이름에는 Target 접두사가 붙어 충돌을 막습니다(예: OpsTarget___restart_server) — Lambda 핸들러는 접두사를 벗겨 처리합니다.
MCP vs HTTP Target
집약이냐 프록시냐 — 에이전트가 도구를 발견해야 하는지가 갈림길
MCP Targets
집약 (Aggregation)
- 모든 Target을 하나의 가상 MCP 서버로 합침
- tools/list 한 번으로 전체 도구 발견
- Capability Sync로 도구 목록 자동 갱신
- 시맨틱 도구 검색 지원
에이전트가 도구를 발견해서 골라 써야 하면 MCP — 도구 허브의 기본형입니다.
HTTP Targets
직접 프록시 (Path-based routing)
- 집약 없음 — 개별 Target에 그대로 전달
- Runtime 에이전트·A2A 서비스 연결 (에이전트 간 위임)
- 임의의 HTTP 엔드포인트를 Passthrough로 프록시
- 클라이언트가 각 Target을 개별 주소 지정
특정 서비스로 트래픽을 보내기만 하면 HTTP — 인증·관측 혜택은 동일하게 적용됩니다.
Inference Targets — 모델 라우팅
에이전트에게는 단일 추론 엔드포인트 — 요청의 model 필드로 프로바이더를 자동 선택
통합 인터페이스
프로바이더별 SDK를 따로 호출할 필요 없음
모델 전환 용이
Gateway 설정만 변경하면 모델 교체 완료
비용 라우팅
작업 난이도에 맞는 모델로 분기
Fallback
프로바이더 장애 시 다른 프로바이더로 전환
지원 프로바이더 — Amazon Bedrock · OpenAI · Anthropic Direct API, Inference Connector가 사전 구성 템플릿을 제공합니다.
Target 등록 — CLI와 콘솔
add는 설정, deploy가 프로비저닝 — 에이전트 코드는 그대로
핵심 포인트
- agentcore add gateway-target
- MCP/HTTP 도구 연결을 프로젝트에 추가 (AgentCore CLI)
- add → deploy
- add는 설정 파일만 갱신 — deploy가 실제 AWS 리소스를 프로비저닝
- 콘솔 위저드
- Create Gateway 4단계 — Details → Inbound Identity → Add targets → Review
- Target protocol 4종
- 콘솔 기준 MCP · Inference · Agent · Custom — Agent·Custom은 API의 http 카테고리에 대응
명령
# Gateway Target 추가 — MCP/HTTP 도구 연결
agentcore add gateway-target
# 필요한 부속 리소스도 같은 패턴으로
agentcore add credential # Outbound OAuth 자격 증명 공급자
# add는 설정만 갱신 — deploy가 실제 리소스 생성
agentcore deploy
운영
Interceptor · 인터랙티브 MCP · 시맨틱 검색 · 리스팅 모드
운영 기능
도구가 늘어날수록 빛나는 기능들 — 코드가 아니라 Gateway 설정으로 해결
가로채고, 골라낸다
요청·응답의 변환과 수백 개 도구의 탐색을 Gateway가 맡습니다
- Interceptor — 요청·응답을 Lambda로 가로채 변환
- 인터랙티브 MCP — Sessions · Elicitation · Sampling 패스스루
- 시맨틱 도구 검색 — 자연어 쿼리로 필요한 도구만
- 리스팅 모드 — Default(캐시) · Dynamic(실시간)
공통점은 에이전트 코드 무변경 — 미들웨어도 도구 탐색도 Gateway 레벨의 설정입니다.
Interceptor — 요청·응답 미들웨어
Target 앞뒤에서 Lambda가 가로채 변환 — 에이전트도 Target도 모르게
PII 마스킹·스키마 검증·감사 로깅을 에이전트 코드가 아닌 Gateway 레벨에서 — Lambda 하나로 모든 Target에 일괄 적용됩니다.
인터랙티브 MCP — 패스스루 4종
단순 도구 호출을 넘어 — 세션·스트리밍·역방향 상호작용도 그대로 통과
Sessions
상태 있는 MCP 세션 유지
Streaming
진행 상황·부분 결과 실시간 전달
Elicitation
도구가 사용자에게 추가 입력 요청
Sampling
서버가 클라이언트 LLM에 생성 위임
기존 MCP 서버를 Gateway 뒤에 두어도 기능 손실이 없습니다 — 인증·관측·정책 거버넌스만 얹힙니다.
시맨틱 도구 검색
도구 이름을 몰라도 자연어로 — 빌트인 검색 도구가 관련 도구만 선별
-
1
검색 옵션 활성화
Gateway 생성 시 시맨틱 검색 옵션을 켭니다. Default 리스팅 모드가 전제 조건입니다.
-
2
빌트인 도구 자동 등록
x_amz_bedrock_agentcore_search 도구가 Gateway에 자동 등록됩니다.
-
3
자연어 쿼리
에이전트가 이 도구를 tools/call로 호출 — "고객 정보 찾기"처럼 자연어로 검색합니다.
-
4
의미 매칭 반환
도구 설명 임베딩과 의미 매칭해 관련 도구만 집계 반환 — getCustomerById라는 정확한 이름을 몰라도 찾습니다.
예시 시나리오 — Target 3개에 도구 수백 개가 등록된 경우에도, 쿼리와 관련된 도구만 반환됩니다. 수백 개 도구 정의로 컨텍스트를 낭비하지 않는 장치입니다.
검색 장면 — 질의에서 랭킹까지
"고객 정보 찾기" 한 줄이 수백 개 도구에서 관련 도구만 골라내는 순간
에이전트 → Gateway — tools/call
매칭 결과 랭킹
Target 3개 · 도구 수백 개 중
1
getCustomerById
2
searchCustomerProfiles
3
listCustomerOrders
4
getCustomerBillingInfo
…
나머지 수백 개 — 미반환
리스팅 모드 — Default vs Dynamic
도구 목록 캐시와 실시간 조회 — 두 방식 사이의 선택
Default
캐시 기반 (기본값)
- 도구를 컨트롤 플레인에 캐시
- Target 변경 시 sync 필요
- 시맨틱 검색 가능
시맨틱 검색을 쓰려면 Default 모드 + 검색 확장이 조건 — 도구 허브 운영의 표준 선택입니다.
Dynamic
실시간 조회
- 도구를 실시간으로 동적 조회
- sync 불필요 — 항상 최신 목록
- 시맨틱 검색 불가
도구 목록이 수시로 바뀌고 검색이 필요 없다면 Dynamic — 신선도와 검색 기능을 맞바꿉니다.
규모의 감각 — 쿼터
게이트웨이 하나가 감당하는 규모 — 시맨틱 검색이 필요한 이유
tool-call 동시 연결 1,000(게이트웨이·계정 각각), 시맨틱 검색 호출은 25 TPM — 검색은 아껴 쓰는 도구입니다.
계정당 게이트웨이 1,000개 · 도구 이름 최대 256자입니다.
인증
Inbound 4종 · Outbound · Credential Provider
2중 인증 구조
들어오는 인증과 나가는 인증이 답하는 서로 다른 질문
Inbound + Outbound
클라이언트→Gateway 인증과 Gateway→Target 인증을 분리합니다
- Inbound — 누가 Gateway를 호출할 수 있는가
- Outbound — Gateway가 Target에 어떤 자격으로 접근하는가
- Credential Provider — Target 인증 정보를 Gateway가 보관
- 에이전트는 외부 서비스 자격 증명을 몰라도 됨
분리의 효과 — 자격 증명이 에이전트 코드에서 사라지고, 유출 표면이 Gateway 한 곳으로 좁혀집니다.
Inbound authorizer 4종
create_gateway의 authorizerType — 누구를 들여보낼지 정하는 스위치
AWS_IAM 추천
- SigV4 서명으로 호출자 검증
- IAM 정책으로 접근 제어
언제 — AWS 내부 서비스 간 호출
CUSTOM_JWT
- OAuth/OIDC 토큰 검증 — Cognito·기존 IdP 연동
- Discovery URL + audience·client·scope 검증
언제 — 외부 클라이언트, 사용자 신원 기반 인가
AUTHENTICATE_ONLY
- 토큰 검증만 수행
- 인가 판단은 Target에 위임
언제 — Target별로 세밀한 인가가 필요할 때
NONE
- 인증 없음 — 누구든 호출 가능
언제 — 개발·테스트 전용
Inbound 인증 없이 배포하면 누구든 Gateway를 호출할 수 있습니다. 프로덕션에서는 반드시 AWS_IAM 또는 CUSTOM_JWT를 설정하세요.
Outbound 인증 방식
Gateway가 Target에 접근하는 자격 — Target 종류에 따라 선택
| 방식 | 설명 | 적합 상황 |
|---|---|---|
| IAM Role | Gateway 실행 역할로 접근 | Lambda, AWS 서비스 |
| OAuth Client | OAuth 2.0 클라이언트 자격 증명 | 외부 SaaS (Slack, Jira) |
| 3LO | 사용자 대신 인증 위임 (Three-Legged OAuth) | 사용자별 권한이 다른 서비스 |
| API Key | 정적 키 | 단순 REST API |
Target별 인증 정보는 Credential Provider가 보관 — create_gateway_target의 credentialProviderConfigurations로 연결합니다.
코드로 연결하기
create_gateway_target · Strands 연결 · 실습
Target 등록 — create_gateway_target
MCP 서버를 Gateway Target으로 등록 — 컨트롤 플레인 API 한 번이면 끝
핵심 포인트
- bedrock-agentcore-control
- 리소스 관리(create_*)는 컨트롤 플레인 — 호출용 bedrock-agentcore와 혼동 주의
- gatewayIdentifier
- 파라미터명 주의 — gatewayId가 아님
- targetConfiguration
- mcp / http / inference 중 하나 — mcpServer는 endpoint 필드 (url 아님)
- credentialProviderConfigurations
- 필수 — Outbound 인증 방식 지정 (GATEWAY_IAM_ROLE 등)
코드
import boto3
# 컨트롤 플레인 클라이언트 — 리소스 생성·관리는 -control
client = boto3.client('bedrock-agentcore-control')
# 외부 MCP 서버를 Gateway Target으로 등록 — Outbound는 IAM Role
client.create_gateway_target(
gatewayIdentifier="my-gateway-abc1234567",
name="weather-mcp",
targetConfiguration={
'mcp': {
'mcpServer': {'endpoint': 'https://mcp.example.com'}
}
},
credentialProviderConfigurations=[
{'credentialProviderType': 'GATEWAY_IAM_ROLE'}
],
)
에이전트에서 Gateway 도구 사용
Strands 에이전트가 알아야 할 것은 Gateway MCP 엔드포인트 하나뿐
핵심 포인트
- MCPClient
- 생성자는 transport callable만 받음 — URL 직접 전달 금지
- aws_iam_streamablehttp_client
- mcp-proxy-for-aws의 SigV4 서명 transport — 무서명 streamable_http_client는 AWS_IAM Gateway가 거부
- bedrock-agentcore:InvokeGateway
- 호출자 IAM 권한 — 엔드포인트는 {gatewayId}.gateway.bedrock-agentcore.{region}.amazonaws.com/mcp
- tools=[gateway_tools]
- MCPClient 직접 전달 — 연결 라이프사이클 자동 관리 (프로덕션 권장)
코드
from strands import Agent
from strands.tools.mcp import MCPClient
from mcp_proxy_for_aws import aws_iam_streamablehttp_client
# Gateway 연결 — SigV4 서명 transport (무서명 호출은 AWS_IAM에서 거부)
gateway_tools = MCPClient(
lambda: aws_iam_streamablehttp_client(
endpoint="https://my-gateway-abc1234567.gateway"
".bedrock-agentcore.us-east-1.amazonaws.com/mcp",
aws_region="us-east-1",
aws_service="bedrock-agentcore",
)
)
# 모든 MCP Target의 도구가 자동 발견됨
agent = Agent(
system_prompt="식당 추천 전문가",
tools=[gateway_tools],
)
result = agent("강남에서 이탈리안 레스토랑 추천해줘")
Gateway 실습
Gateway에 Lambda Target을 등록하고 에이전트에서 MCP로 호출합니다
학습 목표
- AgentCore Gateway 생성
- Lambda를 Gateway Target으로 등록
- Strands 에이전트에서 Gateway MCP 도구 호출
MCP · HTTP · Inference Targets — 인증·관측·정책을 Gateway 레벨에서