AWS 기초 #3 비용 관리: 결제 알림, Cost Explorer, 무료 티어

8 분 소요

#1, #2를 거쳐 콘솔 안에서 무언가를 만들 준비가 됐습니다. 그런데 만들기 전에 반드시 해야 할 한 가지가 더 있습니다.

비용 알림. 가장 흔한 사고는 다음 중 하나입니다.

  • 학습용으로 만든 NAT Gateway가 한 달 내내 돌아가 청구서 $45
  • 잠시 띄운 RDS 단일 AZ가 일주일 동안 $30
  • 다른 리전에 띄운 EC2가 청구서 끝까지 안 보여 한 달 $80
  • 로그가 한 달 동안 쏟아져 CloudWatch $120

전부 막을 수 있었습니다. 결제 알림과 Budgets만 켜져 있었으면 됩니다. 이 글에서는 가입 직후 반드시 켜야 할 설정과 운영 단계의 비용 분석 도구를 한 번에 정리하겠습니다.

무료 티어 (Free Tier): 무엇이 어디까지 #

신규 계정에 1년 / 평생 무료 한도가 있습니다. 자주 쓰는 것들만:

서비스한도기간
EC2t2.micro / t3.micro 750시간 / 월1년
RDSdb.t3.micro 750시간 / 월, 20GB SSD1년
S35GB 저장 + 20K GET + 2K PUT1년
Lambda100만 호출 / 월평생
DynamoDB25GB + 25RCU / WCU평생
CloudFront1TB 송신 + 10M 요청평생
CloudWatch10 메트릭 + 10 알람 + 5GB 로그평생
데이터 전송인터넷으로 100GB / 월평생

핵심 포인트:

  • 750시간 / 월. 한 달은 720~744시간이라, 인스턴스 한 대를 24시간 돌릴 수 있는 양입니다. 두 대를 동시에 띄우면 한 대가 추가 과금됩니다.
  • 무료 티어는 신규 계정만. 가입 후 12개월 또는 평생 (서비스별)
  • 무료 티어에 없는 서비스도 많음. NAT Gateway, EKS, Aurora 등 비싼 서비스는 처음부터 과금

무료 티어 한계 알림 켜기 #

콘솔 → Billing → Free Tier → “Free Tier usage alerts"에 이메일을 등록합니다.

셋업
Billing Console → Billing preferences
[✓] Receive Free Tier Usage Alerts → 이메일 입력
[✓] Receive Billing Alerts (CloudWatch 알람용)
[✓] Receive PDF invoices via email

저장하면 무료 티어의 85% 사용에서 알림이 옵니다. 이게 첫 방어선입니다.

Budgets: 비용 알림의 본진 #

CloudWatch Billing Alarm도 있지만, AWS Budgets가 결제 알림의 표준 도구입니다. 더 유연하고 다차원으로 쪼갤 수 있습니다.

첫 예산: $10 알림 #

학습 / 개인 계정의 표준:

첫 예산 만들기
콘솔 → Billing → Budgets → Create budget
- Budget type: Cost budget
- Period: Monthly
- Amount: $10 (자기 위험 감내 한도)
- Alert threshold: 50%, 80%, 100% 세 단계
- Email: 본인 이메일

세 단계로 두면:

임계값의미
50% (예: $5)“어, 절반 갔네. 무엇이 돌고 있지?”
80% (예: $8)“정말로 점검해야 함”
100% (예: $10)“초과. 즉시 자원 정리”

예산의 다른 종류 #

종류무엇
Cost budget총 비용. 가장 흔함
Usage budget“EC2 100시간” 같은 사용량
RI / SP coverage budget예약 인스턴스 / 절감 플랜 활용률
RI / SP utilization budget예약 자원 사용률 (놀고 있나)

처음엔 Cost budget 한 개 + 50/80/100 알림이면 충분합니다.

예산을 다차원으로 쪼개기 #

운영 단계에서 도움이 되는 도구입니다.

필터로 좁히기
- 서비스별: Amazon EC2 / RDS / Lambda만
- 태그별: env=prod만
- 리전별: ap-northeast-2만
- 계정별 (Organizations 위에서): prod 계정만

태그 기반은 태그가 일관되어야 통합니다. 뒤의 태그 전략 절을 같이 봅시다.

CloudWatch Billing Alarm: 보조 수단 #

Budgets 이전의 옛날 도구지만 여전히 유효합니다. 차이는:

BudgetsCloudWatch Alarm
위치결제 콘솔CloudWatch (#7)
알림이메일 / SNS / LambdaSNS / Auto Scaling / EC2 액션
평가하루 ~ 8시간 지연하루 1회 (us-east-1만)
다차원가능단순

운영에선 Budgets가 표준입니다. CloudWatch Billing Alarm은 **자동 액션 (예: 알림 → Lambda → 일부 자원 종료)**이 필요할 때만 보조적으로 씁니다.

CloudWatch Billing 메트릭은 us-east-1에만 있습니다. 다른 리전에서 만들려고 하면 보이지 않습니다.

Cost Explorer: 청구서를 쪼개 보기 #

Cost Explorer는 비용을 시간 / 서비스 / 태그 / 리전 등으로 쪼개 그래프로 보여주는 도구입니다. 운영 단계에서 가장 많이 쓰는 도구입니다.

처음 활성화에 24시간 정도 걸립니다 (이력 데이터 수집).

기본 활성화
Billing Console → Cost Explorer → "Launch Cost Explorer"

활성화 후 다음과 같은 답을 30초 만에 얻을 수 있습니다.

답 1) “이번 달 어디서 가장 많이 썼지?” #

