Amazon CloudWatch, AWS Lambda를 이용한 Slack notification

2020. 2. 26. 17:38IT/AWS

728x90

본문에서는 CloudWatch Alarms과 Lambda를 이용하여 사용자에게 리소스 상황을 Slack으로 notification을 하도록 구성한다.

 

1. 사전 준비

1.1 Slack Webhook URL 생성

Slack에서 'incomming webhooks'을 검색하여 설치한다. 

 

notification을 받을 채널을 선택한다.

 

Webhook URL을 생성한다. 이 주소는 추후 Lambda에서 사용된다.

 

다음과 같이 curl 명령으로 해당 주소에 테스트 메세지를 보내면, 수신되는 것을 확인할 수 있다.

 

1.2 AWS Key 생성

AWS CLI를 통해 키를 생성하고 KeyId를 저장한다.

aws kms create-key --region ap-northeast-2

 

해당되는 KeyId와 Slack URL를 넣어 연결한다.

aws kms create-alias --alias-name "alias/SlackKey"
--target-key-id "KeyId" --region ap-northeast-2
 
aws kms encrypt --key-id alias/SlackKey --plaintext
"hooks.slack.com/services/Slack Webhook URL" --region ap-northeast-2

 

1.3 AWS Lambda 생성 및 설정

AWS Lambda에서 함수를 생성하고, 다음과 같이 선택한다.

 

SlackChannel은 전송하고자 하는 채널 이름을 입력하고, kmsEncryptedHookUrl는 CiphertexBlob 값을 입력한다.

 

1.4 구현

CPU에 부하를 발생시켜 테스트한다. 정해놓은 임계치 이상 발생하면, Slack notification을 받을 수 있다.

 

stress 명령으로 인위적인 부하를 발생시켜 테스트한다. 

sudo amazon-linux-extras install epel -y
sudo yum install stress -y
 
stress --cpu 1 --timeout 300

 

정해놓은 채널과 메세지로 알람오는 것을 확인할 수 있다.

 

300x250