← 아티클 목록

클라우드 태깅 비용 배분 — 팀별 청구 가르기

2027-12-20#cloud#비용최적화#거버넌스

월말 클라우드 청구서가 수천 달러인데 "어느 팀이, 어떤 서비스가 이만큼 썼는지" 아무도 설명하지 못합니다. 리소스가 수백 개로 늘면 청구서는 거대한 덩어리가 되어 누구도 책임지지 않는 비용이 됩니다. 이 문제를 푸는 가장 기본적인 도구가 태그(tag) 입니다. 태그는 리소스에 붙이는 키=값 메타데이터로, 이걸 일관되게 붙여두면 비용을 팀·환경·서비스별로 쪼개 볼 수 있습니다.

먼저 태그 표준을 정한다

태그는 "있으면 좋은 것"이 아니라 표준을 정하고 강제해야 의미가 있습니다. 사람마다 Team, team, 소속팀으로 제각각 붙이면 집계가 안 됩니다. 최소한 아래 키를 표준으로 박습니다.

태그 키예시 값용도
CostCenterteam-payments비용 귀속 주체
Environmentprod / staging / dev환경별 비용 분리
Servicecheckout-api서비스 단위 추적
Ownerklksm13@example.com책임자 연락처

키 이름의 대소문자와 표기를 하나로 통일하는 게 핵심입니다. 태그 키는 대소문자를 구분하므로 Environmentenvironment는 다른 태그로 집계됩니다.

비용 배분 태그를 활성화한다

태그를 붙이는 것만으로는 청구서에 나타나지 않습니다. 비용 배분 태그(cost allocation tags) 를 따로 활성화해야 비용 리포트에서 그 태그로 묶어 볼 수 있습니다. AWS라면 Billing 콘솔에서 활성화하며, 활성화 후 데이터가 채워지는 데 하루 정도 걸립니다.

적용과 강제 순서

  1. 기존 리소스에 태그 일괄 부여 — 누락된 리소스를 찾아 표준 태그를 붙입니다.
로컬 터미널
aws resourcegroupstaggingapi tag-resources \
  --resource-arn-list <ARN1> <ARN2> \
  --tags CostCenter=team-payments,Environment=prod
  1. 태그 누락 리소스 탐지 — 어떤 리소스에 CostCenter가 없는지 찾습니다.
로컬 터미널
aws resourcegroupstaggingapi get-resources \
  --tag-filters Key=CostCenter --query 'ResourceTagMappingList[].ResourceARN'
  1. 신규 리소스에 태그 강제 — 정책으로 필수 태그 없는 생성을 막습니다. 아래는 CostCenter 태그 없이 인스턴스 생성을 거부하는 IAM 정책 예시입니다.
JSON
{
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": "arn:aws:ec2:*:*:instance/*",
  "Condition": {
    "Null": { "aws:RequestTag/CostCenter": "true" }
  }
}
  1. 비용 리포트 확인 — Cost Explorer에서 CostCenter 태그로 그룹화하면 팀별 금액이 갈립니다.

요점 정리

  • 태그는 표준(키 이름·표기)을 먼저 정하고 강제해야 집계가 된다.
  • 태그를 붙여도 비용 배분 태그를 활성화하지 않으면 청구서에 안 나온다.
  • 기존 리소스는 일괄 부여, 신규 리소스는 IAM 정책으로 누락을 막는다.
  • Cost Explorer에서 태그로 그룹화하면 팀·환경·서비스별 비용이 보인다.

태그 표준을 설계하고 비용 배분 태그·리포트를 직접 다뤄보는 실습은 클라우드 트랙에서 회원가입 없이 무료로 할 수 있습니다.