본문 바로가기

Newb/AWS

RDS 중지 최대 허용 시간 초과로 인해 시작 시 EventBridge로 알림 받기

반응형

RDS는 중지 시 EC2처럼 계속 중지가 되는 것이 아닌 최대 7일간 중지가 되며, DB 인스턴스를 수동으로 시작하지 않으면 DB 인스턴스가 자동으로 시작됩니다.

 

Amazon RDS DB 인스턴스의 일시적 중지 - Amazon Relational Database Service

Amazon RDS DB 인스턴스의 일시적 중지 임시 테스트나 하루 단위의 개발 작업 등 DB 인스턴스를 간헐적으로 사용하는 경우에는 Amazon RDS DB 인스턴스를 일시적으로 중지하여 비용을 일시적으로 절약

docs.aws.amazon.com

이처럼 DB 인스턴스를 중지 시킨지 7일이 지난다면 자동으로 시작되어 다시 사용 요금이 부과되기 시작합니다.

7일이 지난 인스턴스이기 때문에 우리의 기억 속에서도 잊혀져, 내가 원하지 않았던 요금이 발생하기도 합니다.

 

이처럼 내가 원하지 않는 요금이 부과되는 것을 막기 위해서는 DB 인스턴스가 시작되었을 때 알림을 받거나, DB 인스턴스가 7일이 지나 올라왔을 때 자동으로 종료하게 하는 방법이 있습니다.


메일로 알림 받기

DB 인스턴스가 자동으로 시작 되었을 때 알림을 받기 위해 사용할 서비스는 SNS, EventBridge입니다.

 

SNS 서비스는 Simple Notification Service의 약자로 메세지를 전송하는 관리형 서비스이며, EventBridge 서비스는 애플리케이션을 다양한 소스의 데이터와 연결하는 데 사용할 수 있는 서버리스 이벤트 버스 서비스입니다.

두 서비스에 대한 자세한 설명은 아래의 링크를 참조 바랍니다.

먼저 메일을 받을 수 있도록 SNS의 주제, 구독에 대한 설정을 진행합니다.

  • 주제 생성
    • 유형 -> 표준
    • 이름, 표시 이름 네이밍

  • 구독 생성
    • 주제 ARN : 방금 전 만든 SNS 주제를 클릭합니다.
    • 프로토콜 : 이메일로 받을 예정이기에 이메일을 선택합니다.
    • 엔드포인트 : 받을 이메일 주소를 생성합니다.

위와 같이 생성이 완료되었다면, 엔드포인트에 적은 메일에 접속하여 구독 승인 메일을 열어 구독 확인 링크를 눌러줍니다.

구독 승인 메일
You have chosen to subscribe to the topic: arn:aws:sns:ap-northeast-2:123456789::RDS_Start_Notification
To confirm this subscription, click or visit the link below (If this was in error no action is necessary):Confirm subscription
Please do not reply directly to this email. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send an email to sns-opt-out

 


SNS 설정이 끝났다면 Event 발생 시 SNS로 알림을 보낼 EventBridge의 규칙을 생성합니다.

EventBridge 규칙 생성에서 가장 중요한 부분은 이벤트 패턴과 패턴에 일치되었을 때 호출할 대상을 정하는 부분입니다.

 

  • EventBridge의 규칙 생성을 클릭하시면 아래와 같이 샘플 이벤트를 볼 수 있습니다. 저는 먼저 RDS에 대한 알림을 설정할 것이기 때문에 RDS DB Instance Event에 대한 샘플 이벤트를 확인해보았습니다.

  • 이벤트 패턴 생성
{
  "source": ["aws.rds"],
  "detail-type": ["RDS DB Instance Event"],
  "detail": {
    "EventID": ["RDS-EVENT-0088", "RDS-EVENT-0154", "RDS-EVENT-0087"],
    "EventCategories": ["notification"],
    "SourceType": ["DB_INSTANCE"],
    "SourceArn": ["arn:aws:rds:ap-northeast-2:1234567890:db:RDS Name"],
    "SourceIdentifier": ["RDS Name"]
  }
}

 

마지막으로 내가 정의한 이벤트 패턴에 매칭 되었을 때 메일 알림을 받기 위해 처음에 생성해 두었던 SNS에 연결합니다.


알림 테스트 메일

{
"region": "ap-northeast-2",
"Date":"2022-01-14T07:14:08.866Z",
"EventCategories":["notification"],
"SourceType":"DB_INSTANCE",
 "SourceArn": ["arn:aws:rds:ap-northeast-2:1234567890:db:RDS Name"],
 "SourceIdentifier": ["RDS Name"]
"EventID":"RDS-EVENT-0154",
"Message":"DB instance is being started due to it exceeding the maximum allowed time being stopped."
}

이로써 내 머리속 기억에서 사라진 중지한 RDS가 7일이 지나 자동으로 시작이 됐을 경우 메일로 알림을 받기 때문에 원치 않는 요금이 나도 몰래 부과되는 일은 없겠죠? 😂


참고 URL

 

반응형