- AWS VPC 네트워킹과 NAT Gateway 구성 오류로 인해 S3 데이터 전송 비용이 하루 만에 약 $900, 한 달 누적으로 $1,000을 초과한 사례
- EC2에서 S3로의 전송은 무료라고 알려져 있으나, VPC 내 NAT Gateway를 경유하면 유료 데이터 처리 요금이 발생
- 문제의 원인은 S3용 VPC Gateway Endpoint 누락으로, NAT Gateway를 거치지 않고 S3로 직접 연결하는 설정이 없었던 점
- Gateway Endpoint는 무료이며 데이터 전송 요금이 발생하지 않음, Terraform 등으로 간단히 설정 가능
- AWS 인프라 운영 시 비용 감시와 VPC Endpoint 구성 점검의 중요성을 보여주는 사례
문제의 배경
- Geocodio는 내부 대용량 지리 데이터 파일을 S3로 미러링하기 위해 AWS를 사용
- 데이터는 주소 포인트, 경계 데이터, 인구조사 정보 등으로, 수 GB에서 수백 GB 규모
- Hetzner에 호스팅된 ETL 플랫폼에서 AWS 처리 인프라로 정기적으로 동기화 필요
- AWS의 데이터 전송 비용이 높음은 업계 전반의 공통 불만으로, Cloudflare와 Corey Quinn 등이 관련 문제를 지적
- 작성자는 프로젝트 시작 전 비용 구조를 검토해
- 같은 리전 내 EC2–S3 전송은 무료
- S3로의 업로드(입력)는 무료
라는 점을 확인하고 비용을 예측
예기치 못한 비용 발생
- S3 동기화 프로세스 배포 후 AWS Cost Anomaly Detection에서 이상 경고 수신
- 하루 동안 NAT Gateway 데이터 전송량이 20,167.32GB, 비용 $907.53 발생
- 월 누적 비용이 이미 $1,000을 초과
- EC2–S3 전송이 무료인 줄 알았던 상황에서 NAT Gateway 요금이 청구된 이유를 조사
원인 분석: NAT Gateway 경유
- VPC에서 NAT Gateway를 사용하는 경우, S3 트래픽도 기본적으로 NAT Gateway를 통해 라우팅됨
- 동일 리전 내 AWS 서비스로의 요청이라도 NAT를 거치면 GB당 $0.045의 데이터 처리 요금 발생
- 이로 인해 EC2–S3 간 전송이 무료임에도 불구하고 NAT Gateway 비용이 청구
- 해결책은 S3용 VPC Gateway Endpoint 생성
- NAT Gateway나 Internet Gateway를 거치지 않고 VPC에서 S3로 직접 연결
-
완전 무료이며 시간당 요금이나 전송 요금 없음
해결 과정
- Terraform으로 인프라를 관리하고 있어, Gateway Endpoint 리소스를 추가하고 라우트 테이블에 연결
- AWS가 자동으로 라우팅을 업데이트하여 S3 트래픽을 NAT Gateway 대신 Endpoint로 전송
- 이후 NAT Gateway 관련 과금이 중단
교훈과 권장 사항
- 오랜 기간 AWS를 사용했음에도 S3용 VPC Endpoint 설정 누락으로 인한 비용 발생
- AWS 네트워킹은 복잡하며, 비용 구조는 설정 방식에 따라 크게 달라질 수 있음
- 재발 방지를 위한 권장 사항
-
AWS Cost Anomaly Detection 활성화: 이상 비용을 조기에 탐지 가능
-
VPC Endpoint 사용: NAT Gateway를 사용하는 VPC에서 S3·DynamoDB 접근 시 필수
-
가정 검증: “EC2–S3 전송은 무료”라는 전제만 믿지 말고, 소량 테스트 후 비용 모니터링 필요
-
클라우드는 복잡함: 장기 사용자라도 지속적인 주의 필요
- 유사 사례로 Recall.ai가 WebSocket 데이터 처리 비용으로 연간 $100만을 지불한 사례 언급
후속 조치
- Geocodio는 모든 VPC의 S3 통신 경로를 점검하고 Gateway Endpoint 구성 완료
- AWS 사용자에게 VPC Endpoint 설정 확인을 권장
- 요약: NAT Gateway는 AWS 서비스로의 트래픽도 과금 대상이며, VPC Endpoint 사용으로 비용 회피 가능
추가 자료