| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 커머스
- 14일 공부
- MAPF
- Go-lang
- DevOps
- 토스
- AWS 비용 절감
- amazon ecs
- PostgreSQL
- 논문 정리
- 구조 패턴
- github
- ssh
- AWS
- 오블완
- 청첩장 모임
- 지표
- 생성 패턴
- 실용주의 프로그래머
- leetcode
- terraform
- Til
- Playwright
- 경로 계획 알고리즘
- 디자인 패턴
- 티스토리챌린지
- Rust
- docker
- study
- 신혼 여행
- Today
- Total
밤 늦게까지 여는 카페
[AWS 비용 절감] AWS RDS 인스턴스 삭제는 못하고 비용은 아깝고 ㅜㅠ - aws cli와 crontab을 이용한 DB 인스턴스 일시 정지 자동화 본문
[AWS 비용 절감] AWS RDS 인스턴스 삭제는 못하고 비용은 아깝고 ㅜㅠ - aws cli와 crontab을 이용한 DB 인스턴스 일시 정지 자동화
Jㅐ둥이 2024. 4. 27. 02:21안녕하세요. 선선한 날씨가 이어지고 있는데 저는 언제 여름이 갑작스럽게 찾아올지 두려움에 떨고 있습니다 ㅋㅋㅋ...
이번에는 crontab을 이용해서 AWS RDS DB 인스턴스를 자동으로 일시정지 시켜주는 스크립트를 만드려고 합니다.
1. RDS DB 인스턴스 일시 정지 자동화가 왜 필요해요?
그런 게 왜 필요하냐고요? 필요한 상황이 오더라고요... ㅜ
- 퇴사하신 분이 생성한 DB 인스턴스가 관리되지 않고 있다가 비용이 지불되는 것을 발견함. 하지만 지워도 되는지 모름 ㅜㅠ
- 제품의 초기 버전과 연결된 DB 인스턴스. 사용량이 매우 적지만 한 번씩은 사용하는 경우.
이렇게 AWS RDS DB 인스턴스를 지우지는 못하지만 비용은 아까울 때 사용할 수 있는 방법이 바로 RDS DB 인스턴스를 일시적으로 중단시키는 것입니다!
하지만 RDS DB 인스턴스는 최대 일주일 동안만 일시 정지 시킬 수 있습니다 ㅜㅠ
그래서 일주일마다 RDS DB 인스턴스를 일시 정지시켜줘야 합니다.
수동으로 일시 정지 시키는 것은 너무 귀찮으니 aws cli와 crontab을 이용해서 자동화시키려고 합니다!
2. aws cli와 crontab이 뭐에요?
aws cli(Amazon Web Services Command Line Interface)는 AWS 서비스를 관리하기 위한 통합 도구입니다.
AWS Management Console을 통해 수행할 수 있는 작업 대부분을 커맨드 라인에서 실행할 수 있는데
RDS DB 인스턴스를 일시 정지시키는 것이 aws cli의 역할입니다.
crontab은 UNIX 기반 시스템에서 시간 기반의 작업 스케줄러입니다.
crontab을 이용해서 사용자는 정해진 시간 또는 주기에 따라 스크립트, 명령어, 프로그램 등을 자동으로 실행할 수 있는데
aws cli를 이용해서 RDS DB 인스턴스를 일주일마다 일시 정지 시키는 것이 crontab의 역할입니다.
aws cli 설치 방법은 AWS 공식 문서를 참고해 주세요!
- AWS 공식 문서 링크: https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
crontab은 다음 명령어들을 통해서 설치할 수 있습니다.
sudo apt update
sudo apt install cron
sudo systemctl enable cron
https://repost.aws/knowledge-center/rds-stop-seven-days-step-functions 와 같이 AWS의 서비스를 이용해서 자동화시키는 방법도 있었지만 aws cli와 crontab을 사용하는 것이 훨씬 간단하여 이 방법을 선택했습니다.
3. 구체적인 자동화 방법 알려주세요!
3.1. aws cli를 이용한 RDS DB 인스턴스 일시 정지
1차적으로 필요한 aws cli를 이용하여 RDS DB 인스턴스를 일시 정지시키는 방법은 간단했습니다!
aws cli 문서를 참고하니 다음 명령어를 이용해서 RDS DB 인스턴스를 일시 정지시킬 수 있었습니다.
- mydbinstance는 적절한 값으로 수정이 필요합니다.
- 참고 링크: https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/stop-db-instance.html
aws rds stop-db-instance --db-instance-identifier mydbinstance
3.2. crontab을 이용한 스크립트 자동 실행
이제 위의 명령어를 일주일마다 실행시킬 수 있도록 crontab을 사용해야겠죠?
crontab을 설치하고 터미널에 crontab -e 를 입력하면 어떤 편집기를 사용할지 고릅니다.
(저는 익숙한 vim을 골랐습니다)

그리고는 작업들을 설정하는 화면에 진입하게 됩니다.

마지막줄에 0 18 * * 1 aws rds stop-db-instance --db-instance-identifier mydbinstance을 추가하고 vim을 종료시키면 crontab 작업이 설정된 것입니다!

4. 이제 RDS DB 인스턴스 비용은 0원인가요?
아쉽게도 지출되는 비용이 있습니다.
RDS DB 인스턴스가 종료되더라도 DB 인스턴스가 사용하던 저장소는 그대로 남아있습니다. 그래서 저장소 비용이 계속해서 지출됩니다.
혹시라도 일시 정지시키는 DB 인스턴스의 용량이 클 경우, 용량을 줄일 수 있는 방법을 찾아야 합니다!