AWS Budgets 알람 AWS Chatbot을 통해 슬랙으로 받기
안녕하세요! 클래스메소드의 이병현입니다!
AWS를 여러 리소스를 사용하다보면 요금이 신경쓰이게되죠. 그래서 일정 예산 안에서 리소스들을 사용하기 위해 AWS Budgets을 사용합니다. 이 Budgets 기능 중에는 현재의 요금 혹은, 리소스 사용량을 예측하여 사용자가 설정해 놓은 예산보다 초과할 것 같으면 알람을 받을 수 있는데요. 이 알람을 AWS Chatbot으로 Slack 채널에 AWS 계정의 비용 상태를 공유하는 방법에 대해 알아보겠습니다.
Budgets 알람을 이메일로도 받을 수 있지만 Slack 개인 봇이 아니라 채널에서 이메일로 알람을 받으려면 Slack의 스탠다드이상의 플랜을 사용하여야 하기 때문에 스탠다드 이상이 아니고 채널에 공유하고 싶다면 좋은 방법인 것 같습니다.
요금
AWS 예산을 사용하면 사용자 지정 비용 및 사용량 예산을 설정하고 예산 임계값이 초과될 때 알림을 받을 수 있습니다. 처음 두 개의 예산은 무료이며 그 이후에는 예산별로 일별 0.02 USD의 비용이 발생합니다.
https://aws.amazon.com/ko/aws-cost-management/pricing/
무료로 사용하고 싶다면 예산을 2개까지만 만들어서 사용해주세요!
AWS SNS topic 생성
갑자기 왠 SNS topic을 생성하는가 할 수 있겠지만요, AWS Budgets는 SNS topic을 사용하여 채팅 클라이언트로 메시지를 보낼 수 있습니다.
AWS SNS 콘솔로 이동해주세요.
AWS SNS 콘솔에서 topic을 생성해주시면 됩니다. 이름은 자신이 알아보기 쉬운 이름으로 정해주세요.
AWS Budgets가 SNS topic에 액세스 할 수 있게 정책을 추가하겠습니다.
Statement 밑에 위의 사진과 같이 아래의 텍스트를 넣어주세요.
{ "Sid": "AWSBudgetsSNSPublishingPermissions", "Effect": "Allow", "Principal": { "Service": "budgets.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "My AWS SNS resource name" },
Resource는 정책 json을 조금 밑에 내려보시면 동일한 항목이 보이실텐데요 복사해서 넣어주시면 됩니다.
또한 Sid는 정책내에서 이름이 겹치면 안됩니다. 이름이 중복될 경우 Sid 명을 변경해야합니다.
만약, 리소스명이 보이지 않는다면 일단 정책을 추가하지말고 topic을 생성 후 topic의 ARN을 복사한 후 편집에 들어가서 정책을 추가해주세요.
Budget 생성
Budgets 대쉬보드에 들어가서 예산을 생성해주세요.
비용에 관한 알람을 받기위해 비용 예산을 선택해주세요.
예산의 이름과 금액을 입력해주세요. 이외 설정은 기본으로 두고 진행하겠습니다.
실제 비용과 예측 비용을 기준으로 선택할 수 있습니다. 예측 비용은 약 5주간의 AWS 계정의 사용기록이 필요합니다.
임계값으로 비율을 설정할 수 있습니다. 여기서는 60%를 사용하였지만 예산자체의 값을 사용하시려면 100%로 설정해주시면 됩니다.
SNS 주제는 처음 만들어주신 SNS 주제(topic)의 ARN을 사용하시면 됩니다.
위의 사항을 모두 입력한 후 우측하단의 예산확인을 누르신 후 나오는 마지막 페이지에서 우측하단의 작성버튼을 누르면 예산 생성이 완료되게 됩니다.
Chatbot Slack 연동
AWS Chatbot에서 Slack 버전으로 생성해주세요.
사용하고 있는 슬랙 workspace에 연결해주시면 되겠습니다.
이제 실제 사용할 채널에 연결하겠습니다.
사용하실 챗봇의 이름과 슬랙의 채널을 입력해주시고, 채널 유형을 퍼블릭과 프라이벳 중 선택해주시면 됩니다.
챗봇이 사용할 IAM role을 템플릿을 사용하여 만들어 주시면 됩니다.
처음 만들어주신 SNS 주제를 선택해주시고 우측하단의 구성을 누르시면 완성입니다.
Chatbot 확인
위의 과정을 모두 완료 후 한번 쯤 임계값을 낮추어서 테스트 해보면 잘 오는 것을 확인할 수 있습니다.
만약 다른 챗봇의 기능을 사용하고 싶다면 챗봇을 만들 때 선택한 슬랙 채널에서
/invite @aws
을 입력하시면 이후 @aws 를 사용하여 챗봇의 기능들을 사용할 수 있습니다.
마지막으로
AWS를 사용하다 요금에 대해 방심을 하면 자신이 생각했던 것보다 한참 더 많은 요금이 나올 수 있습니다. 이러한 일을 방지하기 위하여 예산을 설정하고, 알람을 만드는 것이 좋은 방법이라고 생각합니다. 저도 CloudFormation로 리소스를 만들고 지우는 과정에서 NAT Gateway 삭제가 실패되었는데 제가 알아차리지 못해 아까운 돈이 나간걸 보고, 바로 알람을 설정했습니다. 귀찮더라도 요금을 낭비하지 않기 위하여 꼭 설정해주시기 바랍니다!
참고링크