채팅으로 AWS 인시던트 진단·제어 가능한 OpsAgent Controller
OpsAgent Controller는 채팅 인터페이스로 AWS 리소스 진단과 태그 기반 승인 워크플로를 통해 안전한 운영 조치를 실행하고 모든 활동을 감사 로그에 기록한다.
TL;DR
이 레포는 플랫폼 엔지니어가 콘솔과 여러 서비스를 오가며 수동으로 문제를 진단하고 조치하던 절차적 마찰을 줄이고자 채팅 기반의 운영 도구를 제공한다. 사용자는 Teams, Amazon Q Business 또는 웹 인터페이스로 자연어 요청을 보내면 Lambda가 Bedrock LLM으로 의도를 파악해 적절한 진단 툴을 호출하고 읽기 작업은 즉시 결과를 반환하지만 파괴적 쓰기 작업은 15분 TTL의 일회용 승인 토큰과 리소스 태그 검증을 통해 안전하게 실행된다. 모든 액션은 CloudWatch Logs와 DynamoDB에 상관 ID와 함께 기록되어 감사성과 추적성을 확보하며 Terraform/SAM 템플릿을 통해 빠르게 배포하고 실행 모드를 바꿔 DRY_RUN이나 실제 실행을 쉽게 전환할 수 있다.
주요 기능
- 자연어 채팅 인터페이스를 통해 EC2, CloudWatch, ALB, CloudTrail 등 AWS 진단 작업을 호출할 수 있으며 LLM이 사용자의 의도를 파싱해 적절한 진단 툴을 선택한다. 이 과정에서 읽기 연산은 즉시 실행되어 메트릭과 상태 정보를 반환한다. 반환된 결과는 후속 조치 결정과 감사 로그에 연계된다.
- 파라미터화된 쓰기 작업은 제안 → 승인 → 실행의 워크플로를 따른다. 제안 시 Lambda가 입력을 JSON 스키마로 검증하고 리소스 태그를 확인하며 조건을 만족하면 15분 TTL의 일회용 승인 토큰을 생성하여 DynamoDB에 저장한다. 승인 토큰을 제출해야만 실제 재부팅이나 ECS 스케일링 같은 파괴적 작업이 실행되어 무단 변경을 방지한다.
- 모든 액션은 CloudWatch Logs와 DynamoDB에 상관 ID와 함께 기록되어 감사와 추적이 가능하다. 로그 보존 기간은 구성 가능한 값(예: 90일)으로 설정되어 있으며 KMS로 암호화된 상태로 저장된다. 이중 로그 저장 구조는 운영 중 문제의 원인 규명과 책임 추적을 용이하게 한다.
- Amazon Q Business, Microsoft Teams, 웹 및 curl 같은 다양한 채널을 통해 동일한 챗 기반 인터페이스를 사용할 수 있으며 OpenAPI 호환 플러그인 엔드포인트를 제공한다. Amazon Q와의 하이브리드 모드는 지식 질의와 운영 툴 호출을 라우팅하도록 설계되어 각 경로를 분리한다. Teams 통합은 Azure Bot Framework 앱을 등록하고 자격증명을 SSM에 보관하는 표준 절차를 따른다.
- 인프라 코드는 Terraform과 AWS SAM 템플릿으로 제공되어 로컬 테스트, 샌드박스와 프로덕션 배포 경로를 모두 지원한다. 배포 파이프라인은 lambda 패키지 빌드와 terraform apply 흐름으로 구성되어 있으며 실행 모드(DRY_RUN, SANDBOX_LIVE 등)를 통해 실제 자원 변경을 제어할 수 있다. 이 구성은 반복 가능한 배포와 환경별 설정 분리를 용이하게 한다.
어떻게 동작하는가
사용자가 Teams, Amazon Q Business, 웹 또는 API로 메시지를 전송하면 API Gateway가 API 키로 인증을 수행하고 요청을 Lambda로 전달한다. Lambda 내부에서 Amazon Bedrock 기반 LLM이 사용자의 의도를 파싱하고 적절한 진단 또는 수정 툴을 선택하며 입력은 JSON 스키마와 태그 검증으로 가드레일을 통과한다. 읽기 연산은 즉시 실행되어 결과를 반환하고 쓰기 연산은 DynamoDB에 저장된 일회용 승인 토큰으로 검증된 후 실행되며 모든 작업은 CloudWatch Logs와 DynamoDB에 상관 ID와 함께 기록된다.
해결 문제
운영 중인 EC2 인스턴스가 심야에 응답하지 않을 때 엔지니어가 콘솔과 여러 서비스를 오가며 원인 파악과 수동 조치를 수행해야 하는 절차적 마찰을 줄인다. 이 레포는 진단과 제어를 하나의 채팅 인터페이스로 통합하고 LLM 기반 의도 분류와 툴 선택을 통해 필요한 AWS 호출을 자동으로 조합한다. 또한 태그 기반 자원 범위 제한, 승인 토큰, 그리고 감사 로그로 무단 변경을 방지하고 행위의 추적 가능성을 확보한다.
지금 주목받는 이유
이 레포는 채팅 기반 운영(ChatOps)에 안전 가드레일과 감사 기능을 결합해 플랫폼 엔지니어의 MTTR을 줄이는 실용적 솔루션을 제공하므로 주목받고 있다. Amazon Bedrock 연동과 Amazon Q Business 플러그인 지원으로 기업 채널과의 통합 진입 장벽을 낮추었으며 Terraform/SAM 기반 배포 템플릿이 빠른 도입을 촉진한다. 또한 승인 토큰과 태그 검증 같은 안전성 설계가 운영 요구와 규제 요구를 동시에 충족한다는 점이 관심 요인이다.
차별점
- 태그 검증과 IAM 조건을 결합해 수정 가능한 리소스를 OpsAgentManaged=true 태그로 제한하므로 의도치 않은 리소스 변경을 방지한다. 이 검증은 툴 실행 전에 코드 레벨과 IAM 정책 양쪽에서 강제되어 안전 경계를 중복 확인한다. 태그 기반 스코핑은 기존 단일 역할 접근 방식보다 세부 권한 관리를 용이하게 한다.
- 승인 토큰(15분 TTL, 단일 사용)은 파괴적 쓰기 작업에서 안전한 휴먼 인 더 루프를 보장하므로 재부팅이나 ECS 스케일링 같은 작업은 사용자 확인 없이는 실행되지 않는다. 토큰 라이프사이클과 로깅은 DynamoDB와 CloudWatch에 기록되어 승인이 어떻게 이루어졌는지 재현 가능하다. 이 구조는 자동화의 편의성과 운영 안전성 사이의 균형을 제공한다.
- 배포 인프라가 Terraform과 AWS SAM 양쪽을 지원하여 사용자가 선호하는 IaC 툴체인으로 쉽게 통합할 수 있다. lambda 패키지 빌드 스크립트와 샘플 변수 파일이 제공되어 빠른 배포가 가능하며 실행 모드로 DRY_RUN과 SANDBOX_LIVE를 선택해 실환경 영향 없이 검증할 수 있다. 이중 지원은 다양한 조직의 배포 표준에 맞추기 쉬운 이점을 제공한다.
사용 사례
- 운영 중 CPU 과부하로 인한 서비스 지연 상황에서 챗으로 대상 인스턴스의 CloudWatch 메트릭을 조회하고 권장 조치를 제안받은 뒤 승인 토큰으로 안전하게 재부팅을 수행하는 시나리오이다. 이 흐름은 진단→제안→검토→승인→실행의 명확한 절차를 통해 변경 책임을 기록한다. 결과는 DynamoDB와 CloudWatch에 상관 ID로 남아 이후 분석과 포렌식에 사용된다.
- 서비스 헬스 체크 경보 발생 시 ALB 타깃 헬스와 CloudTrail 이벤트를 한 번의 채팅으로 조회하여 원인을 파악하고 필요 시 인스턴스 교체나 ECS 스케일링 같은 운영 조치를 제안하는 시나리오이다. 제안된 파괴적 작업은 태그와 승인 토큰 검증을 통과해야 실행되어 안전성을 확보한다. 알림과 사고 기록은 SNS와 DynamoDB로 전파되어 통합 모니터링 체계에 포함된다.
- 팀에서 Amazon Q Business 또는 Microsoft Teams 플러그인을 통해 동일한 인터페이스로 운영 워크플로를 연결하여 채널 내에서 진단, 승인, 알림을 일원화하는 시나리오이다. 플러그인 등록과 인증은 OpenAPI 스펙과 API 키를 통해 처리되며 bot 자격증명은 SSM에 보관된다. 이 통합은 수작업 알림과 채널 전환을 줄여 커뮤니케이션 오버헤드를 감소시킨다.
시작하기
빠르게 시작하려면 repository의 infrastructure-terraform 디렉토리로 이동해 제공된 빌드 스크립트로 Lambda 패키지를 생성한 뒤 terraform init과 terraform apply로 스택을 배포한다. 배포 후에는 SSM에 API 키와 사용자 허용 목록을 설정하고 배포된 API 엔드포인트로 curl이나 Teams/Amazon Q 플러그인을 통해 요청을 보낼 수 있다. 로컬 개발과 테스트는 제공된 sam 템플릿과 local-env.json을 사용해 sam local start-api로 시뮬레이션 환경을 실행할 수 있다.
요구사항
- 로컬 개발과 패키징에는 Python 3.9 이상이 필요하며 Lambda 런타임은 python3.13, 아키텍처는 arm64로 설정되어 있다. 런타임 호환성을 위해 cross-compiled 종속성 빌드가 포함된 build.sh를 사용해야 하며 테스트는 pytest로 수행된다. 배포 전에는 AWS CLI, Terraform 및 (Teams 통합 시) Azure CLI가 설치되어 있어야 한다.
- 배포를 수행할 IAM 계정에는 Lambda, API Gateway, DynamoDB, IAM, CloudWatch, SSM, SNS, SQS, KMS, S3 및 Bedrock 관련 권한이 필요하다. Anthropic Claude 모델을 사용하려면 Bedrock 마켓플레이스 구독 절차를 완료하고 Lambda 실행 역할에 aws-marketplace 관련 권한을 부여해야 한다. 권한이 부족하면 모델 호출 또는 자원 생성 단계에서 AccessDenied 오류가 발생한다.
- 인프라 도구로 Terraform >= 1.5와 AWS SAM을 사용하며 로컬 테스트에는 Docker 컨테이너 기반의 sam build 옵션이 권장된다. 또한 로그 조회와 운영 검증을 위해 jq와 같은 유틸리티가 편리하며 프로덕션 배포 시 alarm_email과 같은 변수들을 terraform.tfvars에 설정해야 모니터링이 제대로 동작한다. Lambda의 권장 기본 메모리는 1024MB, 타임아웃은 60초로 설정되어 있다.
667
Stars
84
Forks
+205
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.