본문 바로가기
  • 클라우드야 나랑 친해지자!
클라우드/AWS

Lambda 함수 기반 AWS 지출 요금 모니터링

by 정민규 2021. 2. 17.
반응형

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


 

교재 <당신이 지금 알아야 할 AWS - 이영호, 한동수 지음>를 토대로 실습을 진행하였습니다.

 

 

*SNS(Simple Notification Service)

알림 서비스, AWS 서비스를 통해 발생하는 이벤트들을 푸시 메시지, 문자 등을 통해 사용자에게 알려주는 기능을 합니다.

 

*SES(Simple Email Service)

복수의 사용자들에게 이메일을 보내거나 메일 서버 등을 관리할 때 사용됩니다.

 

*SQS(Simple Queue Service)

마이크로서비스를 위한 분산 관리 서비스입니다. 수만 건 이상의 람다 함수를 실행할 때 쉽게 사용할 수 있도록 도와줍니다.

 

 

* 실습 요약

1. SES 설정

2. SES 서비스 실행 권한을 위한 IAM 정책 설정

  A. 정책 생성 및 검토(정책 이름 policy_for_lambda_to_billing_email)

  B. 역할 생성(역할 이름 role_for_lambda_to_billing_email)

3. SES 람다 함수 생성

  A. 람다 함수 생성(람다 함수 이름: lambda_for_billing_email)

  B. 람다 함수 실행 역할 생성(람다 역할 이름 : role_for_lambda_to_billing_email)

4. SES 람다 코드 작성

5. SES 이벤트 구성(이벤트 이름 : EventForMailing)

6. SES 클라우드와치 이벤트 연동

7. SES 트리거 구성(트리거 이름 : Event_rate_billing_email)

 

 

 

# 이번 실습의 경우 "서울" 리전에서 진행했을 때 오류가 발생하여 "버지니아 북부" 리전에서 진행하였습니다.

# 아마 "서울" 리전에서 진행하셔도 문제 없이 진행 되실겁니다..!

 

 

 

 

1) SES 설정

이메일 알림을 받기 위해 AWS 대시보드에서 고객 참여 카테고리에 있는 "Simple Email Service"로 이동합니다.

SES 서비스 대시보드로 이동하면 버지니아 북부, 오레곤, EU 에서만 사용할 수 있으며, 이 3군데 지역 중 어떤 곳을 선택해도 상관 없으며 저는 버지니아 북부리전에서 실습을 진행하였습니다.

 

Email Address 클릭 > Verify a New Email Address 클릭 > 이메일 주소 등록

 

 

 

검증 상태가 "pending verification" 으로 아직 검증이 안된 상태입니다.

 

 

 

 

 

아마존으로부터 이메일 수신 > 링크 클릭 후 기존 SES 창으로 돌아오면 > 검증 상태가 "verified" 로 바뀐 것을 확인할 수 있음 

 

 

 

 

 

 

2) SES IAM 정의

IAM > 정책 > 정책 생성 > 서비스 선택 : Cost Explorer Service > 작업 : 모든 > 권한 추가 > 서비스 : SES > 작업 : 쓰기 > 리소스 : 모든 리소스 > 다음 > 태그(무시) > 다음 > 정책 이름 : policy_for_lambda_to_billing_email > 정책 생성

 

 

 

 

역할 > 역할 만들기 > Lambda 선택 > 정책 연결 : policy_for_lambda_to_billing_email > 역할 이름 : role_for_lambda_to_billing_email > 역할 만들기

 

 

 

 

 

 

3) SES 람다 함수 생성

Lambda > 함수 생성 > 함수 이름 : lambda_for_billing_email > 런타임 : Node.js 14.x > 기존 역할 사용 > 기존 역할 : role_for_lambda_to_billing_email > 함수 생성

 

 

 

 

 

4) SES 코드 작성

함수 코드에 SES.txt 파일의 소스 코드를 붙여넣기 합니다.

 

소스코드에 대한 간단한 설명은 "Cost Explorer" 서비스를 이용하여 현재 청구 정보를 가져온 후 SES 서비스를 이용해 이벤트 인자로 받은 이메일로 메일을 보낸다는 내용입니다.

 

정확히 오늘 날짜와 어제 날짜를 불러와서, 어제와 오늘 사이 발생한 요금을 가져옵니다. 끝나는 날을 오늘로 설정하면 오늘을 포함하지 않은 날의 비용을 가져오니, 정확히 어제까지 발송한 비용을 계산합니다.

SES.txt
0.00MB

 

 

 

이메일을 보내는 함수 이벤트의 경우 시간이 다소 소요되는 경우가 있습니다. 이를 방지하기 위해 스크롤을 조금 내려 하단 "기본 설정"에서 "제한 시간"을 10초로 설정합니다.

 

 

 

 

 

5) SES 이벤트 구성

테스트 이벤트 구성 > 이벤트 이름 : EventForMailing >"sender"에는 방금 전 AWS SES를 이용하여 인증한 이메일 주소를, "receiver" 에는 받을 이메일 주소를 각각 입력합니다. 동일한 주소를 입력해도 상관 없습니다.

 

 

 

실행 결과가 "성공" 이 뜨면서 이메일로 요금이 발송됐습니다!

 

 

 

 

 

 

6) SES 클라우드 와치 이벤트 연동

7) SES 트리거 구성

디자이너 좌측에 트리거 추가 클릭 > EventBridge 클릭 > 새 규칙 생성 > 규칙 이름 : event_rate_billing_email

 

규칙 유형에는 크게 이벤트 패턴과 예약 표현식이 있습니다.

이벤트 패턴은 AWS 서비스를 통해 특정 조건이 맞을 때 발생합니다. 이를테면, 일정 비용 이상 올라갔거나 혹은 EC2에 이상이 생겼거나, 데이터베이스에 새로운 데이터가 들어왔거나 하는 등 대부분의 AWS 서비스에서 발생하는 이벤트가 가능합니다.

예약 표현식은 크게 Rate 표현식과 cron 표현식을 지원합니다. Rate는 주로 사용 빈도에 대한 표현식을 사용할 때, Cron은 지정된 시간을 표현하기 위해 사용됩니다.

저는 3일마다 이번 달 청구 정보를 이메일로 전달받기로 하였으니 rate(3 days)를 입력했습니다.

 

 

 

 

아래와 같이 EventBridge(CloudWatch Events) 트리거가 추가되었습니다.

트리거가 활성화 되었고, 이제 3일마다 해당 월 청구 정보가 등록된 이메일로 발송됩니다.

 

 

 

반응형

댓글