AWS Ambassador

AWS Health Event(PHD) 멀티 리전 실시간 알림 시스템 구축

백룡화검 2025. 6. 13. 10:39

들어가며

AWS 환경에서 안정적인 인프라 운영을 위해서는 장애를 조기에 인지하고 빠르게 대응하는 체계를 갖추는 것이 핵심입니다. 그중에서도 AWS Personal Health Dashboard(PHD)는 내 계정에 영향을 줄 수 있는 시스템 이벤트(예: 서비스 중단, 보안 이슈, 유지보수 등)를 알림 형태로 제공하는 유용한 서비스입니다.

하지만 PHD 알림은 기본적으로 이메일 또는 콘솔에 국한되어 있어, 멀티 리전 환경에서는 실시간 대응이 어렵고 이벤트 관리가 번거로워질 수 있습니다.

때문에, 본 게시물에서는 AWS에서 발생하는 Health 이벤트를 보다 효과적으로 모니터링하고, 모니터링된 결과를 MegazoneCloud의 SpaceOne SaaS서비스와 연동하여 모니터링과 더불어 실시간 으로 Slack 알림까지 전송하는 경량화된 알림 시스템을 구성한 사례를 공유합니다. 

  • 각 리전: AWS Health 이벤트 발생 → EventBridge 규칙 생성
  • EventBridge: 이벤트를 중앙 Custom Event Bus로 포워딩
  • 중앙 Event Bus: EventBridge를 통한 Lambda 트리거
  • Lambda: 이벤트 처리 및 AWS SNS를 통한 메세지 발송
  • AWS Translate: 이벤트 설명 자동 번역
  • SNS(Amazone Simple Notification Service) : SpaceOne의 SNS WebHook으로 메세지 전달
  • SpaceOne : MegazoneCloud의 멀티 클라우드 통합 포탈로 통합 대시보드를 통해 간편하게 자원들을 모니터링 및 관리 가능

 

1. PHD 이벤트의 특성과 멀티 리전 통합의 필요성

PHD 이벤트는 리전마다 따로 발생합니다. 예를 들어 서울 리전에서만 EC2 점검이 예정된 경우, 해당 리전에만 이벤트가 발생합니다. 때문에,  리전이 늘어날수록 운영자는 콘솔이나 이메일을 일일이 확인해야 하고, 이 과정에서 알림 누락이나 대응 지연이 발생할 수 있습니다.

이를 해결하기 위해 모든 리전의 이벤트를 중앙 EventBridge Event Bus로 집계하고, 하나의 Lambda 함수로 통합 처리하는 구조를 선택했습니다.

2. EventBridge 설정과 구동방식

전체 서비스는 크게 4개의 AWS 서비스(EventBridge, Lambda, Translate, SNS)를 이용해 구성됩니다. 먼저 각 리전에서는 EventBridge 규칙을 생성하고, AWS Health 이벤트를 감지하면 이를 대상 이벤트 버스로 전달하도록 구성합니다. 이때 Cross-Region 전송이 가능해야 하며, 중앙 Event Bus는 예를 들어 ‘ap-northeast-2(서울)’ 리전에 위치할 수 있습니다.

중앙 Event Bus는 이벤트 수신 시 하나의 Lambda 함수를 트리거하며, 이 Lambda 함수는 이벤트의 상세 정보를 파싱하여 운영자에게 필요한 데이터만 Slack 또는 SpaceONE으로 전달합니다. 이를 통해 운영자는 각 리전의 상태를 단일 채널에서 실시간으로 모니터링할 수 있습니다.

아래는 EventBridge에 설정하는 이벤트 패턴 정보입니다.

이벤트 버스: default
이벤트 패턴:
{
  "source": [
    "aws.health"
  ]
}
isComplexStatement: 아니

 

3. Lambda 함수에서 이벤트 처리 및 번역

import json
import boto3
import os
 
translate = boto3.client('translate')
 
