목차
3 장

비용 관리 — 결제 알림, Cost Explorer, 무료 티어

무료 티어의 한계, AWS Budgets와 결제 알림 셋업, Cost Explorer로 청구서를 쪼개 보는 법, 그리고 비용 분석의 전제가 되는 태그 전략까지. 첫 청구서 충격을 막는 가드레일을 정리합니다.

2장 IAM에서 일상 작업용 사용자를 만들면서, 콘솔 안에서 무언가를 만들 준비가 됐습니다. 그런데 만들기 전에 반드시 해야 할 한 가지가 더 있습니다. 바로 비용 알림입니다.

AWS를 처음 쓸 때 가장 흔한 사고는 다음 중 하나입니다. 학습용으로 만든 NAT Gateway가 한 달 내내 돌아가 청구서 $45, 잠시 띄운 RDS 단일 AZ가 일주일 동안 $30, 다른 리전에 띄운 EC2가 청구서 끝까지 안 보여 한 달 $80, 로그가 한 달 동안 쏟아져 CloudWatch $120 — 전부 막을 수 있었던 일입니다. 결제 알림과 Budgets만 켜져 있었으면 됩니다.

본 챕터는 1장에서 안내한 첫 셋업 세 가지 중 두 번째입니다. 가입 직후 반드시 켜야 할 설정과 운영 단계의 비용 분석 도구를 한 번에 정리합니다.

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

신규 계정에는 1년 / 평생 무료 한도가 있습니다. 자주 쓰는 것들만 추리면 다음과 같습니다.

서비스한도기간
EC2t2.micro / t3.micro 750시간 / 월1년
RDSdb.t3.micro 750시간 / 월, 20GB SSD1년
S35GB 저장 + 20K GET + 2K PUT1년
Lambda100만 호출 / 월평생
DynamoDB25GB + 25 RCU / 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장 CloudWatch 입문)
알림이메일 / 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 정책으로 강제할 수 있습니다(2장 IAM의 Condition 패턴입니다).

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장 CloudWatch 입문).

데이터 전송 (Egress) #

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

다른 리전의 잠자는 자원 #

1장의 함정처럼 모든 리전을 점검합니다. 자동 점검 도구를 추천합니다.

모든 리전의 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만 의식해도 충분합니다. 비용 최적화 전반은 27장 비용 최적화에서 본격적으로 다룹니다.

자주 만나는 함정 #

  • 가입 직후 결제 알림을 안 켬 — 가장 흔한 사고입니다. 한 달 뒤 청구서를 보고 발견하면 이미 늦었습니다. 본 챕터의 첫 단계대로, 가입 직후 $10 / $20 / $50 같은 단순한 임계값이라도 즉시 켭니다.
  • NAT Gateway 잠자는 비용 — 학습용 VPC에 NAT Gateway를 넣고 한 달 두면 $32+ 입니다. 학습이 끝나면 VPC 자체를 삭제합니다(의존 관계 정리).
  • 다른 리전에 잠자는 자원 — 콘솔의 리전 선택기 하나만 보면 모든 리전이 안 보입니다. 정기 점검과 함께, 다른 리전에서의 자원 생성을 IAM 정책으로 차단합니다.
ap-northeast-2 외 리전 차단
{
  "Effect": "Deny",
  "Action": "*",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": { "aws:RequestedRegion": "ap-northeast-2" }
  }
}
  • 비용 할당 태그 활성화 안 함 — 태그는 일관되게 붙였는데 Cost Explorer에서 필터로 안 잡힌다면, 99%는 태그 활성화를 안 했거나 활성 후 24시간이 안 지난 경우입니다.
  • 무료 티어 만료 무지 — 가입 12개월 후 갑자기 청구서가 늘어납니다. 무료 티어 만료입니다. 달력에 12개월 표시를 해 두고 Budgets가 잡아 주게 합니다.
  • “사용했다"가 아닌 “프로비저닝됐다"가 과금 — EC2를 stop만 하면 컴퓨팅 비용은 멈추지만 EBS 비용은 계속됩니다. RDS도 stop 후 7일 후 자동 시작합니다. 정말 안 쓸 거면 terminate 하거나 스냅샷 후 삭제합니다.

연습문제 #

  1. §“무료 티어"의 표에서 750시간 / 월이 인스턴스 한 대를 24시간 돌리는 양인 이유를 한 줄로 설명하고, t3.micro 두 대를 한 달 내내 돌렸을 때 어느 쪽 비용이 추가로 발생하는지 적어 보세요.
  2. §“첫 예산"을 따라 Cost budget 하나에 50/80/100% 알림을 거는 절차를 보지 않고 적어 보세요. 이 알림이 §“자주 만나는 함정” 중 “다른 리전에 잠자는 자원” 사고를 어떻게 조기에 잡아 주는지 한 문장으로 연결해 두세요.
  3. §“태그 강제"의 Deny 정책과 2장 IAM의 Condition 절을 비교해, aws:RequestTag/...가 자원 생성 시점에 어떻게 작동하는지 설명해 보세요.

한 줄 요약: AWS 비용 사고는 거의 다 잠자는 자원에서 나오고, 가입 직후 Free Tier 알림 · Billing 알림 · 작은 Budget 세 가지면 대부분 막을 수 있다. Budgets가 결제 알림의 표준이고 Cost Explorer로 청구서를 서비스 · 태그 · 리전별로 쪼갠다. 태그 전략은 비용 분석의 전제이며, NAT Gateway · RDS Multi-AZ · 로그 폭주가 가장 흔한 과금원이다.

다음 챕터 #

콘솔에서만 일하면 빠르게 한계가 옵니다. 다음 4장 CLI와 SDK에서는 터미널에서 같은 작업을 더 빠르고 자동화 가능하게 만듭니다. aws cli v2 설치와 aws configure, 프로파일 관리, boto3 같은 SDK의 사용법을 정리하고, 2장 IAM에서 만든 사용자의 액세스 키가 여기서 처음 등장합니다.

X