우당탕탕

AWS 비용 예상치 못하게 나왔을 때 원인 찾는 법, 제가 직접 겪은 사례로 풀어봤어요 본문

Tech/AWS

AWS 비용 예상치 못하게 나왔을 때 원인 찾는 법, 제가 직접 겪은 사례로 풀어봤어요

모찌모찝 2026. 5. 23. 10:38

AWS 비용이 갑자기 확 올라가버려서 제가 얼마나 당황했는지 몰라요. 분명 세팅할 때만 해도 비용 걱정이 크지 않았는데, 며칠 지나니 청구서가 생각보다 훨씬 많이 나왔더라고요. 이걸 해결하려고 여기저기 뒤지면서 실제로 확인하고 설정을 바꾼 경험을 공유하려고 해요.

이 글에서는 AWS 비용이 예상보다 많이 나올 때 어디서 원인을 찾아야 할지, 구체적인 명령어와 콘솔 설정값 확인법까지 제가 직접 겪은 삽질담을 중심으로 정리했어요. 이 글만 보면 비용 폭탄 피하는 팁은 물론, 내가 뭘 잘못했는지 바로 알 수 있을 거예요.

개발 환경 / 버전 정보

제가 주로 사용했던 환경은 AWS CLI v2AWS Management Console이에요. 인프라는 주로 EC2, S3, RDS를 사용했고, 비용 탐색은 Cost ExplorerAWS Billing 콘솔에서 주로 확인했어요.

AWS 비용 예상 못했을 때 원인 이렇게 찾았습니다

사실 처음에는 갑자기 늘어난 비용의 원인을 찾는 게 너무 막막했어요. 하지만 비용 분석의 키포인트는 "어떤 리소스가 많이 쓰였는지"와 "그 리소스가 왜 예상보다 많이 청구됐는지"를 확인하는 거더라고요.

# AWS CLI로 최근 비용 내역 확인
aws ce get-cost-and-usage \\
  --time-period Start=$(date -d '7 days ago' +%Y-%m-%d),End=$(date +%Y-%m-%d) \\
  --granularity DAILY \\
  --metrics "UnblendedCost" \\
  --group-by Type=DIMENSION,Key=SERVICE

이 명령어로 지난 7일 동안 서비스별 비용이 어떻게 나왔는지 한눈에 볼 수 있었어요. 제가 이걸로 놀란 게 바로 EC2 인스턴스와 EBS 볼륨 비용이 예상보다 훨씬 많이 나왔다는 점이었죠.

그래서 AWS Management Console의 Cost Explorer에서 서비스별 상세 비용 내역을 확인했어요. 특히 EC2 인스턴스가 24시간 내내 켜져 있는지, 혹은 사용하지 않는 인스턴스가 남아있는지 확인하는 게 중요했죠.

비용 폭탄의 주범, EC2 인스턴스 체크하기

제가 가장 많이 겪은 경우는 인스턴스를 중지하지 않고 그대로 두어서 비용이 계속 쌓인 케이스였어요. 특히 테스트용으로 띄워놓고 까먹는 경우가 많거든요.

# 현재 실행 중인 EC2 인스턴스 목록 확인
aws ec2 describe-instances \\
  --filters Name=instance-state-name,Values=running \\
  --query 'Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name}' \\
  --output table

이걸로 실행 중인 인스턴스가 무엇인지 보고, 혹시 필요 없는 인스턴스가 켜져 있는지 바로 알 수 있었어요. 저는 주로 't3.medium' 타입인데, 꼭 필요한 인스턴스만 켜놓으려고 노력했죠.

EBS 볼륨도 놓치기 쉬운 비용 요인

EC2 인스턴스를 종료해도 연결된 EBS 볼륨은 자동 삭제되지 않아서 비용이 계속 나올 수 있어요. 저는 이 부분에서 가장 많이 헷갈렸어요.

# 사용 중인 EBS 볼륨 리스트 및 상태 확인
aws ec2 describe-volumes \\
  --query 'Volumes[].{ID:VolumeId,Size:Size,State:State,Attachments:Attachments}' \\
  --output table

