테크 경제

AWS 클라우드 공부 중 실수로 요금 폭탄 맞지 않는 방법: NAT Gateway·API 키 유출 방지까지

AWS 클라우드 공부 중 실수로 요금 폭탄 맞지 않는 방법: NAT Gateway·API 키 유출 방지까지

AWS 콘솔 로그아웃하고 잠들었는데, 아침에 일어나니 30만 원이 청구돼 있어요. 2026년에도 이 이야기는 AWS 커뮤니티에서 매달 반복되고 있어요. 학습 목적으로 잠깐 켜둔 RDS, 삭제했다고 생각했던 NAT Gateway, GitHub에 실수로 올라간 API 키. 이 세 가지만으로도 수십만 원에서 수천만 원까지 날아갈 수 있어요.

BSG Global 블로그에 따르면 AWS는 한국 클라우드 시장에서 여전히 압도적 1위예요. 그만큼 AWS 공부를 시작하는 국내 개발자와 취업 준비생이 많은데, “요금 폭탄 안 맞는 방법"을 미리 알고 시작하는 사람은 생각보다 적어요.

이 글에서는 실제 청구 사례와 AWS 공식 메커니즘을 바탕으로, 어디서 돈이 새는지와 어떻게 막는지를 구체적으로 짚을게요.


핵심 요약

  • NAT Gateway, EIP, RDS 스냅샷은 삭제해도 잔여 요금이 발생하는 대표적 함정이며, 당월 사용분은 다음 달에 청구돼요.
  • GitHub에 AWS API 키가 한 번이라도 올라가면 수 분 내 봇이 감지해 GPU 인스턴스를 스핀업하고, 수천만 원대 청구가 가능해요.
  • AWS Budgets + SNS + Chatbot 조합으로 $0.10 단위 알람을 설정하면 과금 인지 시간을 몇 초로 줄일 수 있어요.
  • 개인 계정은 학습 목적 과금에 한해 1회 환불 또는 크레딧 요청이 가능하지만, 기업 계정은 사용자 과실 시 환불 거절 가능성이 높아요.
  • 모든 실습 리소스는 그날 바로 삭제하는 습관이, 어떤 예산 설정보다 확실한 방어예요.

AWS 요금 구조, 함정이 많은 이유

Free Tier 12개월을 믿고 편하게 쓰기 쉬워요. 문제는 Free Tier가 생각보다 좁다는 거예요.

오늘 쓴 비용은 내일 빌링 대시보드에 반영되고, 리소스를 삭제해도 당월 사용분은 다음 달 3일쯤 청구돼요. “삭제했으니까 괜찮겠지"라는 안도가 다음 달 카드 명세서 앞에서 깨지는 구조예요.

특히 이런 서비스들이 조용히 돈을 먹어요:

  • NAT Gateway: VPC 자체는 무료지만, NAT Gateway는 가동 시간 + 데이터 처리량으로 과금
  • EIP(탄력적 IP): 인스턴스에 연결 안 된 상태로 할당만 해둬도 요금 발생
  • RDS: 인스턴스 삭제 시 스냅샷이 자동 생성되고, 따로 지우지 않으면 스토리지 비용이 계속 나와요
  • Amazon Q: 5일 방치 시 약 $20(3만 원 이상) 청구

처음엔 다 ‘작은 금액’처럼 보여서 모르고 지나치기 쉬워요. 모이면 달라지죠.


요금 폭탄의 두 가지 경로: 방치 vs 탈취

경로 1: 리소스 방치

실습 후 정리를 제대로 안 한 경우예요. 가장 많이 놓치는 항목들이에요:

리소스과금 조건삭제 시 주의사항
EC2중지해도 스토리지 비용 발생Actions → Terminate으로 완전 삭제
NAT Gateway가동 중이면 계속 과금EIP 해제 전에 먼저 삭제
EIP미연결 상태에도 과금LB, NATGW 삭제 후 해제
RDS복제본(Slave) 삭제 후 Master 순서 중요스냅샷 별도 삭제 필수
S3버킷 안 비워야 삭제 가능Elastic Beanstalk 생성 버킷은 정책 먼저 제거
AMI/ECR커스텀 이미지도 스토리지 비용 발생등록 해제 + 스냅샷 삭제 세트로

VPC 삭제가 안 되고 막힐 때는, VPC → Network Interfaces(ENI) 메뉴에서 어떤 서비스가 붙어있는지 확인해야 해요. Directory Service 같은 게 조용히 연결돼 있는 경우가 많거든요.

경로 2: API 키 탈취

