SAM ?
AWS에서 서버리스 애플리케이션을 빌드하는 데 사용할 수 있는 오픈 소스 프레임워크입니다.
Lambda 함수, 이벤트 소스 및 기타 리소스의 조합.
굳이 힘들게 만들지 않아도 기본적인 앱들이 많다.
그중에 cloudwatch to slack 을 이용해서 해본다.
lambda -> 어플리케이션 -> 검색 serverlessrepo-cloudwatch-alarm-to-slack
slack incoming webhook
미리 생성
CloudWatch Alarms to Slack
흐름?
그림상 CPU로 했지만 이번엔 특정 람다함수의 에러로그시 알람을 받아보기로함.
1. SAM을 이용해서 앱 생성
2. 생성된 리소스 확인해보자
SAM이 아니였다면 일일이 수작업을 해야한다.
SNS Topic, Role, Lambda function & permission & SNS연결
3. Lambda이벤트소스
이벤트 -> 슬랙 메세지 전송
이벤트 파라미터를 통해 채널별로 별도로 전송도 가능하겠다.
1 | function processEvent(event, callback) { |
4. 앱 환경변수
웹훅 url을 KMS로 암호화해서 넣어야한다.
알람을 받을 채널명을 입력한다.
5. KMS로 암호화
aws kms로 이동 후 kms 생성
작업PC에 aws-cli를 설치하고 sdk config를 설정한후 (key, secret, region )
암호화 명령어(웹훅 주소는 https://는 빼고한다.)1
2
3
4
5
6aws kms encrypt --key-id "alias/firstKey" --plaintext hooks.slack.com/services/T919NHKHQ/BRC2C9JTW/AWHkTB9tqxxxx
{
"CiphertextBlob": "AQICAHjZAWxDFIzL7Oag6zTm7iWRjsIxxxxxgEJyyQbbCYC6gzchcB1MLs6AAAApzCBpAYJKoZIhvcNAQcGoIGWMIGTAgEAMIGNBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDMlBSyOT7QHDEM8sLAIBEIBgFilgF7ONYEgiiiM4yxz+Iy8TkbzFlOiDoa79s4z................................+HWPErBuwGtje3bwfmoRCL1D24aosHuW8lekMJUqF0SqdlmGuxxxxx",
"KeyId": "arn:aws:kms:us-east-2:271382xxxxxx193:key/ab9a5099-01aa-46dc-b284-xxxxxx",
"EncryptionAlgorithm": "SYMMETRIC_DEFAULT"
}
6. CloudWatch Alert
7. 경보호출
소스수정으로 hello function실행시 error로그가 발생하도록 수정
8. 슬랙 채널 확인