cloudwatch의 경보나 지표 등을 트리거로 다음 동작을 연동시키는 경우(특히 Lambda)가 빈번하게 발생하는데, 각 경우의 방법들을 정리해보고자 한다.
가장 직관적인 방법이다. CloudWatch에 존재하는 지표를 기반으로 알람을 생성하고, 해당 알람을 트리거로 Lambda를 실행시켜 특정 동작을 수행한다.
CloudWatch Alarm ⇒ 편집 탭에서 새로운 작업을 추가할 수 있는데, 이 때 Lambda 작업을 추가하도록 되어 있다.
어떻게 보면 AWS에서 가장 권장하는 방법인 것 같다. AWS 관련 자격증을 준비하다보면 EventBridge를 심심찮게 만날 수 있는데, 그만큼 좋은 서비스이고 이를 적극 활용하는 것을 권장하는 편이다.
나 또한 실제 이벤트 기반 시스템을 구성할 때, EventBridge를 적극 활용한다. 또한, CloudWatch에서 지표를 생성하면 해당 지표를 기반으로 EventBridge 규칙을 사용할 수 있도록 템플릿을 제공해주기 때문에 더욱 손쉽게 구현할 수 있다는 장점이 있다.
기본적으로 경보가 생성된 이후 해당 경보 상세 탭 맨 아래를 보면 ‘EventBridge 규칙 보기’ 라는 토글 버튼을 확인할 수 있다. 해당 토글을 열면 아래와 같은 JSON 형태의 규칙을 확인할 수 있다.
해당 규칙을 등록한뒤, 대상을 지정하여 다양한 서비스로 이벤트를 확장할 수 있다.
확장성이 매우 높고, 가장 보편적이며, Well-Architected 인 방법이다.
일반적으로 해당 알림의 경보를 나타내기 위해 아래 속성에 다음을 추가하여 사용하는 편이다.
{
...
"detail": {
"state": {
"value": "ALARM"
}
}
}
경보 이벤트 및 EventBridge - Amazon CloudWatch
일반적으로 특정 작업을 수행하기 위해 사용된다기보다는, 로그 스트림의 로그를 모니터링하고 분석하는 용도로 자주 사용되는 방법이다.
로그 스트림에 대해 구독을 생성해 해당 로그에서 특정 표시자 혹은 패턴을 감지하고 이때 Lambda를 호출하여 작업을 수행하는 용도이다.
이를 위해서는 몇 가지 작업이 필요한데, 기본적으로 아래의 순서를 따른다.
logs:PutLogEvents
권한을 부여해야한다.지표 필터, 구독 필터, 필터 로그 이벤트 및 Live Tail에 대한 필터 패턴 구문 - Amazon CloudWatch Logs
위에서 설명한 세 가지 방법 중 앞의 2가지는 기존에 AWS에서 제공되는 사항들을 기반으로 작업을 수행하는 경우, 마지막 방법은 그 외에 제공되지는 않지만 내가 원하는 지표를 기반으로 작업을 수행하는 경우 유용하게 활용될 수 있다.
모든 경우의 방법을 익혀두고 적재적소에 알맞게 적용하도록 노력해보자.