AWS 기초 #3 비용 관리: 결제 알림, Cost Explorer, 무료 티어
#1, #2를 거쳐 콘솔 안에서 무언가를 만들 준비가 됐습니다. 그런데 만들기 전에 반드시 해야 할 한 가지가 더 있습니다.
비용 알림. 가장 흔한 사고는 다음 중 하나입니다.
- 학습용으로 만든 NAT Gateway가 한 달 내내 돌아가 청구서 $45
- 잠시 띄운 RDS 단일 AZ가 일주일 동안 $30
- 다른 리전에 띄운 EC2가 청구서 끝까지 안 보여 한 달 $80
- 로그가 한 달 동안 쏟아져 CloudWatch $120
전부 막을 수 있었습니다. 결제 알림과 Budgets만 켜져 있었으면 됩니다. 이 글에서는 가입 직후 반드시 켜야 할 설정과 운영 단계의 비용 분석 도구를 한 번에 정리하겠습니다.
무료 티어 (Free Tier): 무엇이 어디까지 #
신규 계정에 1년 / 평생 무료 한도가 있습니다. 자주 쓰는 것들만:
| 서비스 | 한도 | 기간 |
|---|---|---|
| EC2 | t2.micro / t3.micro 750시간 / 월 | 1년 |
| RDS | db.t3.micro 750시간 / 월, 20GB SSD | 1년 |
| S3 | 5GB 저장 + 20K GET + 2K PUT | 1년 |
| Lambda | 100만 호출 / 월 | 평생 |
| DynamoDB | 25GB + 25RCU / WCU | 평생 |
| CloudFront | 1TB 송신 + 10M 요청 | 평생 |
| CloudWatch | 10 메트릭 + 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 이전의 옛날 도구지만 여전히 유효합니다. 차이는:
| Budgets | CloudWatch Alarm | |
|---|---|---|
| 위치 | 결제 콘솔 | CloudWatch (#7) |
| 알림 | 이메일 / SNS / Lambda | SNS / 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개 #
이 다섯 개만 일관되게 붙어도 운영 비용 분석이 제대로 됩니다.
| 키 | 값 예 | 용도 |
|---|---|---|
env | prod / staging / dev | 환경 분리, 비용 |
service | api / worker / web | 서비스별 비용 |
team | backend / data / mobile | 팀별 비용 / 책임 |
owner | curtis@example.com | 누가 만든 자원 |
cost-center | R&D / Marketing | 회계 / 청구 분담 |
비용 할당 태그 활성화 #
태그를 단순히 붙인다고 끝이 아닙니다. **“비용 할당 태그 (Cost Allocation Tag)”**로 활성화해야 Cost Explorer / Budgets에서 필터 / 그룹으로 쓸 수 있습니다.
Billing Console → Cost allocation tags
- 표준 태그 5개를 모두 Active로
- 활성 후 24시간 ~ 며칠 지나야 데이터 반영태그 강제 #
자원을 만들 때 표준 태그가 없으면 거부하는 IAM 정책으로 강제할 수 있습니다.
{
"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. 모든 리전 점검. 자동 점검 도구 추천:
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 emailCFO / 회계 이메일은 별도 옵션 (Account → Alternate Contacts → Billing).
운영 단계의 추가 도구 #
조금 큰 운영에서 만나는 항목들.
| 도구 | 무엇 |
|---|---|
| Cost Categories | 비용을 임의 그룹으로 묶기 (예: “결제 흐름 비용”) |
| Compute Optimizer | 과대 / 과소 사이즈 EC2 / Lambda 추천 |
| Trusted Advisor (Cost) | 비용 절감 점검 (Business / Enterprise 지원) |
| Savings Plans / RI | 1~3년 약정으로 30~70% 할인 |
| Spot Instance | EC2 가격 ~70% 할인. 중단 가능 워크로드 |
| S3 Lifecycle / Intelligent-Tiering | 오래된 객체 자동으로 싼 클래스로 |
작은 환경에선 Spot / Lifecycle만 의식해도 충분합니다.
자주 만나는 함정 #
1) 가입 직후 결제 알림 미설정 #
가장 흔한 사고입니다. 한 달 뒤 청구서를 보고 발견하면 이미 늦었습니다. 이 글의 첫 단계로, 가입 직후 $10 / $20 / $50 같은 단순한 임계값이라도 즉시 켜 둡니다.
2) NAT Gateway 잠자는 비용 #
학습용 VPC에 NAT Gateway를 넣고 한 달 두면 $32+. 학습 끝나면 VPC 자체를 삭제 (의존 관계 정리).
3) 다른 리전에 잠자는 자원 #
콘솔의 리전 선택기 하나만 보면 모든 리전이 안 보입니다. 정기 점검 + 다른 리전에서 자원 생성을 IAM 정책으로 차단:
{
"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 사용자의 액세스 키가 여기서 처음 등장합니다.