Budgets 설정으로 비용 폭탄 방지하기
https://aws.amazon.com/ko/aws-cost-management/aws-budgets/
사용자 지정 비용 및 사용 예산 설정 - AWS Budgets - Amazon Web Services
AWS Budgets를 사용하면 사용자 지정 예산을 설정하여 비용 및 사용량을 추적하고, 임계값 초과 시 이메일 또는 SNS 알림에서 수신된 알림에 빠르게 대응할 수 있습니다.
aws.amazon.com
AWS뿐만 아니라 public cloud 환경에서 서비스를 운영하면서 가장 중요한 부분 중 하나가 비용이 아닐까 싶다.
access key 노출로 인한 해킹 등으로 예상치 못하게 천문학적인 비용이 발생할 수 있어 비용 모니터링은 매우 중요하다.
기본적으로 AWS 메인 콘솔에서 비용 관련 데이터를 보여주긴 하지만, 서비스마다 어느 정도의 비용이 발생할지 예측하긴 어렵고, 매일 비용이 얼마나 발생했는지 확인하는건 쉽지만은 않다.
AWS엔 요금 폭탄을 방지할 수 있는 서비스들이 있다. 그중 하나인 Budgets에 대해 알아보도록 하자
(머신러닝 기법을 사용한 Anomaly Detections란 서비스도 있는데 이 서비스는 추후 소개하도록 하겠다.)
다음은 budgets 설정으로 얻을 수 있는 효과이다.
- 본인이 설정한 예산의 일정 비용(절대 금액, 퍼센트)을 넘어가면 알림을 보낼 수 있음
- budgets + sns + lambda 등을 연동하면 서비스에 문제가 발생했을 때 대응할 수 있음
Budgets 서비스는 대충 이런 구조로 동작한다고 한다.

이제 Budgets을 설정해보자. 상세한 부분은 AWS 공식 문서에 자세히 나와있으니 참고하면 된다.
Creating a budget - AWS Cost Management
Creating a budget You can create budgets to track and take action on your costs and usage. You can also create budgets to track your aggregate Reserved Instance (RI) and Savings Plans utilization and coverage. By default, single accounts, the management ac
docs.aws.amazon.com
예산 생성

먼저 예산을 생성해줘야 한다. 커스텀을 하기 위해 사용자 지정(고급)을 선택하고 비용을 모니터링 하기 위해 비용 예산으로 선택한다.
다른 옵션들은 사용해보진 않았지만 내용을 보니 각각 아래와 같은 옵션인거 같다.
- 사용량 예산 : 각 서비스 비용의 특정 사용량 유형들을 모니터링하는 옵션 ex) boxusage:r6i.xlarge 등
- 절감형 플랜 예산 : savings plan의 사용률 모니터링
- 예약 예산 : reserved instance 사용률 모니터링
예산 금액 설정

기간같은 경우 일, 월, 분기, 년 단위로 설정이 가능하다.
위 예시처럼 월 별로 설정하고 예산 책정을 고정으로 지정하고 금액을 입력하면 해당 금액을 넘어가는 경우 알람이 발생한다.
만약 계정에서 서비스를 운영하고 있고, 여러 서비스를 사용하고 있는 계정이라면 기간을 일별로 지정하고 예산 책정을 고정or자동으로 설정하는걸 추천한다. 그럼 지정한 기간동안의 사용한 일 평균 비용이 예산으로 지정된다.
√ 참고 : 예산이 저장될 때까진 예산 금액에 대한 추정치만 제공할 수 있습니다.
자동 조정된 예산은 비용 데이터에 따라 달라지므로 지출 패턴 변경에 따라 예정된 예산 금액이 변동될 수 있습니다. 예산 금액을 조정하게 되면 모든 알림 수신자에게 알려 드릴 것읍니다.
예산 범위
여러 계정, 서비스, 리전 등에 대해 필터링을 할 수 있는 옵션과 모든 AWS 서비스(권장) 옵션 2가지가 있다.

고급 옵션에 혼합(blended), 일반(unblended), 분할 상환(Amortized) 등이 있는데 이건 AWS의 Billing 체계에 대해 잘 모르면 이해하기 다소 어려우니 그냥 default로 설정하고 사용하면 된다.
알림 구성
이제 예산을 초과하는 비용이 발생했을 때 발생하는 알람에 대해 설정해보자

알람을 발생시킬 기준은 %와 절대값이 있다. 계산하기 쉽게 현재 예산이 100$라고 가정해보자.
위 예시처럼 경우로 지정하고 50으로 설정하면 예산의 50%인 50$의 비용이 발생했을 때 알람이 발생하게 된다.
절대값은 말 그대로 절대값 비용을 초과하면 알람이 발생하게된다.
별도 구성없이 이메일 수신자에 본인의 이메일만 지정해주면 알림에 대한 내용을 이메일로 받을 수 있다.
또한 SNS을 지정할 수도 있다. 람다와 연동하여 알람 발생 시 ec2 중지 등 후속 조치도 취할 수 있다. 관련 문서를 참고하자
예산 알림을 위한 Amazon SNS 주제 생성 - AWS 비용 관리
Amazon SNS에서 메시지를 주고 받을 수 있는 전역 권한을 구성할 수 있지만 AWS KMS에서는 특정 리전에 있는 AWS KMS keys(KMS 키)의 전체 ARN의 이름을 지정해야 합니다. IAM 정책의 리소스(Resource) 섹션에서
docs.aws.amazon.com
Chatbot은 사용해보진 않았으나 slack, chime, teams와 같은 서비스에 알람을 보내주는 기능인거 같다.
https://us-east-2.console.aws.amazon.com/chatbot/home
us-east-2.console.aws.amazon.com
여기까지 설정을 완료하면 아래와 같이 Budget이 생성되고, 비용이 초과되면 알람이 발생할 것이다.

추가로 한가지 고려할 부분이 있다. AWS의 경우 실시간으로 비용 모니터링이 되는건 아니라는 점이다.
AWS 자체에서 비용 데이터를 생성하고 생성된 데이터를 기반으로 비용을 추적하여 모니터링하기 때문에 비용이 발생하더라도 실시간이 아닌 최소 8시간 ~ 최대 48시간 뒤에 알림이 발생된다. (AWS가 개런티하는 시간)
그래도 비용 모니터링은 무조건적으로 필요하기 때문에 반드시 설정하는걸 권장한다.
'AWS' 카테고리의 다른 글
| [AWS] AWS API 동작 방식 (1) | 2024.07.21 |
|---|---|
| [AWS] Secrets Manager (0) | 2024.06.27 |
| [AWS] Cloudwatch 로그 슬랙 전송하기 #2 (0) | 2024.05.28 |
| [AWS] ACM 인증서 발급 과정 (Certificate Manager) (0) | 2024.03.31 |
| [AWS] Cloudwatch 로그 슬랙 전송하기 #1 (0) | 2024.03.06 |