AWS 요금 폭탄, 흔한 원인 네 가지와 무료 예방 장치
AWS 요금 폭탄은 NAT 게이트웨이 처리 요금, 리전·가용영역 간 데이터 전송, 켜 둔 채 잊은 공인 IPv4, 외부 S3 요청에서 주로 생긴다. AWS 비용 이상 탐지와 CloudWatch 청구 경보는 무료이니 계정을 만들자마자 걸어 두는 것이 예방의 핵심이다.
목차
AWS 요금 폭탄은 대부분 정해진 몇 곳에서 터진다. NAT 게이트웨이 데이터 처리 요금, 리전과 가용영역을 넘나드는 데이터 전송, 켜 두고 잊은 공인 IPv4 주소, 그리고 외부에서 쏟아지는 S3 요청이 대표적이다. 막는 방법은 의외로 단순하다. AWS 공식 요금 문서와 비용 관리 도구를 기준으로 보면, 계정을 만들자마자 무료인 비용 이상 탐지(Cost Anomaly Detection)와 청구 경보부터 걸어 두는 것이 첫 안전장치다. 이 글은 2026년 7월 기준으로 AWS 퍼블릭 클라우드를 직접 운영하는 개발자를 대상으로, 요금이 튀는 원인과 무료로 걸 수 있는 예방 설정만 다룬다. 조직 단위 비용 배분이나 회계 처리는 범위 밖이다.
요금 폭탄은 왜 예고 없이 터지나
요금이 갑자기 튀는 건 대개 한 번의 실수가 아니다. 규모가 작을 때는 티가 안 나던 구조가 트래픽이 늘면서 비용으로 바뀐 결과다. AWS는 리소스를 켜 둔 시간과 처리한 데이터 양에 따라 과금하는데, 데이터 전송이나 요청 건수처럼 눈에 잘 안 띄는 항목이 청구 주기 내내 조용히 쌓인다.
신규 계정이라면 크레딧이 방심의 원인이 되기도 한다. AWS 공식 발표에 따르면 2025년 7월부터 새 계정은 12개월 무료 대신 최대 200달러의 크레딧을 받고, 크레딧을 다 쓰거나 6개월이 지나면 유료로 전환된다. 자세한 조건은 AWS 프리 티어 안내 페이지에 정리돼 있다. 크레딧에 기대 리소스를 늘려 두면 전환되는 순간 그동안 크레딧으로 덮이던 항목이 한꺼번에 요금으로 잡힌다.
NAT 게이트웨이와 데이터 전송이 첫 번째 범인
요금 폭탄의 원인 1순위는 네트워크 요금, 그중에서도 NAT 게이트웨이(사설 서브넷의 리소스가 인터넷으로 나가게 해 주는 관문) 데이터 처리 요금이다. AWS 요금 문서 기준으로 NAT 게이트웨이는 통과하는 데이터 1GB마다 약 0.045달러의 처리 요금을 매기고, 게이트웨이를 켜 둔 시간당 요금은 여기에 더해진다.
함정은 이 처리 요금이 S3처럼 데이터 전송 요금이 따로 없는 AWS 서비스로 가는 트래픽에도 붙는다는 점이다. 컨테이너가 이미지를 반복해서 내려받거나, 한 가용영역의 서버가 다른 영역의 데이터베이스를 쉴 새 없이 조회하면(가용영역 간 전송도 GB당 과금된다) 처리 요금이 청구 주기 내내 쌓인다.
해법은 트래픽을 NAT 밖으로 빼는 것이다. S3와 DynamoDB는 게이트웨이 엔드포인트를 무료로 붙일 수 있어 NAT 처리 요금이 사라지고, 나머지 서비스는 인터페이스 엔드포인트(PrivateLink)로 GB당 약 0.01달러에 처리한다. S3용 게이트웨이 엔드포인트는 명령 한 줄로 만든다.
aws ec2 create-vpc-endpoint \
--vpc-id vpc-0abc1234 \
--vpc-endpoint-type Gateway \
--service-name com.amazonaws.ap-northeast-2.s3 \
--route-table-ids rtb-0def5678켜 두고 잊은 공인 IPv4와 유휴 리소스
쓰지도 않는데 요금이 새는 대표 항목이 공인 IPv4 주소다. AWS는 2024년 2월 1일부터 모든 공인 IPv4 주소에 시간당 0.005달러를 부과한다고 공지했다. 인스턴스에 붙어 돌아가든 그냥 놀고 있든 요금은 같다. 주소 하나가 한 달이면 약 3.6달러(0.005 × 24시간 × 30일)이고, 안 쓰는 Elastic IP 여러 개와 종료를 잊은 로드밸런서, 테스트하고 남겨 둔 인스턴스가 겹치면 금세 수십 달러가 된다.
같은 공지에서 AWS는 EC2 프리 티어에 매달 750시간의 공인 IPv4 사용 시간을 12개월간 포함한다고 밝혔다. 다만 이건 신규 계정 한정이라 기존 계정이나 프리 티어 밖 리소스는 그대로 과금된다. 예방의 절반은 안 쓰는 리소스를 지우는 습관이다. Elastic IP, 오래된 스냅샷과 EBS 볼륨, 방치된 로드밸런서를 주기적으로 점검하자.
빈 S3 버킷에도 요금이 나올 수 있나
지금은 대체로 아니다. 내 계정 밖에서 들어와 거부된 요청은 무료로 바뀌었다. 2024년 한 개발자가 공개한 사례에서, 비워 둔 S3 버킷에 외부 도구가 하루 만에 약 1억 건에 이르는 PUT 요청을 보내 약 1,300달러가 청구된 일이 있었다. 버킷 이름이 어떤 오픈소스 백업 도구의 기본값과 우연히 같았던 게 원인이었다.
이 사례가 알려진 뒤 AWS는 2024년 5월, 계정이나 조직 밖에서 들어와 접근 거부(HTTP 403)로 처리된 요청에는 요금을 물리지 않도록 정책을 바꿨다고 발표했다. 그렇다고 S3 요청 자체가 공짜가 된 건 아니다. 내 애플리케이션이 잘못 설계돼 같은 객체를 초당 수천 번 조회하거나 재시도 로직이 무한 루프에 빠지면 요청 요금은 정상적으로 청구된다. S3가 요청 건수로 과금한다는 점을 코드를 짤 때 염두에 두는 편이 안전하다.

