
Amazon Bedrock AgentCore Harness로 결혼 인사 시뮬레이터 만들기
요약
Amazon Bedrock AgentCore Harness를 사용하여 로우코드로 AI 에이전트를 구축하고 결혼 인사 시뮬레이터를 만드는 과정을 소개합니다. Harness와 Runtime의 차이점을 설명하며, 설정만으로 에이전트를 생성하고 배포하는 방법을 다룹니다.
핵심 포인트
- Amazon Bedrock AgentCore Harness를 활용한 로우코드 에이전트 구축 방법
- Harness(설정 중심)와 Runtime(코드 중심)의 구조적 차이점 비교
- Advanced Create를 통한 시스템 프롬프트 및 모델(Claude Haiku) 커스터마이징
- Harness를 코드로 Export하여 Runtime에 배포하는 절차 안내
사귄 여자친구에게 조금 전에 프러포즈를 했습니다. 다음은 양가 부모님께 인사를 드리러 가야 하는데, 처음이라 '어떤 식으로 이야기해야 좋을까' 고민했습니다.
만나 보는 것이 아직 2~3번째라 제대로 인사드릴 수 있을지 불안합니다. 그래서 결혼 인사 시뮬레이터를 Amazon Bedrock AgentCore Harness로 만들어서 가지고 놀아봤습니다.
(인사 전날 문득 떠올라서 만들어 보니 재미있어서 글로 올립니다)
결코 결혼 인사를 가볍게 여기는 것은 아닙니다! 있었으면 재미있겠다라는 단순한 호기심과 Harness를 사용해 보고 싶다는 마음에 시험 삼아 만든 것이니 편하게 읽어주세요.
- Amazon Bedrock AgentCore Harness의 간단한 설정 방법
- Harness와 Runtime의 차이점
- Harness를 코드로 Export하여 Runtime에 배포하는 절차
- 간단한 결혼 인사 시뮬레이터 만들기ヽ(`▽´)/
AgentCore Harness는 로우코드(low-code)로 AI 에이전트를 구축할 수 있는 기능입니다.
모델과 시스템 프롬프트, 툴을 설정으로 작성해 두면 나머지는 AWS 측에서 작동시켜 줍니다.
문서에는 다음의 비교가 되어 있습니다.
- Harness: 설정만 필요하며 코드는 불필요
- Runtime: 보통은 AgentCore SDK와 자체 프레임워크를 사용하여 코드를 작성합니다
Runtime은 직접 코드를 작성하여 배포하지만, Harness는 프롬프트나 모델을 선택하는 것만으로 AWS가 준비해 줍니다.
| Harness | Runtime |
|---|---|
| 에이전트 루프 (Agent Loop) | AWS 측에서 제공 |
| ... |
에이전트의 동작 로직 커스터마이징이나 자체 프레임워크를 사용해야 할 요구사항은 없었고, 심플한 에이전트가 만들어지면 충분했기 때문에 Harness를 선택했습니다.
설정하는 것도 매우 간단해서 좋습니다.
이런 구성입니다.
먼저 Harness를 생성하여 작동시켜 봅니다. 그 후에 Harness의 Export → Runtime에 배포 작업을 합니다.
AgentCore Harness를 만드는 방법에는 Quick Create와 Advanced Create 두 가지가 있는데, 이번에는 Advanced Create를 선택했습니다.
처음부터 시스템 프롬프트를 커스터마이즈하고 싶었고, 처음 선택부터 가능한 한 저렴한 모델(Claude Haiku)을 사용하고 싶었기 때문입니다. 하지만 여기는 나중에 편집도 가능하므로 Quick Create로 해도 괜찮았다는 생각이 듭니다.
※작성 시점인 2026/7/17 기준으로, Quick Create를 할 경우 모델이 Claude Sonnet 4.6으로 생성됩니다.
시스템 프롬프트는 Claude Code와 요구사항을 정리하면서 대화하여 만들었습니다. 길어서 접어 놓겠습니다.
시스템 프롬프트 전문 (클릭하여 펼치기)
당신은 결혼 인사를 받는 신부의 아버지와 어머니, 두 사람을 연기합니다. 사용자는 신부와 결혼하고 싶은 신랑 본인이며, 이제 막 인사를 꺼내려고 합니다.
## 연기할 두 사람
아버지
...
터치한 것은 다음 3가지뿐이었고, 나머지는 모두 기본값 그대로였습니다.
| 항목 | 설정 값 |
|---|---|
| Harness 이름 | kekkon_aisatsu |
| ... |
Harness가 생성되면 오른쪽 상단의 'Harness 테스트'에서 작동시켜 봅니다.

우선, 이제부터 시뮬레이션을 시작할 것과 난이도를 설정하고 싶다는 것을 전달합니다.

프러포즈한 것, 결혼하고 싶다는 것을 전해봅니다. (마지막 문장에서 이야기 속 인물이 된 기분을 느낄 수 있어서 재미있습니다)

어떤 반응을 보일지 궁금해서 연봉이 현재 1억 원이 있다고 말해봤습니다. (1억 원이라도 있었다면 '에~' 할 것 같지만, 그렇게 흔들리지는 않았습니다)

이직 면접 같은 분위기가 되어 왔기 때문에, 앞으로 하고 싶은 것을 거창하게 이야기해 봤습니다.

여러 가지 이야기를 했지만, 왠지 엄격한 아버지라는 이미지의 답변을 해주는 에이전트였습니다 (실제로는 그렇게 엄격하지 않을 거라고 생각했지만). 아마 이대로는 허락을 받지 못하고 돌려보내질 것 같은 느낌이 들었습니다.

일단 여기서 평가를 부탁해 봅니다.
지적은 상당히 정확했습니다. 제가 질문을 제대로 읽지 못했고, 물어본 것에 답하지 못했다는 것을 알았습니다. 본방에서는 더 긴장할 것 같으니 조심해야겠습니다.

agentcore invoke --harness-arn <arn>
로 Harness를 CLI에서 실행할 수 있어서 시험해 봅니다.
※agentcore invoke --harness <name>
이렇게 호출할 수도 있을 것 같았지만, 왠지 모르게 No harnesses defined in configuration이라는 메시지가 떠서 ARN을 지정했습니다.
agentcore invoke \
--harness-arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr \
--region us-east-1 \
...
% agentcore invoke \
--harness-arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr \
--region us-east-1
...
--session-id를 지정하여 대화를 이어가 보겠습니다. 이것만으로는 대화가 이어지는지 미묘하지만, 세션 ID (Session ID)를 지정함으로써 동일한 세션에서 대화를 계속할 수 있었습니다.
% agentcore invoke \
--harness-arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr \
--region us-east-1 \
...
참고
Harness를 만드는 것만으로는 조금 아쉽다는 생각이 들어서, 코드로 내보내는 (Export) 기능을 시도해 보겠습니다. 다음 문서를 참고했습니다.
내보내기를 하면, Strands 프레임워크를 사용하여 편집 가능한 Python 소스 코드로 동일한 에이전트 (Agent)가 생성됩니다.
Harness 상세 화면 우측 상단에 "코드에 대한 내보내기 절차 표시"가 있으므로 클릭합니다.

다만, 콘솔에 표시된 절차대로만 하면 에러가 발생합니다. 다음 절차에 따라 진행해 주세요.
- AgentCore CLI 설치
npm install -g @aws/agentcore
- AgentCore 프로젝트 생성 (이 부분은 콘솔 절차에 없습니다)
agentcore create
- Harness를 코드로 내보내기 (Export)
agentcore export harness --arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr
- 로컬 개발 시작
agentcore dev
- AWS에 배포 (Deploy)
agentcore deploy
먼저 AgentCore CLI를 설치합니다.
npm install -g @aws/agentcore
이 부분이 콘솔 절차에 없으므로 실행이 필요합니다.
agentcore create
콘솔 절차에서는 agentcore export harness ...를 실행하는 단계이지만, 실행하면 "먼저 agentcore create를 하라"며 꾸중을 듣습니다.
실제 에러 메시지
% agentcore export harness --arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr
[done] Fetching harness from service
[done] Reading harness configuration
...
다음 기사도 참고했습니다.
이번에는 "Project name"은 "kekkonAisatsu", "What would you like to build?"는 "Skip"을 선택했습니다.
클릭하여 상세 표시
% agentcore create
AgentCore Create
Project: kekkonAisatsu
...
agentcore export harness --arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr
클릭하여 상세 보기
% agentcore export harness --arn arn:aws:bedrock-agentcore:us-east-1:xxxxxxxxxxxx:harness/kekkon_aisatsu-CVRWNTUdwr
[done] Fetching harness from service
[done] Reading harness configuration
...
내보낸 에이전트를 로컬에서 실행하여 테스트할 수 있습니다.
agentcore dev
agentcore dev를 실행하면 localhost에 웹 UI가 열리고 다음 채팅 UI가 표시됩니다.
% agentcore dev
Starting web UI...
Log: agentcore/.cli/logs/dev/dev-20260719-190116.log
...
실제로 채팅을 해보았습니다. 배포 전에 로컬 환경에서 채팅 UI 형태로 테스트할 수 있다는 점이 좋네요.
내보낸 에이전트를 AWS에 배포합니다.
agentcore deploy
클릭하여 상세 보기
% agentcore deploy
AgentCore Deploy
Project: kekkonAisatsu
...
내보낸 하네스(harness)는 us-east-1에 있었는데, 배포지는 ap-northeast-1이었습니다. 배포 로그의 Target: ap-northeast-1:xxxxxxxxxxxx에서 확인할 수 있었습니다.
배포지를 결정하는 것은 ARN이 아니라 agentcore/aws-targets.json입니다. 내용은 다음과 같았습니다.
`agentcore deploy`
실행했을 때 자동으로 생성되었습니다. 인증된 프로파일의 기본 리전(default region)이 ap-northeast-1이었기 때문에 도쿄 리전으로 설정되어 있었습니다.
[
{
"name": "default",
...
시험 삼아 `
실행 결과는 길기 때문에 접기(fold)로 표시했습니다.
클릭하여 상세 내용 표시
% aws bedrock-agentcore-control delete-harness \
--harness-id kekkon_aisatsu-CVRWNTUdwr --region us-east-1
{
...
agentcore remove agent # agentcore.json에서 삭제됨
agentcore deploy # 여기서 실제로 삭제됨
agentcore remove agent를
실행하면 다음 화면이 나타납니다. 삭제할 Agent를 선택하고 Enter를 누릅니다.
※ agentcore.json에서 설정에 관한 부분만 삭제될 뿐, 아직 AWS 측에는 남아 있습니다.
agentcore deploy를
실행하고 Enter를 누르면 삭제가 시작됩니다.

이런 형태의 화면이 나오면 삭제 완료입니다.

이 기사를 참고했습니다.
무사히 인사는 끝났습니다 ヽ(`▽´)/
Harness가 연기했던 것처럼 엄격한 분은 아니어서 차분하게 대화할 수 있었습니다. 감사합니다.
사소한 계기로 Harness를 만져보았는데, 에이전트(Agent)를 가볍게 몇 번의 클릭만으로 생성할 수 있다는 점이 매우 편리하네요. 인사 전날 갑자기 떠올라 만든 것치고는 제대로 작동했다는 점도 좋았습니다.
Harness를 런타임(Runtime)에 다시 배포(Deploy)할 수 있다는 점도 좋네요. 운영 환경(Production)에서 이용하게 된다면 코드 관리 등이 필요해질 것 같기 때문입니다.
이번에는 메모리(Memory)나 게이트웨이(Gateway) 등의 기능과 함께 사용하지 않았으므로, 다음에는 다른 기능과 조합한 에이전트를 만들어 보고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기