이전 게시글에서 특정 리전에서 인스턴스가 생성 됐을 경우 Amazon EventBridge에서 이벤트 감지 -> Amazon SNS 에서 구독 중인 대상으로 이벤트 알림 발송 하는 방법에 대해 알아봤습니다.
https://moonganzi.tistory.com/42
이번에는 수신된 정형 되지 않은 데이터를 보기 좋게 수정하여 이메일로 수신할 수 있게 해보겠습니다.
이전 아키텍처 중간에 Lambda가 추가되어, 이벤트 발생 시 Lambda에서 이벤트 데이터를 수신하고 원하는 값을 추출하여 SNS로 전송해줍니다.
위와 같은 순서의 동작을 위해선 앞서 설정한 내용에 대한 일부 수정이 필요합니다.
1. Lambda 코드 생성
- 아래와 같이 EventBridge 이벤트에서 원하는 값만을 추출하는 코드를 작성합니다.
코드 작성 시 기존 사용하던 SNS Arn을 입력합니다.
import json
import boto3
def lambda_handler(event, context):
sns = boto3.client('sns')
# EventBridge 이벤트에서 추출한 instanceType 값을 가져옵니다.
message = event['detail']
instance_type = message['requestParameters']['instanceType']
source_ip = message['sourceIPAddress']
arn = message['userIdentity']['arn']
region = message['awsRegion']
# 이메일 메시지를 생성합니다.
email_subject = f'{region}에 인스턴스가 생성됐습니다.'
email_message = f'{region}에 인스턴스가 생성됐습니다. 올바른 사용자가 생성 했는지 확인해주세요.\n\n' \
f'ARN : {arn}\n' \
f'Instance Type : {instance_type}\n' \
f'Source IP : {source_ip}\n'
# 이메일 메시지를 SNS 주제를 통해 전송합니다.
sns.publish(
TopicArn='arn:aws:sns:us-east-1:계정Account:email-alarm',
Subject=email_subject,
Message=email_message
)
2, EventBridge 대상 편집
- Amazon EventBridge 콘솔 접속 후 아래와 같이 이전에 생성한 이벤트 규칙 선택 -> 편집을 클릭합니다.
- 대상을 1단계에서 생성한 Lambda 함수로 변경 합니다.
위의 간단한 단계들을 거치면 완료이며, 아래는 결과 예시입니다.
Lambda 코드 수정을 통해 원하는 값들을 더하거나 뺄 수 있습니다.
사실 위의 작업은 EventBridge의 이벤트 값 추출을 위한 Lambda 코드만 작성이 문제인데, 요즘 같은 좋은 세상에선 ChatGPT와 같은 AI 서비스를 통해 간단한 코드 작성을 대신 해주기에 해볼 수 있었습니다.
'AWS' 카테고리의 다른 글
AWS Management Console Private Access 살펴보기 (0) | 2023.05.19 |
---|---|
AWS ALB에 고정 IP 할당 (NLB + ALB) (0) | 2023.05.16 |
AWS Private Link 써보기 (0) | 2023.05.11 |
AWS Notification 소개 및 사용해보기 (0) | 2023.05.11 |
Amazon EventBridge + SNS 를 활용한 계정 침해 모니터링 (2) | 2023.02.13 |