EventBridge Rule 를 사용해서 CloudWatch Alarms 메일 내용 변경하기 (CW Alarms → EventBridge Rule → SNS)

EventBridge Rule 를 사용해서 CloudWatch Alarms 메일 내용 변경하기 (CW Alarms → EventBridge Rule → SNS)

2025.08.23

안녕하세요! 클라우드 사업본부의 임채정입니다.
이번 블로그에서는 EventBridge Rule 을 사용해서 CloudWatch Alarms 의 메일 내용을 원하는데로 바꿔서 보내는 방법에 대해 정리했습니다.

1. 실습 전 확인

1.1. CloudWatch Alarms 의 기본 메일 내용 확인

그럼 메일 내용을 변경하는 방법을 설명하기 전에 CloudWatch Alarms 으로 알람을 전송할 때 기본적으로 어떤 내용으로 전송되는지를 먼저 확인하겠습니다.
CloudWatch Alarms 통해 전송되는 메일 내용은 다음과 같습니다.

ll01

기본 내용은 영어로 되어 있고 모든 정보가 들어있어 중요한 부분을 한 눈에 파악하기 어렵기때문에 필요한 정보만 정리해서 메일로 보내고자 합니다.

1.2 실습 내용

011

① CloudWatch Alarm 에서 상태 변화로 인해 알람 이벤트가 발생합니다.
② 이벤트가 이벤트 패턴과 일치하는 경우 EventBridge Rule 이 실행됩니다.
③ EventBridge Rule 의 입력 변환기 기능을 통해 이벤트의 텍스트를 원하는데로 정의합니다.
④ SNS 주제로 정의한 결과를 전달합니다.
⑤ SNS 주제에 구독하고 있는 이메일 주소로 메일을 전송합니다

2. 리소스 생성

2.1. EC2 인스턴스

블로그에서는 EC2 인스턴스의 CPU 사용률을 통해 알람을 발생시킬 예정이기 때문에 인스턴스를 1개 생성해줍니다.
하지만 EC2 인스턴스의 스펙은 중요하지 않기 때문에 생략하겠습니다.

2.2. CloudWatch Alarm

CloudWatch Alarm 은 설정에는 다음 단계가 존재합니다.

  • 단계 1 - 지표 및 조건 지정
  • 단계 2 - 작업 구성
  • 단계 3 - 경보 세부 정보 추가
  • 단계 4 - 미리 보기 및 생성

블로그에서는 일반적인 CPU 사용률 알람을 사용하기 때문에 설정 방법에 대해서는 따로 설명하지 않겠습니다.
실제 알람을 생성할 때는 원하는 지표와 알람 발생 조건을 설정해주시면 됩니다.

단, 단계 3 - 경보 세부 정보 추가의 작업 구성은 모든 작업을 설정하지 않은 상태로 생성합니다.
(아래에서 EventBridge Rule 에서 이벤트 패턴을 설정하기 때문에 다른 작업 구성이 추가로 필요한 경우가 아니면 설정하지 않아도 됩니다.)
01

2.3. SNS 주제

메일 전송을 위해 SNS 주제를 작성하고, 테스트에 사용할 이메일을 구독 추가해둡니다.
작성 절차는 생략하겠습니다.

3. EventBridge Rule(규칙) 생성

EventBridge Rule을 생성합니다.

EventBridge Rule 생성은 크게 5개의 단계로 나눠집니다.

  • 1단계: 규칙 세부 정보 정의
  • 2단계: 이벤트 패턴 작성
  • 3단계: 대상 선택
  • 4단계: 태그 구성 (선택 사항)
  • 5단계: 검토 및 생성

3.1. 규칙 세부 정보 정의 (1단계)

해당 단계에서는 규칙 세부 정보를 정의합니다.

  • 규칙 이름: cloudwatch-messages-rule(임의로 설정)

또한, 규칙 유형은 두가지가 존재합니다.

  • 이벤트 패턴이 있는 규칙
  • 일정

이번에는 CloudWatch Alarms 에서 이벤트 패턴이 발생하면 규칙을 실행하고 싶기 때문에 이벤트 패턴이 있는 규칙 으로 선택되어 있는지 확인합니다.
02

3.2. 이벤트 패턴 작성 (2단계)

해당 단계에서는 어떤 이벤트 패턴이 발생했을 때 규칙을 실행할건지 결정하기 위해 이벤트 패턴을 정의합니다.

설정 방법은 여러 가지 있습니다.
어떤 방법을 선택하든 원하는 이미지 패턴을 설정해주면 됩니다.

3.2.1. 패턴 양식 사용

패턴 양식 사용을 통해 CloudWatch Alarms 의 상태 변경시 EventBridge 규칙 발생하도록 하는 이벤트 패턴을 EventBridge 에서 제공하기 때문에 아래 사진과 같이 원하는 이벤트 유형을 선택하면 됩니다.
033
CloudWatch Alarm State Change 유형을 선택하면 알람이 어떤 상태로든 변경되면 규칙이 발생합니다. (ALARM, OK, INSUFFICIENT_DATA)

3.2.2. 패턴 양식 사용

혹은 사용자 지정 패턴(JSON 편집기) 을 통해 Alarms 의 상태가 특정 상태(ALARM, OK)로 변경시 EventBridge 규칙 발생하도록 설정할 수도 있습니다.
03
이 경우 value 에 지정하지 않은 상태로 변경될 때는 이벤트가 발생하지 않습니다.
예를 들어 블로그에서는 INSUFFICIENT_DATA 는 지정하지 않았기 때문에 알람이 데이터 부족 상태가 되면 이벤트는 발생하지 않습니다.

