단계 4: 컨텍스트 기반 분석 검증

circle-exclamation

RDS 보안그룹 확인

Amazon RDS 콘솔arrow-up-right로 이동하여 RDS 인스턴스와 연결된 보안 그룹을 클릭합니다. 기본적으로 보안 그룹에는 Reporting 인스턴스의 IP에서 오는 트래픽을 허용하는 규칙이 있어야 합니다.

circle-info

스크린샷에 표시된 소스 IP 주소는 인스턴스에 다른 IP 주소가 할당될 수 있으므로 사용자 환경과 다를 수 있습니다.

네트워크 문제 시뮬레이션

모듈 2 전용 break 스크립트를 실행합니다:

curl https://ws-assets-prod-iad-r-iad-ed304a55c2ca1aee.s3.us-east-1.amazonaws.com/25286efc-5ab4-45b2-a654-bc31f00e0426/break-scripts/module-2-break-script.py --output module-2-break-script.py && python3 module-2-break-script.py

이제 이전에 Reporting 인스턴스의 CIDR에서 오는 트래픽을 허용하던 인바운드 규칙이 제거된 것을 확인할 수 있습니다.

ApplicationURL 확인

CLI 방식:

aws cloudformation describe-stacks --stack-name sample-application --query 'Stacks[0].Outputs[?OutputKey==`ApplicationURL`].OutputValue' --output text

콘솔 방식: AWS CloudFormation 콘솔arrow-up-right에서 sample-application 스택을 선택하고 Outputs 탭에서 ApplicationURL 값을 복사합니다.

새 브라우저 탭에서 ApplicationURL을 열고 Support Tickets > View Tickets를 클릭하여 새로운 지원 티켓이 생성되었는지 확인합니다.

에이전트 테스트

circle-exclamation
chevron-right🔍 이 패치는 무엇을 변경하나요?hashtag

Cognito 인증 성공 후 https://example.com/auth/callback?code=...로 리다이렉트될 때, requests 라이브러리가 실제로 example.com에 HTTPS 연결을 시도하여 SSL 인증서 오류가 발생합니다. 이 패치는 SSL 오류를 catch하여 실패한 요청 URL에서 인증 코드를 추출합니다. 인증 자체는 이미 성공한 상태이므로 코드 추출만으로 충분합니다.

다음 자격 증명을 사용하여 인증합니다:

  • 사용자 이름: test@example.com

  • 비밀번호: TestPassword123!

circle-info

로그인 프로세스를 완료하는 데 10-15초가 소요될 수 있습니다.

의미 메모리 (Semantic Memory) 검증

에이전트에게 권한과 아키텍처 정보를 질문합니다:

영어: Do I have permissions to troubleshoot the Image Platform connectivity issues? What's the architecture?

의미 메모리 응답

에이전트가 의미 메모리에서 권한 및 아키텍처 정보를 검색하여 응답합니다. 이 정보는 실시간으로 조회하는 것이 아니라, 사전에 메모리에 저장된 사실 정보에서 검색됩니다.

사용자 선호도 메모리 (User Preference) 검증

SOP를 요청합니다:

영어: Give me the SOP for connectivity issue between Reporting Server and Database?

사용자 선호도 메모리 응답

사용자 선호도에 맞춘 상세 런북이 제공됩니다.

요약 메모리 (Summary Memory) 검증

이 테스트는 두 개의 세션을 통해 수행합니다.

세션 1: 문제 해결 시작 후 의도적 종료

영어: Check connectivity between reporting.examplecorp.com and database.examplecorp.com

에이전트가 진단을 시작하면, 의도적으로 exit로 세션을 종료합니다.

세션 1 요약

세션 2: 메모리 컨텍스트로 재개

새 세션을 시작합니다:

다시 인증한 후 이전 세션의 컨텍스트를 참조하여 질문합니다:

영어: System crashed, where were we with respect to troubleshooting connectivity between reporting.examplecorp.com and database.examplecorp.com?

세션 2 컨텍스트 복구

에이전트가 요약 메모리에서 이전 컨텍스트를 검색하고, 중단된 지점부터 진단을 계속합니다.

수정 동의

영어: Yes, please fix and validate

완료되면 종료합니다:

검증 결과

VPC Reachability Analyzer with Memory

VPC Reachability Analyzer 콘솔arrow-up-right에서 분석 결과를 확인할 수 있습니다.

코드 분석: 메모리 검증 흐름

MemoryHook 클래스 핵심 구조 (memory_hook_provider.py, 559줄)

4-Question 라우팅 로직

on_message_added 메서드는 사용자 질문을 분석하여 적절한 메모리 전략으로 라우팅합니다:

retrieve_memories 메커니즘

메모리 전략별 네임스페이스 매핑

전략
네임스페이스 패턴
저장 데이터
검증 질문

Semantic

examplecorp/user/{actor}/facts

권한, 아키텍처, 팀 정보

"Do I have permissions...?"

User Preference

examplecorp/user/{actor}/preferences

SOP, 선호 형식, 통신 스타일

"Give me the SOP for...?"

Summary

examplecorp/user/{actor}/{session}

세션 대화 요약

"System crashed, where were we?"

Custom

examplecorp/procedures/{actor}/workflows

기관 절차, 이력

(절차 기반 질문)

세션 간 컨텍스트 복원 (on_agent_initialized)

circle-info

핵심 포인트: MemoryHook은 Strands Framework의 Hook 패턴을 활용합니다. on_agent_initialized는 에이전트 시작 시 이전 세션을 로드하고, on_message_added는 매 메시지마다 관련 메모리를 검색하여 시스템 프롬프트에 동적으로 주입합니다. 에이전트 코드(agent.py)는 수정 없이 hooks=[memory_hook] 한 줄만 추가하면 됩니다.

circle-check

마지막 업데이트