비용 배분 태그, 청구서를 프로젝트별로 나눠 보려면
AWS 청구서는 서비스별로 묶여 있어서 프로젝트별 비용을 보려면 비용 배분 태그가 필요하다.
태그를 자원에 붙이는 일과 청구 화면에서 켜는 일이 따로 있고, 붙이기 전 기간은 소급으로도 메울 수 없다.
이 글의 목차태그는 자원에 붙이는 키와 값이다5
AWS 콘솔에서 청구서(Bills) 페이지를 열면 비용이 EC2, S3, RDS처럼 서비스 이름별로 나뉘어 있다.
계정 하나에서 서비스 하나만 돌린다면 이 화면으로 충분하다.
그런데 한 계정에서 프로젝트 두 개를 돌리거나 운영 환경과 개발 환경을 함께 두면 사정이 달라진다.
이번 달 EC2 비용이 늘었다면 어느 프로젝트 때문일까.
청구서만으로는 답할 수 없다.
AWS는 서버 한 대 한 대가 어느 프로젝트 것인지 모른다.
그 정보를 자원에 적어 두는 방법이 태그다.
태그는 자원에 붙이는 키와 값이다
태그는 AWS 자원에 붙이는 라벨이고, 키와 값 한 쌍으로 이뤄진다.
키를 Project, 값을 shop으로 붙이면 이 서버가 shop 프로젝트 것이라는 표시가 된다.
한 자원에 같은 키는 한 번만 붙일 수 있고, 키 하나에는 값이 하나다.
키가 다르면 Project와 Environment처럼 여러 개를 함께 붙여도 된다.
태그는 자원을 정리하는 데 두루 쓰여서 보안이나 운영 목적으로도 붙인다.
그중에서 비용을 나누는 데 쓰겠다고 지정한 태그를 비용 배분 태그라고 한다.
비용 배분 태그를 켜 두면 Cost Explorer에서 태그 값으로 비용을 걸러 볼 수 있다.
Cost Explorer는 비용을 기간, 서비스, 태그 같은 기준으로 쪼개 보는 AWS의 분석 화면이다.
비용 배분 태그에는 두 종류가 있다.
직접 정해서 붙이는 사용자 정의 태그와, 자원을 누가 만들었는지 같은 정보를 AWS가 붙여 주는 AWS 생성 태그다.
두 종류 모두 따로 활성화해야 Cost Explorer와 비용 배분 보고서에 나타난다.
붙이는 곳과 켜는 곳이 따로 있다
사용자 정의 태그로 비용을 나눠 보려면 할 일이 두 가지다.
하나는 자원에 태그를 붙이는 일이다.
EC2 인스턴스나 S3 버킷을 만들 때, 또는 만든 뒤에 각 서비스 화면에서 붙인다.
다른 하나는 그 태그 키를 청구 데이터에서 쓰겠다고 켜는 일이다.
Billing and Cost Management 콘솔의 비용 배분 태그(Cost allocation tags) 화면에서 키를 골라 활성화하는데, 키를 켜면 그 키에 딸린 값 전부가 함께 켜진다.
두 화면이 떨어져 있어서 한쪽만 하고 끝내기 쉽다.
붙이기만 하고 켜지 않으면 청구 데이터에 태그가 나타나지 않는다.
켜기만 하고 붙이지 않으면 켠 키에 채워질 값이 없다.
기다리는 시간도 있다.
태그를 붙인 뒤 키가 활성화 화면에 나타나기까지 최대 24시간, 활성화한 뒤 실제로 켜지기까지 다시 최대 24시간이 걸릴 수 있다.
방금 켰는데 보이지 않는다고 해서 설정이 틀린 것은 아니다.
AWS Organizations로 여러 계정을 한 조직으로 묶어 쓴다면 비용 배분 태그 화면은 관리 계정에서만 열 수 있다.
관리 계정은 조직의 비용을 대표로 내는 계정이다.
계정이 하나뿐이라면 그 계정에서 켜면 된다.
늦게 켠 태그는 소급할 수 있다
태그를 몇 달 늦게 켰어도 그 전 달들의 비용을 태그로 나눠 볼 방법이 있다.
관리 계정에서 최대 열두 달 전까지 태그 활성화를 소급 적용(backfill)해 달라고 요청할 수 있다.
요청하면 지금의 활성화 상태가 고른 달부터 다시 적용된다.
여기에는 조건이 붙는다.
소급되는 것은 켠 상태뿐이라서, 그 달에 자원에 태그가 실제로 붙어 있지 않았다면 되살릴 값이 없다.
3월에 자원에 붙이고 6월에 비용 배분을 활성화한 태그다.
자원에 태그가 붙은 기간
없음2월
없음3월
있음4월
있음5월
있음6월
있음
비용 기록에 태그 값 표시
없음2월
없음3월
없음4월
없음5월
없음6월
표시
자원에 태그가 붙은 기간
없음2월
없음3월
있음4월
있음5월
있음6월
있음
비용 기록에 태그 값 표시
없음2월
없음3월
표시4월
표시5월
표시6월
표시
비용 배분 활성화는 소급할 수 있지만 자원에 태그가 없던 시기의 값까지 생기지는 않는다.
6월부터 비용에 태그 값이 보인다. 자원 자체에는 3월부터 태그가 있었다.
현재 관리 계정의 최대 12개월 backfill 범위 안에 있는 가상의 월들이다. 요청이 처리되고 비용 데이터에 반영되는 대기는 생략한다.
| 그 달에 한 일 | 지금 태그로 나눠 볼 수 있나 | 이유 |
|---|---|---|
| 붙였고 켜 두었다 | 볼 수 있다 | 청구 데이터에 값이 있다 |
| 붙였지만 켜지 않았다 | 소급을 요청하면 볼 수 있다 | 켠 상태만 다시 적용하면 된다 |
| 붙이지 않았다 | 볼 수 없다 | 되살릴 값이 없다 |
각 태그가 지금 어느 줄에 해당하는지는 비용 배분 태그 화면에서 확인한다.
이 화면에는 키가 마지막으로 켜지거나 꺼진 날과, 마지막으로 자원에 쓰인 달이 함께 나온다.
소급 요청은 24시간에 한 번만 보낼 수 있고, 처리가 끝나도 Cost Explorer는 하루 주기로 갱신되므로 결과가 바로 보이지는 않는다.
태그로도 나눠지지 않는 비용
태그를 꼼꼼히 붙여도 태그 값이 없는 비용은 남는다.
태그를 지원하지 않는 서비스, AWS Support 같은 구독형 요금, 예약 인스턴스 선결제 같은 일회성 요금은 태그로 묶이지 않는다.
예약 인스턴스는 EC2를 1년이나 3년 쓰기로 약정하고 할인받는 요금 방식이다.
이런 비용은 태그 대신 계정과 서비스 기준으로만 집계된다.
태그가 있는 비용과 없는 비용을 합쳐야 청구서 총액과 맞는다.
태그가 알려 주는 것은 어느 자원이 비용을 만들었는지까지다.
그 자원을 지우거나 끈다고 해서 비용이 늘 줄지는 않는다.
서버를 지워도 딸린 자원이 남을 수 있기 때문이다.
인스턴스를 종료할 때 디스크인 EBS 볼륨을 남기도록 설정할 수 있고, 볼륨을 지워도 그 볼륨의 스냅숏은 따로 지워야 한다.
스냅숏은 볼륨을 특정 시점 그대로 복사해 둔 백업이다.
태그 키는 자원보다 먼저 정한다
태그를 붙이기 전 기간은 되살릴 수 없으니, 실무에서는 자원을 만들기 전에 태그 키 몇 개를 먼저 정해 둔다.
AWS도 비용을 나눠 볼 방식에 맞춰 태그 키 묶음을 정하고 일관되게 쓰라고 권한다.
AWS가 예로 드는 키는 비용 센터, 애플리케이션 이름, 담당자 같은 업무 기준이다.
작은 서비스라면 프로젝트와 환경(운영, 개발) 두 가지로 시작해도 충분하다.
표기도 하나로 맞춰야 한다.
태그 키와 값은 대소문자를 구분해서 Project와 project는 서로 다른 키가 된다.
같은 프로젝트의 비용이 두 키로 흩어진다.
여러 계정을 쓴다면 AWS Organizations의 태그 정책으로 키의 대소문자와 허용할 값을 정해 두고, 규칙에 어긋나는 태그 작업을 막을 수도 있다.
태그에는 민감한 정보를 넣지 않는다.
태그 값은 비용 보고서와 여러 콘솔 화면에 그대로 드러난다.
이미 태그 없이 몇 달을 운영했다면 지금 키를 정해 붙이고 켜는 일부터 한다.
켜기 전 기간은 소급 요청으로 맞추고, 태그가 없던 기간은 계정이나 서비스 단위로 따로 보는 수밖에 없다.