Skip to content

builtkwon/cloud-bill-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

☁️ Cloud Bill Bot

AWS EC2 인스턴스 상태를 Discord 채널에서 실시간으로 조회할 수 있는 슬래시 명령어 기반 클라우드 어시스턴트 봇입니다.
Discord API와 AWS SDK(Boto3)를 활용하여 간편한 인프라 모니터링을 자동화합니다.


✨ 취지

무료 플랜으로 연습하던 중 뒤늦게 비용이 발생한 것을 확인하고 눈물을 훔쳤습니다.
그래서 비용 청구 상태를 디스코드에서 바로 확인하고 싶었습니다.
Slack은 무겁고, 브라우저는 번거롭고, 디스코드가 열려 있길래 봇으로 만들었습니다.


📌 기능 소개 (discord 명령어)

  • /setup : AWS Access Key, Secret Key, Region 선택 → 안전하게 암호화되어 저장
  • /status : 현재 연결된 AWS 계정의 전체 리소스 상태 조회
  • /account : 현재 연결된 AWS 계정 조회
  • /bill : 현재 연결된 AWS 계정의 비용 청구 상태 조회
  • /region : 현재 설정된 region/지역 조회 및 업데이트
  • /private : 이후 메세지를 "나만보기" 함
  • /public : 이후 메세지를 "전체공개" 함

🧱 아키텍처

  • 본 프로젝트는 MVC + Command Handler 패턴을 기반으로 명확한 역할 분리를 통해 유지보수성과 확장성을 높였습니다.

🛠️ 사용 기술

구분 내용
언어 Python 3.11+
Discord API discord.py (v2.3+)
AWS SDK boto3
환경 관리 python-dotenv
암호화 cryptography.fernet

📂 프로젝트 구조

cloud-bill-bot/
├── bot.py                       ← 엔트리 포인트 (봇 초기화, 명령어 등록)
├── app/
│   ├── commands/                ← 명령어 핸들러
│   │   ├── setup_handler.py
│   │   ├── region_handler.py
│   │   ├── status_handler.py
│   │   ├── bill_handler.py
│   │   └── ...
│   ├── services/                ← 실제 도메인 로직
│   │   ├── setup_service.py
│   │   ├── region_service.py
│   │   ├── status_service.py
│   │   ├── bill_service.py
│   │   └── ec2_service.py
├── interface/
│   ├── views/                   ← Modal, View, Select 등 UI 요소
│   │   ├── setup_view.py
│   │   └── region_view.py
│   ├── setup_command.py
│   ├── region_command.py
│   ├── status_command.py
│   ├── bill_command.py
│   └── ...
├── infra/
│   ├── aws_client_factory.py
│   ├── memory_config.py
│   ├── crypto.py
│   └── user_config.py
├── config/                      ← Guild/유저별 키 저장소
├── encryption_key.key
├── .env
├── requirements.txt
└── README.md


---

## 🚧 향후 확장 계획

- [x] EC2 외 S3, RDS, Billing 등 자원 감시 확장
- [x] 나만보기/전체공개 설정 추가
- [x] /ec2start, /ec2stop 명령어 추가
- [ ] 생성형 QnA 도우미 추가
- [ ] CloudWatch 알림 연동 (일정 금액 초과시 자동 채널 알림 연동)
- [ ] 비용 분포도 표시 기능 검토

---

## ⚠️ 주의사항

- `.env`, `encryption_key.key`, `config/` 내 JSON 파일은 Git에 커밋하지 마세요
- 봇은 Discord 서버별로, 유저별로 정보를 분리하여 관리합니다

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages