단계 6: 네트워크 연결성 진단

circle-exclamation

배포한 AgentCore Runtime을 검증하려면 아래 단계를 순서대로 수행하세요.

네트워크 문제 시뮬레이션

RDS 보안 그룹 확인

AWS 콘솔arrow-up-right에서 Amazon RDS 서비스로 이동합니다. sample-app-image-metadata-db라는 이름의 RDS 인스턴스와 연결된 보안 그룹 하이퍼링크를 클릭합니다.

DB Security Group

Connectivity & security 아래에서 Endpoints를 선택합니다. Security Group ID를 클릭합니다. 기본적으로 보안 그룹에는 아래와 같이 Reporting VPC의 CIDR에서 오는 트래픽을 허용하는 규칙이 있어야 합니다.

Working SG Rule

Break 스크립트 실행

Reporting Server와 Database 간 연결을 끊는 스크립트를 실행합니다:

chevron-right🔍 이 스크립트는 무엇을 하나요?hashtag
  1. RDS 인스턴스(sample-app-image-metadata-db)의 보안 그룹 조회

  2. MySQL 3306 포트의 인바운드 규칙에서 Reporting VPC CIDR(10.1.0.0/16) 허용 규칙 제거

  3. 애플리케이션에 지원 티켓 자동 생성 ("Reporting down for Imaging Platform")

  4. 에이전트가 진단하고 수정할 네트워크 장애를 시뮬레이션

이전에 Reporting VPC의 CIDR 범위에서 트래픽을 허용하던 인바운드 규칙이 제거되었는지 확인합니다.

손상된 보안 그룹

애플리케이션 장애 확인

CLI 또는 콘솔을 사용하여 ApplicationURL을 가져옵니다:

CLI 방법:

콘솔 방법:

AWS 콘솔arrow-up-right에서 AWS CloudFormation으로 이동합니다. sample-application 스택을 선택합니다. 중앙 패널에서 Outputs 탭을 클릭합니다. ApplicationURL의 값을 복사합니다.

노트북의 새 브라우저에서 이전 단계의 값을 붙여넣습니다. Support Tickets를 선택하고 View Tickets 탭을 클릭합니다. 새로운 지원 티켓이 생성된 것을 확인할 수 있습니다.

Support Ticket

에이전트 테스트

에이전트 실행

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

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

다음으로, bastion 인스턴스에서 테스트 스크립트를 실행합니다:

chevron-right🔍 이 스크립트는 무엇을 하나요?hashtag
  1. Cognito 로그인 화면이 브라우저에서 열림 (인증정보 입력 필요)

  2. OAuth2 Authorization Code 흐름으로 Bearer Token 획득

  3. AgentCore Runtime에 HTTP 연결 → 대화형 프롬프트 시작

  4. 에이전트가 Gateway를 통해 Lambda 도구를 호출하며 응답

Amazon Cognito를 사용하여 다음 자격 증명으로 인증합니다:

  • 사용자명: test@example.com

  • 비밀번호: TestPassword123!

circle-info

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

Cognito Auth

대화형 질문

채팅을 통해 에이전트에게 자연어로 4가지 질문을 합니다:

Q1: 도구 접근 확인

영어: What tools do you have?

Tools Access

에이전트가 사용 가능한 도구 목록(dns-resolve, connectivity, cloudwatch-monitoring)을 응답합니다.

Q2: DNS 해석 테스트

영어: Can you resolve reporting.examplecorp.com?

DNS 도구 테스트

에이전트가 dns-resolve 도구를 호출하여 호스트명을 IP와 인스턴스 ID로 해석합니다.

Q3: CloudWatch 통합 테스트

영어: Can you retrieve CPU Utilization for reporting.examplecorp.com for last 5 minutes?

CloudWatch Tool Test

에이전트가 DNS 해석 후 CloudWatch 메트릭을 조회합니다.

Q4: 연결성 문제 진단

영어: Can you check connectivity between reporting.examplecorp.com and database.examplecorp.com?

Connectivity Check

에이전트가 다음 단계를 자동으로 수행합니다:

  1. dns-resolve로 양쪽 호스트명 해석

  2. connectivity(action="check")로 VPC Reachability Analyzer 실행

  3. 보안 그룹 규칙 누락 발견 및 보고

Q5: 수정 요청

해결 요청 메시지가 나타나면 다음을 입력합니다:

영어: Yes, please fix

Connectivity Fix

에이전트가 사용자 동의를 확인한 후:

  1. connectivity(action="fix")로 보안 그룹 규칙 적용

  2. 수정 후 connectivity(action="check")로 자동 검증

세션을 종료하려면 exit를 입력합니다.

검증

VPC Reachability Analysis 세부 정보가 포함된 업데이트된 티켓을 확인합니다. VPC Reachability Analyzerarrow-up-right로 이동하여 문제 해결 중 사용된 경로를 검토합니다.

VPC Reachability Analyzer 결과
circle-check

이 단계가 완료되었습니다. Next를 클릭하여 진행하세요.

코드 분석: 에이전트 실행 흐름

TroubleshootingAgent 호출 과정 (agent.py, 179줄)

에이전트가 사용자 질문을 처리하는 전체 흐름:

도구 실행 흐름 (연결성 진단 예시)

시스템 프롬프트 핵심 규칙

규칙
설명

DNS 선행

DNS 이름 사용 시 반드시 dns-resolve 먼저 호출

DB 목적지 규칙

데이터베이스 목적지는 IP 주소 사용 (ENI ID 금지)

사용자 동의

action="fix" 실행 전 반드시 사용자 허가 필요

검증 필수

수정 후 action="check"로 반드시 결과 검증

포트 기본값

DB 연결은 TCP 3306 (MySQL) 사용

Break 스크립트 분석 (module-1-break-script.py, 324줄)

circle-info

핵심 포인트: Strands Framework의 재귀적 Event Loop이 핵심입니다. LLM이 tool_use를 반환하면 프레임워크가 자동으로 도구를 실행하고 결과를 LLM에 전달합니다. LLM이 최종 텍스트 응답을 반환할 때까지 이 루프가 반복되며, 개발자는 도구 실행 로직을 직접 구현할 필요가 없습니다.

마지막 업데이트