v1.5 — Memory Store + 신규 페이지 + 컨테이너 비용
· 약 3분
AgentCore Memory Store 도입으로 사용자별 대화 이력 365일 보관. EBS, MSK, OpenSearch 신규 페이지와 ECS/EKS 컨테이너 비용 분석을 추가한 릴리스입니다.
핵심 추가
Memory Store (365일) · 4개 신규 페이지 · ECS/EKS 컨테이너 비용 · OpenCost 연동 · 하드코딩 값 3개 제거
AgentCore Memory Store
사용자별 대화 이력을 365일간 보관하는 Memory Store를 도입했습니다. src/lib/agentcore-memory.ts에서 저장/검색 로직을 관리합니다.
| 항목 | 설명 |
|---|---|
| 보관 기간 | 365일 (eventExpiryDuration) |
| 사용자 분리 | Cognito JWT에서 email 추출 (src/lib/auth-utils.ts) |
| 저장 데이터 | 질문, 요약, 라우트, 사용 도구, 응답 시간 |
| 설정 스크립트 | 06e-setup-agentcore-memory.sh |
| 설정 파일 | data/config.json의 memoryId, memoryName |
Memory 이름 규칙
Memory 이름에 하이픈(-)을 사용할 수 없습니다. 언더스코어(_)만 허용됩니다.
올바른 예: awsops_memory / 잘못된 예: awsops-memory
AgentCore 페이지 통합:
- 6개 StatsCard: 총 호출 수, 평균 응답 시간, Gateway별 호출 비율, 모델별 토큰 사용량
- 대화 이력 검색: 키워드, 날짜 범위, 라우트별 필터
AI 페이지 통합:
- 하단 토글 패널에서 대화 이력 조회
- 이전 질문/응답 컨텍스트 참조 가능
신규 페이지 (4개)
| 페이지 | 경로 | 쿼리 파일 | 주요 기능 |
|---|---|---|---|
| EBS | /ebs | queries/ebs.ts | 볼륨/스냅샷, 암호화, EC2 어태치먼트, Idle 볼륨 감지 |
| MSK | /msk | queries/msk.ts | Kafka 클러스터, 브로커 노드 메트릭 (CPU/Memory/Network), KRaft 모드 |
| OpenSearch | /opensearch | queries/opensearch.ts | 도메인, N2N/At-Rest 암호화, VPC 구성, 클러스터 상태 |
| Resource Inventory | /inventory | resource-inventory.ts | 18종 리소스 수량 추이 (스냅샷 기반, 추가 쿼리 0건) |
Steampipe JSONB 주의사항
- MSK:
provisioned컬럼이 JSONB로 브로커 수, 스토리지 크기 등을 포함 - OpenSearch:
encryption_at_rest_optionsJSONB 내enabled필드 확인 필요 - 컬럼명은 반드시
information_schema.columns로 확인 후 쿼리 작성
컨테이너 비용 분석
ECS와 EKS 컨테이너 비용을 분석하는 2개 페이지와 API를 추가했습니다.
| 항목 | ECS (/container-cost) | EKS (/eks-container-cost) |
|---|---|---|
| 데이터 소스 | CloudWatch Container Insights | OpenCost API |
| 폴백 | 없음 | Request 기반 계산 |
| 비용 계산 | Fargate vCPU/GB 가격 적용 | Pod CPU/Memory 할당 비용 |
| API 라우트 | /api/container-cost | /api/eks-container-cost |
| 설정 | - | 06f-setup-opencost.sh (Prometheus + OpenCost) |
AI 라우팅 개선
| 항목 | Before | After |
|---|---|---|
| AgentCore 설정 | 코드 내 하드코딩 | data/config.json에서 ARN 읽기 |
| 도구 사용 표시 | 없음 | 키워드 매칭으로 MCP 도구 추론 → UI 배지 |
| 멀티 라우트 실패 | 전체 실패 | Bedrock Direct 폴백 |
| 타임아웃 | 60초 | 90초 |
도구 사용 추론
AgentCore는 최종 텍스트만 반환합니다 (tool_call 태그 없음). extractUsedTools() 함수가 응답 내용에서 키워드를 매칭하여 사용된 MCP 도구를 추론하고 UI에 배지로 표시합니다.
보안 강화
| 이슈 | 수정 내용 |
|---|---|
| Sign Out | HttpOnly 쿠키 서버 사이드 API 삭제 (POST /api/auth) |
| 하드코딩 #1 | Steampipe 비밀번호 → 동적 조회 |
| 하드코딩 #2 | Code Interpreter ID → data/config.json |
| 하드코딩 #3 | Gateway URL → data/config.json |