원하는 이벤트 패턴을 설정한 후 다음 단계로 넘어갑니다.

3.3. 대상 선택 (3단계)

3.3.1. 대상 지정

대상 선택 항목에서는 EventBridge 규칙을 적용할 대상을 규정함과 동시에 추가 설정을 통해 규칙의 대상에게 전송하는 이벤트 텍스트를 지정할 수 있습니다.

먼저 아래 사진과 같이 대상을 규정하겠습니다.
04

이 때, SNS 주제는 2.3. 에서 생성한 주제를 설정합니다.
또한, 권한 설정은 따로 작성할 필요없이 자동으로 필요한 권한을 생성할 수 있도록 이 특정 리소스에 대해 새 역할 생성을 선택하겠습니다.
이미 권한 설정이 되어진 역할을 가지고 있다면 새로 생성할 필요 없이 기존의 역할을 선택해도 됩니다.

3.3.2. 이벤트 텍스트 지정

그리고 추가 설정을 통해 이벤트 텍스트를 지정하겠습니다.
추가 설정에서 대상 입력 구성에서 입력 변환기를 선택합니다.

선택 후에 입력 변환기 구성 버튼을 클릭하면 이벤트 텍스트 변경을 할 수 있습니다.
05

대상 입력 변환기에서 입력해야 하는 건 크게 두 개로 나눠집니다.

  • 입력 경로: 이벤트의 정보를 키-값 쌍으로 변수로 정의
  • 템플릿: 대상에 전달하려는 정보에 대한 템플릿

먼저 입력 경로에는 내가 템플릿에서 사용하고 싶은 이벤트의 정보를 변수로 정의합니다.

입력 경로
{
  "alarmName": "$.detail.alarmName",
  "newState": "$.detail.state.value",
  "oldState": "$.detail.previousState.value",
  "timestamp": "$.detail.state.timestamp",
  "reason": "$.detail.state.reason",
  "region": "$.region",
  "instanceId": "$.detail.configuration.metrics[0].metricStat.metric.dimensions.InstanceId",
  "metricName": "$.detail.configuration.metrics[0].metricStat.metric.name"
}
이벤트 내용 확인하기

변수 정의를 위한 이벤트 정보는 입력 변환기 구성 페이지의 샘플 이벤트에서 확인할 수 있습니다.
012

그리고 템플릿에 입력 경로에서 정의한 변수를 바탕으로 메일에 전송하고 싶은 내용을 작성합니다.

입력 경로
"🚨 CloudWatch 알람 알림"

"📋 알람 정보:"
"- 알람명: <alarmName>"
"- 현재 상태: <newState>"
"- 이전 상태: <oldState>"
"- 변경 시간: <timestamp>"

"💻 리소스 정보:"
"- 인스턴스 ID: <instanceId>"
"- 메트릭: <metricName>"
"- 리전: <region>"

"📝 상세 사유:"
"<reason>"

"🔗 CloudWatch 콘솔:"
"https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#alarmsV2:alarm/alarm-messages-modify-alarm"

이렇게 작성을 했으면 다음 단계로 이동합니다.

3.4. 그 외 단계 (4,5단계)

4단계: 태그 구성 (선택 사항)는 필수 설정 항목이 아니기 때문에 아무 것도 설정하지 않고 넘어가겠습니다.
5단계: 검토 및 생성도 따로 설정할 항목은 없기 때문에 설정한 항목을 검토하고 문제가 없으면 그대로 생성하겠습니다.

마지막 단계까지 완료하면 새로운 규칙이 생성됩니다.
07

4. 동작 확인

마지막으로 동작확인을 하겠습니다.

다음 명령어를 실행해서 CloudWatch Alarms 의 상태를 변경시킵니다.

CloudWatch Alarm 의 상태 변경 명령어
aws cloudwatch set-alarm-state --alarm-name "alarm-messages-modify-alarm" --state-value ALARM --state-reason "test"

콘솔 화면에서 확인해보면 Alarms으로 상태가 변경되었습니다.
09

이메일을 확인해보면 제가 정의한 이벤트 텍스트의 내용으로 메일이 전송되었습니다.
010

단, 이 방법의 경우 메일 제목까지 변경할 수는 없습니다.
그렇기 때문에 메일 제목을 변경하고 싶다면 다른 방법을 사용해야 할 것같습니다.

5. 마무리

이상으로 EventBridge Role 를 사용해서 CloudWatch Alarms 내용 변경해서 메일로 전송하는 방법이었습니다.
이 방법을 사용해서 알람이 발생했을 대 원하는 정보만 메일로 전송받아, 알람 발생 원인을 빠르게 파악하는 데 도움이 되었으면 좋겠습니다.

문의 사항은 클래스메소드코리아로!

클래스메소드코리아에서는 다양한 세미나 및 이벤트를 진행하고 있습니다.
진행중인 이벤트는 아래 페이지를 참고해주세요.

https://classmethod.kr/board/library

AWS에 대한 상담 및 클래스메소드코리아 멤버스에 관한 문의사항은 아래 메일로 연락주시면 감사드립니다!
Info@classmethod.kr

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.