AWS Health Dashboard 에 올라온 이벤트를 EventBridge 에서 정의한 패턴에서 필터링 후 일치하는 이벤트라면 SNS 로 보낸 후 Chatbot 에서 발생된 이벤트를 슬랙 채널에 알려주는 아키텍처
AWS chatbot 페이지에 들어가서 아래 구성된 클라이언트 → 새 클라이언트 구성 → Slack 선택 → 구성을 선택하면 바로 Slack의 Workspace와 연결 가능하다.
위의 스크린샷의 예시이다.
최종 생성된 configuration 결과를 보면 workspace ID를 확인 가능하다.
이제 새로운 채널만 연결해 주면 끝나는데, AWS CDK를 이용하거나 AWS 콘솔에서 이용해 채널 연결할 수 있다.
그리고 알람을 받을 채널에 위와 같이 '/invite @aws' 라고 하며 채널에 추가되며 1번 더 시도하면 위와 같이 채널에 이미 있다고 나올 것이다.
구성 이름을 선택하고 Cloudwatch Logs 에는 따로 적재하지 않아 체크는 하지 않음
회사에서 팀의 업무 용도로 확인할 채널이라 Private 를 선택하였다.
채널 ID 는 Slack 채널 정보에서 ID 값을 확인할 수 있다.
권한의 경우 신규로 Role 과 Policy 를 생성하였으며, 부여한 정책은 아래와 같다.
기존 역할에는 Chatbot이 사용할 Role 에 Policy 를 추가 하였다.
채널 가드 레일 정책에서는 채널 멤버가 수행할 수 있는 작업을 세부적으로 정의하는 것이지만 Slack 채널에서 제어할 작업이 없기에 기존 정책과 동일하게 설정 하였다.
#AWS-Health-Notification-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"SNS:Publish"
],
"Effect": "Allow",
"Resource": [
"arn:aws:sns:ap-northeast-2:ACCOUNT:AWS-Health-Notification"
]
},
{
"Action": [
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}
설정한 SNS 주제의 내용을 챗봇이 구독하여 AWS에서 발생된 이벤트 내용을 Slack에 전달하기 위하여 설정을 하였다. (주제를 선택 후 해당 주제를 확인해보면 chatbot 엔드포인트가 구독이 된 상태를 확인)
만들어둔 구성의 우축 상단에 테스트 메시지 전송을 클릭하면 아래와 같이 메시지를 발송을 확인할 수 있다.
그리고 연결해둔 Slack 채널에는 테스트로 발송된 메시지가 온 것을 확인할 수 있다.
Amazon EventBridge → 규칙 → 규칙 생성
# 특정 서비스에 대한 Health 알람만 받도록 이벤트 패턴 정의
{
"source": ["aws.health"],
"detail-type": ["AWS Health Event"],
"detail": {
"service": ["EC2", "RDS", "ELASTICACHE", "ELASTICBEANSTALK", "KAFKA", "DYNAMODB", "DOCDB", "ECS", "EKS"]
}
}
이벤트 패턴은 위와 같이 설정 하였다.
대상에는 Chatbot 설정 시 구독한 SNS 주제를 선택하면 해당 SNS 로 메시지가 전달이 될 것이고, Slack 에서 AWS. PHD 의 항목을 확인하여 인스턴스의 메인터넌스 등 유지보수에 대한 작업을 대응할 수 있을 것이다.
Slack 으로 ECS 관련 변경 사항이 올라온 것을 확인할 수 있었으며, AWS PHD 에서도 동일한 이슈가 있는 것을 확인할 수 있었다.