여기서 "available" 상태인 볼륨이 있으면 인스턴스와 연결 안 된 채로 비용만 발생하는 볼륨이에요. 저는 이런 볼륨을 찾아서 필요 없으면 바로 삭제했어요.

비용 증가에 숨은 또 다른 함정들

처음엔 EC2와 EBS만 봤는데, 나중에 보니까 모니터링용 로그가 엄청 쌓여서 S3 저장 비용도 크게 나왔더라고요. CloudWatch 로그가 예상보다 많이 생성되어 저장 비용 폭탄이 있었던 거죠.

# CloudWatch 로그 그룹별 저장 용량 확인
aws logs describe-log-groups --query 'logGroups[].{LogGroupName:logGroupName,StoredBytes:storedBytes}' --output table

이걸로 어떤 로그 그룹이 저장 공간을 많이 차지하는지 한눈에 확인 가능했어요. 저는 불필요한 로그 그룹 데이터를 주기적으로 삭제하거나 보존 기간을 짧게 설정해서 비용 절감했죠.

여기서 삽질했던 부분들, 비용 절감 실패 경험

처음에 비용이 많이 나온다고 바로 인스턴스나 볼륨을 삭제했다가, 실제 서비스에 영향 준 적도 있었어요. "내가 이 볼륨 없어도 되지 않나?" 싶어서 삭제했는데, 복구에 시간이 꽤 걸려서 다시 복구하는 해프닝이 있었죠.

Error: Volume in-use, cannot delete

이 에러 메시지를 무시하고 덜컥 삭제하려다 서비스 장애가 발생했었어요. 그래서 꼭 볼륨과 인스턴스 연결 상태를 다시 한 번 확인하는 습관을 들였어요.

또 CloudWatch 로그 데이터 자동 삭제 설정을 깜빡해서 비용이 계속 쌓였던 적도 있었는데, 이런 부분은 콘솔에서 "Retention settings"를 꼭 확인해야 하더라고요.

심화: 비용 최적화 자동화도 고려해보세요

나중엔 비용이 너무 커지지 않게 CloudWatch 알람과 Lambda를 연동해서 불필요한 리소스를 자동으로 종료하거나 삭제하는 자동화도 도입했어요. 처음엔 복잡해 보여서 망설였는데, 자동화 설정 후 비용이 꽤 안정적으로 관리되더라고요.

// CloudWatch 비용 알람 예시 (AWS CLI)
aws cloudwatch put-metric-alarm \\
  --alarm-name "HighEC2Cost" \\
  --metric-name EstimatedCharges \\
  --namespace AWS/Billing \\
  --statistic Maximum \\
  --period 21600 \\
  --threshold 20 \\
  --comparison-operator GreaterThanThreshold \\
  --evaluation-periods 1 \\
  --alarm-actions arn:aws:sns:region:account-id:sns-topic-name \\
  --dimensions Name=Currency,Value=USD

이 알람을 통해 청구 비용이 특정 금액을 넘으면 바로 알림을 받을 수 있어요. 저도 이걸 계기로 미리 조치를 취해서 큰 비용 폭탄을 맞지 않게 됐죠.

자주 물어보시는 것들

Q. 중지한 EC2 인스턴스도 비용이 나오나요?

A. 네, 인스턴스를 중지해도 연결된 EBS 볼륨은 계속 비용이 발생해요. 그래서 중지한 인스턴스와 연결된 볼륨도 같이 관리해야 비용이 절감됩니다.

Q. Cost Explorer에서 비용 상세가 안 나와요, 왜 그런가요?

A. 비용 데이터가 최대 24시간 정도 지연될 수 있어요. 그리고 조직 계정이나 Consolidated Billing 설정에 따라 표시가 다를 수도 있으니 계정 권한과 설정을 꼭 확인하세요.

AWS 비용이 예상보다 많이 나오면 당황스럽지만, 제가 직접 겪으면서 배운 주요 점은 리소스 상태를 꼼꼼히 확인하고 모니터링 시스템을 잘 구축하는 게 핵심이라는 거예요. 이렇게만 하면 불필요한 비용을 꽤 줄일 수 있답니다.

Comments