현재 아키텍쳐는 Elastic Beanstalk에서 서버 이상 상태에 대한 이벤트를 받아서 Lambda 함수에서 슬랙으로 메시지를 전송한다. 하지만 여기서 Lambda 함수에 대한 코드를 사용자가 직접 관리해야 하기 때문에, 이 기능을 AWS Chatbot으로 이전해서 코드에 대한 관리까지 없애보려고 한다.
기존의 플로우에서 람다 -> chatbot으로 전환하는 내용이다. 아래 링크는 기존의 플로우
https://tre2man.tistory.com/303
구상하기
변경 후의 플로우는 다음 그림과 같다.
SNS 개념잡기
SNS는 이벤트 메시지에 관한 모든 처리를 하는 곳이다. 가령 특정 서비스에 관한 이벤트를 SNS로 모두 전송하고, 해당 이벤트를 구독하고 싶은 서비스들은 직접 구독하거나 구독을 중단할 수 있다.
SNS Topic(주제) : 특정한 AWS 서비스에서 이벤트를 받아오는 곳이다.
SNS Subscription(구독) : Topic에서 받아온 이벤트들을 다른 서비스로 보내는 곳 (말 그대로, 다른 서비스에서 받아오는 것) 이다. 여기서는 이벤트마다 필터를 걸어서 특정한 이벤트만 받을 수 있도록 필터링도 할 수 있다. (해당 기능은 메시지에 관심사를 추가해서 생성하면, 구독에서 메시지를 필터링을 한다)
설계하기
맨 처음에는 AWS Chatbot과 slack을 연동해야 한다. 그래야 이후 작업이 가능하고, 해당 작업은 어렵지 않아 바로 넘긴다.
그 다음은 SNS에서 구독 가능한 Topic(Notification)을 만들어야 한다. EventBridge 먼저 만들려고 하면 SNS 주제가 없기 때문에 생성을 하지 못한다. SNS 토픽은 기본 설정대로(유형 : FIFO가 아닌 표준으로 설정) 바로 만들면 된다. (간단해서 사진 생략)
이후에 EventBridge에서 이벤트에 대한 규칙을 만든 이후, 해당 이벤트를 전송할 대상으로 위에서 만든 Topic에 연결한다. EventBridge에서 이벤트를 만들 때 봐야 할것은 다음과 같다.
먼저 샘플 이벤트를 확인하여 EB Ehalth status change의 내용을 확인해보자. 저런 식으로 이벤트가 생성이 된다는 것만 알고 있으면 된다.
다음은 이벤트 패턴 필터이다. 처음에 JSON으로 직접 작성해야 하는줄 알았지만, 콘솔에서 알아서 옵션들을 제공해 준다. 옵션을 클릭만 하게 되면 오른쪽에 알아서 JSON 파일이 생긴다. 나는 모든 환경에서 상태 변화에 대한 내용을 확인해야 하기 때문에 위와 같이 지정해 두었다.
다음은 이벤트 구독 대상을 지정해야 한다. 우리는 SNS에 토픽을 만들어 두었으므로, 해당 토픽으로 이벤트가 전달되도록 설정한다.
마지막으로 Chatbot을 제작한다. 이 때 SNS의 주제를 선택하면 자동으로 SNS 구독이 생성되면서 이벤트를 받아올 것이다. 해당 기능을 제작하고 이벤트가 Slack으로 잘 넘어오는지 확인해 보자.
이벤트 변화에 대한 내용이 슬랙으로 잘 넘어오는 것을 볼수 있다!
참고자료
https://docs.aws.amazon.com/chatbot/latest/adminguide/create-eventbridge-rule.html
https://blog.leocat.kr/notes/2020/12/18/aws-sns-subscription-filtering
'서버 인프라 > Aws' 카테고리의 다른 글
AWS 솔루션 아키텍트 어소시에시트 합격 후기 (2) | 2023.06.02 |
---|---|
이벤트 데이터 파이프라인 제작하기 (0) | 2022.09.07 |
Kinesis 관련 내용 정리하기 (0) | 2022.08.18 |
AWS Lambda에서 고정 IP 사용하기 (0) | 2022.08.04 |
서버 상태 Lambda와 Slack으로 실시간 확인하기 (6) | 2022.07.27 |