Group by → Service. 서비스별 합계.

흔한 운영 청구서 모양
EC2-Other (NAT, EBS)   38%
EC2 인스턴스             22%
RDS                     15%
CloudFront              8%
S3                      6%
CloudWatch              4%
Other                   7%

의외의 1위: EC2-Other가 종종 EC2 본체보다 큽니다. 안에는 NAT Gateway 트래픽, EBS 볼륨, 데이터 전송이 다 들어 있습니다.

답 2) “왜 어제부터 갑자기 비용이 늘었지?” #

Group by → Service + 일자별 막대 그래프. 어떤 서비스가 늘었는지 한눈에. 보통 다음 중 하나입니다.

  • 신규 자원 (배포 직후)
  • 잠긴 NAT Gateway 트래픽
  • 누가 만들고 잊은 RDS / EC2
  • 다른 리전의 자원 (리전 필터로 확인)

답 3) “이 prod 환경 비용이 한 달 얼마지?” #

Group by → Tag (env). 태그가 있어야 통합니다. 태그 전략이 비용 분석의 전제인 이유입니다.

답 4) “이 추세로 가면 다음 달 얼마지?” #

Cost Explorer → Forecast. AWS가 추세 기반 예측을 보여줍니다. ±몇 % 신뢰 구간을 포함합니다.

태그 전략: 비용 분석의 전제 #

태그는 모든 자원에 붙는 Key=Value 라벨입니다. 비용 분석 / 정책 / 자동화 모두에 영향을 줍니다.

표준 태그 5개 #

이 다섯 개만 일관되게 붙어도 운영 비용 분석이 제대로 됩니다.

값 예용도
envprod / staging / dev환경 분리, 비용
serviceapi / worker / web서비스별 비용
teambackend / data / mobile팀별 비용 / 책임
ownercurtis@example.com누가 만든 자원
cost-centerR&D / Marketing회계 / 청구 분담

비용 할당 태그 활성화 #

태그를 단순히 붙인다고 끝이 아닙니다. **“비용 할당 태그 (Cost Allocation Tag)”**로 활성화해야 Cost Explorer / Budgets에서 필터 / 그룹으로 쓸 수 있습니다.

활성화
Billing Console → Cost allocation tags
- 표준 태그 5개를 모두 Active로
- 활성 후 24시간 ~ 며칠 지나야 데이터 반영

태그 강제 #

자원을 만들 때 표준 태그가 없으면 거부하는 IAM 정책으로 강제할 수 있습니다.