def lambda_handler(event, context):
    # Extract the JSON data from the SNS message
    phd_event = event['detail']['eventDescription'][0]['latestDescription']
     
    # Translate the latestDescription using AWS Translate
    original_text = phd_event
    target_lang_code = os.environ['TARGET_LANG']
    translated_response = translate.translate_text(Text=original_text, SourceLanguageCode="en", TargetLanguageCode=target_lang_code)
    translated_text = translated_response['TranslatedText']
     
    # Update the PHD event with the translated description
    phd_event = translated_text
     
    # Reconstruct the original event with the translated description
    reconstructed_event = event
    reconstructed_event['detail']['eventDescription'][0]['latestDescription'] = phd_event
     
    # Publish the reconstructed event to an SNS topic
    sns_topic_arn = os.environ['SNS_TOPIC_ARN']
    sns = boto3.client('sns')
    response = sns.publish(
        TopicArn=sns_topic_arn,
        Message=json.dumps(reconstructed_event)
    )
    return response

위 Lambda Source는 EventBridge를 통해 PHD메시지를 받아서 상세 이벤트 설명을 파싱하고, 이를 한국어로 번역한 후 SNS Service를 이용해 SpaceOne의 SNS Webhook을 통해 전달하는 간단한 로직입니다. 이 Lambda는 멀티 리전 이벤트도 모두 처리할 수 있으며, 사용자 언어 친화적인 메시지를 제공할수 있도록 했습니다.

위의 Source에서 SNS_TOPIC_ARN과 TARGET_LANG 부분은 Lambda에 환경 변수로 아래와 같은 형태로 설정하였습니다.

Key Value
SNS_TOPIC_ARN '{SNS ARN}'
TARGET_LANG ko



4. 메시지 가독성 향상 – AWS Translate 도입 효과

실제로 운영환경에서는 영어 기반의 이벤트 설명이 많은 혼란을 초래합니다. 특히 야간 근무자나 영어에 익숙하지 않은 엔지니어의 경우, 번역 시간이 지연되면서 대응이 늦어지는 사례가 자주 발생합니다. 이를 해결하기 위해 AWS Translate를 적용하였으며, 결과적으로 알림 수신부터 이해까지 걸리는 시간을 단축 시킬수 있었습니다.

메세지 예시
ASIS :

TOBE :

5. SpaceONE과 Slack의 연동 및 응용 가능성

SpaceONE을 도입함으로써 이벤트를 대시보드 기반으로 한눈에 파악할 수 있는 시각적 관제 환경도 제공되었습니다. 알림을 Slack으로만 보내는 것이 아니라, SpaceONE에서 조건부 알림 규칙을 적용하고, Slack 채널을 팀별로 라우팅하여 유관 팀에만 메시지를 전달하는 구조가 가능해졌습니다.

예를 들어, EC2 관련 이벤트는 인프라팀에, IAM 관련 이벤트는 보안팀에만 전달되도록 설정할 수 있어 불필요한 노이즈를 줄이고 알림 효율을 극대화할 수 있습니다.

6. 향후 고도화 계획

현 시스템은 이벤트 발생 후 즉시 알림을 보내는 구조이지만, AWS Health의 예정된 이벤트(예: ‘7일 이내 예정된 점검’)를 미리 DynamoDB에 저장하고, 하루에 한 번 정기적으로 필터링하여 Slack으로 전달하는 기능도 개발 진행중입니다. 이 기능이 완성되면 선제 대응이 가능해지고, 서비스 유지보수 시나리오를 미리 준비할 수 있어 고객 경험이 크게 개선될 것입니다.

또한 SpaceONE을 제외하고 Lambda에서 직접 Slack 또는 Microsoft Teams로 메시지를 전송하는 방식도 계획 중입니다. 이는 구성 요소를 단순화하고 Third Party 서비스 의존도를 줄여서 범용적으로 사용할수 있도록 구성하기 위해서 입니다.

 

7. 결론: 클라우드 운영자의 관점에서 본 가치

이 시스템을 도입한 이후 운영팀은 빠른 공유와 대응이 가능해졌으며, 각 구성원은 본인 역할에 맞는 이벤트만 수신하여 집중도를 높일 수 있었습니다. 클라우드 운영 효율성을 높이고자 하는 조직이라면, 본 시스템을 기반으로 자신만의 알림 체계를 구축해 보시길 추천드립니다.

 

본 글은 MegazoneCloud의 AWS Ambassador 활동으로 작성된 글입니다.