TL;DR
노트북에서 동작하던 LangGraph 고객지원 에이전트는 실제 서비스에서 세션 격리, 상태 보존, 도구 인증, 운영체제 패치 같은 추론 외 부담을 직접 떠안습니다. 이 글은 Amazon Bedrock AgentCore Runtime, Gateway, Memory를 한 단계씩 붙여 기존 그래프와 동작을 유지한 채 10개 운영 부담 중 5개를 AWS 쪽으로 옮기는 Stage 1을 구현합니다. Stage 2에서는 Strands Agents로 라우터 기반 분기를 모델 기반 계획으로 바꾸고, AgentCore Policy의 Cedar 규칙으로 Gateway의 모든 도구 호출을 데이터 플레인에서 통제하지만 운영 부담 자체는 더 이동하지 않습니다. AgentCore harness로 코드 안의 루프까지 넘기는 Stage 3은 문서로만 다뤄졌으며, 각 단계는 같은 세 대화의 도구 실행과 최종 상태를 비교해 검증합니다.
섹션별 상세
git clone https://github.com/aws-samples/sample-migrate-agents-to-amazon-bedrock-agentcore.git
cd sample-migrate-agents-to-amazon-bedrock-agentcore
./setup.sh마이그레이션 샘플 저장소를 복제하고 setup.sh로 가상 환경과 의존성을 설치합니다.
from bedrock_agentcore import BedrockAgentCoreApp
from langchain_core.messages import HumanMessage
app = BedrockAgentCoreApp()
@app.entrypoint
def agent_invocation(payload, context):
state = support_graph().invoke(
{"messages": [HumanMessage(payload.get("prompt", ""))]},
config={"configurable": {"thread_id": context.session_id or "local-session"}},
)
return {"result": state["messages"][-1].text}
if __name__ == "__main__":
app.run()기존 LangGraph 실행 루프를 BedrockAgentCoreApp의 entrypoint로 감싸고 Runtime 세션 ID를 thread_id로 전달합니다.
client = boto3.client("bedrock-agentcore-control", region_name=region)
gateway = client.create_gateway(
name="MigratedAgentGateway",
roleArn=role_arn, # gateway execution role
protocolType="MCP",
authorizerType="AWS_IAM",
)
gateway_id = gateway["gatewayId"]
gateway_url = gateway["gatewayUrl"]bedrock-agentcore-control 클라이언트로 MCP Gateway를 만들고 AWS_IAM 인증 방식을 지정합니다.
from langgraph_checkpoint_aws import AgentCoreMemorySaver
graph = build_graph(
llm=llm,
tools=tools,
checkpointer=AgentCoreMemorySaver(memory_id, region_name=region),
)
state = graph.invoke(
{"messages": [HumanMessage(prompt)]},
config={"configurable": {"thread_id": session_id, "actor_id": actor_id}},
)AgentCoreMemorySaver를 LangGraph checkpointer로 연결하고 호출별 actor_id와 thread_id를 전달합니다.


config = AgentCoreMemoryConfig(
memory_id=memory_id,
session_id=session_id,
actor_id=actor_id
)
kwargs["session_manager"] = AgentCoreMemorySessionManager(
config,
region_name=region_name
)
return Agent(**kwargs)Strands Agent에 AgentCoreMemorySessionManager를 주입해 기존 Memory 저장소와 세션을 재사용합니다.


용어 해설
- AgentCore Runtime
- — AgentCore Runtime은 에이전트 코드를 AWS 관리형 실행 환경에서 구동하는 서비스입니다. 요청마다 세션별 microVM을 사용해 세션 격리를 제공하고, 운영체제 패치와 자동 확장 부담을 줄입니다. 애플리케이션의 판단 로직 자체를 대체하지는 않습니다.
- AgentCore Gateway
- — AgentCore Gateway는 에이전트가 호출하는 외부 도구를 MCP 기반 엔드포인트로 게시하고 인증과 실행 연결을 맡는 서비스입니다. 도구 권한을 애플리케이션 코드 밖으로 옮기며, AWS Lambda 같은 대상 함수를 자체 실행 역할로 호출합니다.
- AgentCore Memory
- — AgentCore Memory는 프로세스 내부에 머물던 대화 상태를 여러 실행 인스턴스와 시간에 걸쳐 보존하는 저장소입니다. actor_id와 session_id를 기준으로 상태를 조회하므로 프로세스 재시작이나 복제 환경에서도 이전 대화를 이어갈 수 있습니다.
- 모델 기반 계획(Model-Driven Planning)
- — 모델 기반 계획은 Python 코드에 고정한 분기 대신 모델이 다음 도구와 실행 단계를 선택하는 오케스트레이션 방식입니다. 새 의도마다 라우터와 노드를 추가하는 부담을 줄이지만, 결정 과정의 결정성과 감사 가능성을 낮추는 대가가 있습니다.
- Cedar Policy
- — Cedar Policy는 AgentCore Gateway의 데이터 플레인에서 도구 호출마다 허용 여부를 판단하는 정책 체계입니다. 기본 거부 방식이므로 금지 규칙 없이도 일치하는 permit이 없으면 호출을 거부하며, IAM 권한과 별도로 도구별 접근 통제를 수행합니다.
- Signature Version 4
- — Signature Version 4는 AWS API 요청을 자격 증명으로 서명하는 인증 방식입니다. 이 글의 에이전트는 IAM 자격 증명으로 Gateway 호출을 서명하고, Gateway는 별도의 실행 역할로 Lambda 도구를 호출해 외부 토큰 없이 요청 경로를 구성합니다.
기술
- Amazon Bedrock AgentCore Runtime
- AgentCore Gateway
- AgentCore Memory
- LangGraph
- Strands Agents
- ChatBedrockConverse
- AWS Lambda
- Amazon S3
- Amazon ECR
- Amazon CloudWatch
- AWS Distro for OpenTelemetry
- MCP
- Signature Version 4
- AWS_IAM
- Cedar
- AgentCore Identity
- AgentCore Evaluations
- Python 3.12
활용 사례
- LangGraph 기반 고객지원 에이전트의 운영 환경 이전
- 주문 상태 조회와 반품 처리를 수행하는 Stateful support agent
- 여러 에이전트가 공유하는 MCP 도구 Gateway 구축
- 대화 상태를 여러 프로세스와 날짜에 걸쳐 보존하는 에이전트
- 도구별 호출 권한을 Cedar로 통제하는 에이전트
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.