무료 안전장치부터 건다
비용을 줄이기 전에 먼저 측정한다는 원칙은 클라우드든 LLM 프롬프트 토큰이든 똑같다. 계정을 만들자마자 무료 도구 세 개를 걸어 두면 최소한 요금이 조용히 커지는 상황은 막을 수 있다.
| 도구 | 하는 일 | 무료 범위 |
|---|---|---|
| 비용 이상 탐지 | 평소와 다른 지출을 자동 감지 | 완전 무료 |
| CloudWatch 청구 경보 | 총액이 기준 초과 시 알림 | 계정당 10개 |
| AWS Budgets | 예산·사용량 임계 알림 | 2개 무료, 이후 하루 $0.02 |
순서는 이렇다. 먼저 비용 이상 탐지를 켠다. AWS 비용 이상 탐지는 머신러닝으로 평소 지출 패턴을 학습해 벗어나는 지출을 하루 세 번가량 검사하며, 완전 무료다. 다만 기준선을 학습하는 데 약 10일치 이력이 필요하고 결과가 유효해지기까지 하루 정도 걸리니 일찍 켤수록 좋다.
다음으로 CloudWatch 청구 경보를 건다. 총 청구액(EstimatedCharges 지표)이 정한 금액을 넘으면 알림이 온다. 계정당 10개까지 무료지만, 청구 지표는 미국 동부(버지니아 북부, us-east-1) 리전에서만 생성하고 조회할 수 있으니 콘솔에서 리전을 먼저 바꿔야 한다. 마지막으로 AWS Budgets로 월 상한과 임계 알림을 잡는다. 예산 두 개까지는 무료이고 그 이상은 하나당 하루 0.02달러 정도가 붙는다.
세 도구는 청구서를 보여 줄 뿐 요금을 대신 막아 주지는 않는다. 알림이 왔을 때 곧바로 리소스를 확인하고 지우는 사람이 결국 폭탄을 막는다.