env / service 태그 없으면 EC2 생성 거부
{
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": "arn:aws:ec2:*:*:instance/*",
  "Condition": {
    "Null": {
      "aws:RequestTag/env": "true",
      "aws:RequestTag/service": "true"
    }
  }
}

이 정책이 적용되면 누구도 태그 없이 자원을 못 만듭니다.

자주 비싼 항목들 (체크리스트) #

학습 단계에 함정이 되는 자원들입니다. 일단 만들었으면 반드시 의식하세요.

NAT Gateway: 시간당 $0.045 #

  • 한 달 그냥 두면 약 $32 + 트래픽
  • VPC의 private subnet이 인터넷에 나가려면 필요
  • 사이드 프로젝트엔 보통 과합니다. VPC endpoint나 public subnet으로 우회합니다.
  • 학습 끝나면 반드시 삭제

Elastic IP: 시간당 $0.005 (인스턴스 미연결 시) #

  • 인스턴스에 붙어 있을 땐 무료
  • 떼어 두고 잊으면 한 달 $3.6
  • 사용 안 하는 EIP는 즉시 release

RDS #

  • 가장 작은 db.t3.micro도 한 달 $15 정도 (스토리지 / IOPS 별도)
  • Multi-AZ 옵션은 비용 2배
  • 학습 끝나면 스냅샷 후 삭제

EBS 볼륨 #

  • EC2를 종료해도 볼륨이 남으면 계속 과금
  • “Delete on termination” 체크 권장 (학습용)
  • 안 쓰는 스냅샷도 누적

EKS / OpenSearch / Aurora #

  • 시간당 비싼 자원. 학습용으로 띄워 두지 말 것
  • EKS는 클러스터당 $0.10/시간 (한 달 $72). 노드 비용 별도

CloudWatch Logs #

  • 수집은 GB당 ~$0.50, 저장은 GB-월 ~$0.03
  • 로그 폭주가 가장 흔한 사고. 디버깅 모드로 한 달 두면 수십 GB
  • 로그 그룹마다 retention 설정 필수 (#7)

데이터 전송 (Egress) #

  • 인터넷으로 나가는 트래픽. GB당 ~$0.09 (리전별 차이)
  • CloudFront 통하면 더 쌈
  • 리전 간 GB당 ~$0.02

다른 리전의 잠자는 자원 #

#1 함정 #3. 모든 리전 점검. 자동 점검 도구 추천:

모든 리전의 EC2 / RDS 한 번에 보기
for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do
  echo "=== $region ==="
  aws ec2 describe-instances --region $region --query 'Reservations[].Instances[].[InstanceId,State.Name]' --output text
done

청구서 / 인보이스 받기 #

매월 청구서를 PDF로 받기.

이메일로 받기
Billing Console → Billing preferences
[✓] Receive PDF invoices via email

CFO / 회계 이메일은 별도 옵션 (Account → Alternate Contacts → Billing).

운영 단계의 추가 도구 #

조금 큰 운영에서 만나는 항목들.

도구무엇
Cost Categories비용을 임의 그룹으로 묶기 (예: “결제 흐름 비용”)
Compute Optimizer과대 / 과소 사이즈 EC2 / Lambda 추천
Trusted Advisor (Cost)비용 절감 점검 (Business / Enterprise 지원)
Savings Plans / RI1~3년 약정으로 30~70% 할인
Spot InstanceEC2 가격 ~70% 할인. 중단 가능 워크로드
S3 Lifecycle / Intelligent-Tiering오래된 객체 자동으로 싼 클래스로

작은 환경에선 Spot / Lifecycle만 의식해도 충분합니다.

자주 만나는 함정 #

1) 가입 직후 결제 알림 미설정 #

가장 흔한 사고입니다. 한 달 뒤 청구서를 보고 발견하면 이미 늦었습니다. 이 글의 첫 단계로, 가입 직후 $10 / $20 / $50 같은 단순한 임계값이라도 즉시 켜 둡니다.

2) NAT Gateway 잠자는 비용 #

학습용 VPC에 NAT Gateway를 넣고 한 달 두면 $32+. 학습 끝나면 VPC 자체를 삭제 (의존 관계 정리).

3) 다른 리전에 잠자는 자원 #

콘솔의 리전 선택기 하나만 보면 모든 리전이 안 보입니다. 정기 점검 + 다른 리전에서 자원 생성을 IAM 정책으로 차단:

ap-northeast-2 외 리전 차단
{
  "Effect": "Deny",
  "Action": "*",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": { "aws:RequestedRegion": "ap-northeast-2" }
  }
}

4) 비용 할당 태그 활성화 안 함 #

태그는 일관되게 붙였는데 Cost Explorer에서 필터로 안 잡힙니다. 99%는 태그 활성화를 안 했거나 활성 후 24시간이 안 지난 경우입니다.

5) 무료 티어 만료 무지 #

가입 12개월 후 갑자기 청구서가 늘어납니다. 무료 티어가 만료된 탓입니다. 달력에 12개월 표시해 두고 Budgets로 잡습니다.

6) “사용했다"가 아닌 “프로비저닝됐다"가 과금 #

EC2를 stop만 하면 컴퓨팅 비용은 멈추지만 EBS 비용은 계속 나갑니다. RDS도 stop 후 7일 뒤 자동으로 시작됩니다. 정말 안 쓸 거면 terminate하거나 스냅샷 후 삭제합니다.

정리 #

이번 글에서 잡은 것:

  • 무료 티어. 1년 / 평생 한도이며, 750시간 / 월은 인스턴스 한 대를 24시간 돌리는 분량입니다.
  • 가입 직후 반드시 Free Tier alert + Billing alert + $10 / $20 / $50 Budget을 켭니다.
  • AWS Budgets. Cost / Usage / RI 등이 있고, 50/80/100% 세 단계 알림이 기본 패턴입니다.
  • CloudWatch Billing Alarm. us-east-1에서만 동작하며, 자동 액션용입니다.
  • Cost Explorer. 서비스 / 태그 / 리전별로 쪼개 분석합니다. 활성화에 24시간이 걸립니다.
  • 태그 전략. env / service / team / owner / cost-center 다섯 개를 쓰고, 비용 할당 태그 활성화가 필수입니다.
  • 자주 비싼 자원. NAT Gateway, Elastic IP (미연결), RDS Multi-AZ, EBS, EKS, CloudWatch Logs 폭주, Egress, 다른 리전 잠자는 자원입니다.
  • 운영 단계. Compute Optimizer, Savings Plans / Spot, S3 Lifecycle입니다.
  • 함정. 결제 알림 미설정, NAT 잠자기, 다른 리전 자원, 태그 미활성화, 무료 티어 만료, stop ≠ 정지입니다.

다음: CLI와 SDK #

콘솔에서만 일하면 빠르게 한계가 옵니다. 이제 터미널에서 같은 작업을 더 빠르고 자동화 가능하게 만들 차례입니다.

#4 AWS CLI와 SDK 셋업에서는 aws cli v2 설치, aws configure, 프로파일 관리, 그리고 boto3 같은 SDK의 사용법을 정리하겠습니다. #2에서 만든 IAM 사용자의 액세스 키가 여기서 처음 등장합니다.

X