AWS API 키가 GitHub 같은 공개 저장소에 올라가면 수 분 안에 봇이 감지해요. 이후 패턴은 거의 정해져 있어요. 암호화폐 채굴용 GPU 인스턴스를 대규모로 올리는 거예요. 결과는 수백만~수천만 원 청구서예요.

실제로 EMR 보안 그룹에 0.0.0.0/0 설정 하나로 1천만 원 이상 청구된 사례가 보고됐어요. 무서운 건 설정 실수 하나가 이 정도 피해로 이어진다는 거예요.


사전 방어: 비용 알람 + 키 관리

방어 구조는 두 레이어로 나눌 수 있어요.

비용 알람 설정

추천 스택은 이래요:

  • AWS Budgets → 일/주/월 기준 지출 임계값 설정
  • SNS → 임계값 초과 시 알림 발송
  • AWS Chatbot → Slack 채널로 라우팅

기본 설정값은 $3.00 한도, 10% 도달 시 알림($0.30 지점)이에요. Terraform으로 이 파이프라인을 코드로 관리하면 새 계정마다 5분 내 동일 환경을 구성할 수 있어요.

가장 간단한 버전은 console.aws.amazon.com/billing에서 $0.10 알람 하나만 설정하는 거예요. 알람 한 개가 수십만 원을 아껴줄 수 있어요.

API 키 관리 두 가지 방법

방법 A — GitHub Secrets 사용

CI/CD 파이프라인에서 키를 직접 코드에 박는 대신, ${{ secrets.AWS_ACCESS_KEY_ID }} 형태로 GitHub Secrets를 참조해요. 키는 GitHub 서버에 암호화 저장되고 런타임에만 사용돼요. 실수로 커밋되는 리스크가 구조적으로 사라져요.

방법 B — AWS STS(임시 자격증명)

STS는 최대 24시간짜리 임시 토큰을 발급해요. GitHub OIDC 인증 → AssumeRole 호출 → 스코프가 좁은 임시 토큰 발급 순서예요. 토큰이 만료되면 설령 유출됐어도 피해 범위가 제한돼요.

기존 장기 키 방식과 비교하면:

항목장기 API 키STS 임시 토큰
유효 기간영구 (수동 교체 전)15분 ~ 24시간
유출 시 피해계정 전체 권한 탈취 가능만료 후 자동 무효화
설정 복잡도낮음중간 (OIDC 설정 필요)
권장 시나리오로컬 개발 초기CI/CD, 프로덕션 환경

장기 키는 3~6개월 주기로 교체하고, MFA는 계정 만들 때 바로 설정하는 게 맞아요.


이미 맞았다면: 환불 요청 절차

막지 못했을 때를 위한 플랜 B예요.

개인 계정은 학습/테스트 목적 과금에 한해 1회 환불 또는 크레딧을 받을 수 있어요. 처리 기간은 보통 3~7일이에요.

환불 티켓 작성 시 이 세 가지는 반드시 포함해야 해요:

  1. 학습 목적 테스트 사용임을 명시
  2. Free Tier 범위를 오해한 경위 설명
  3. 해당 리소스를 이미 삭제했다는 확인

주의할 점도 있어요. 전월분 환불 처리 시 당월분이 별도로 청구될 수 있어요. 환불 요청 후에도 1주일간은 매일 빌링 대시보드를 확인해야 해요. 기업 계정은 사용자 과실의 경우 환불이 거절될 가능성이 높다는 점도 기억하세요.


결론: 습관 하나가 전부예요

정리할게요:

  • 실습 리소스는 그날 바로 삭제. RDS 스냅샷, EIP, NAT Gateway 잊지 말고
  • $0.10짜리 비용 알람 하나만 설정해도 과금 인지 속도가 달라져요
  • API 키는 절대 GitHub에 올리지 말고, 가능하면 STS로 교체하세요
  • 실수했다면 1회 환불 제도를 빠르게 사용하되, 당월분 누락에 주의하세요

복잡한 기술 설정보다 ‘정리하는 습관’ 하나가 더 강해요. 리소스는 언제든 다시 만들 수 있어요. 빠져나간 돈은 다시 못 돌아오는 경우가 많아요.

지금 당장 AWS 빌링 대시보드를 열고 $0.10 알람 하나만 설정해 보세요. 이게 첫 번째예요.

참고자료

  1. 클라우드 컴퓨팅 솔루션| Amazon Web Services
  2. 아마존닷컴 - 나무위키
  3. AWS는 한국 클라우드 시장에서 어떤 위치일까? — 숫자로 읽는 국내 시장 지도

Photo by Poddar Group of Institutions on Unsplash