[파이썬] AWS Lambda와 SNS를 활용한 이벤트 기반 알림 시스템 구축

이벤트 기반 알림 시스템은 여러분이 개발 중인 어플리케이션에서 발생하는 이벤트에 대한 알림을 사용자에게 전달하는 기능입니다. 예를 들어, 사용자 등록, 주문 완료, 비밀번호 재설정 등의 이벤트가 발생할 때, 이벤트를 실시간으로 알려주는 시스템을 구축할 수 있습니다.

이 블로그 포스트에서는 AWS Lambda와 SNS를 사용하여 이벤트 기반 알림 시스템을 구축하는 방법을 알아보겠습니다. Python을 이용하여 간단한 예제를 작성해 보겠습니다.

단계 1: AWS Lambda 함수 생성하기

처음으로 해야 할 일은 AWS Lambda 함수를 생성하는 것입니다. Lambda 함수는 이벤트를 처리하고 알림을 보내는 역할을 합니다. AWS 콘솔에 로그인하여 Lambda 서비스 페이지로 이동한 다음, 다음 단계를 따르세요:

  1. “함수 만들기”를 클릭합니다.
  2. “새 함수 생성”을 선택합니다.
  3. “이벤트 알림 함수”라는 이름을 입력하고, “Python”을 런타임으로 선택합니다.
  4. “웹 작성기”를 선택한 다음, 아래의 Python 코드를 붙여넣습니다.
import json
import boto3

def lambda_handler(event, context):
    sns_message = {
        'default': json.dumps(event),
        'email': json.dumps({'event_type': event['event_type'], 'message': event['message']}),
        'sms': json.dumps({'event_type': event['event_type'], 'message': event['message']}),
    }

    sns = boto3.client('sns')
    sns.publish(
        TopicArn='arn:aws:sns:us-west-2:123456789012:EventNotifications',
        Message=json.dumps(sns_message),
        MessageStructure='json'
    )
  1. 코드가 붙여진 후, “함수 생성”을 클릭하여 함수를 생성합니다.

단계 2: SNS 토픽 생성하기

이제 알림을 받을 사용자에게 알림을 보낼 수 있는 SNS 토픽을 생성해야 합니다. AWS 콘솔에서 SNS 서비스 페이지로 이동한 다음, 다음 단계를 따르세요:

  1. “새 토픽 생성”을 클릭합니다.
  2. “EventNotifications”이라는 이름을 입력하고, 토픽을 생성합니다.
  3. 토픽 생성 후, 토픽 아이디 (Topic ARN)를 복사해 둡니다.

단계 3: Lambda 함수에 SNS 토픽 ARN 추가하기

이제 Lambda 함수에 SNS 토픽의 ARN (Amazon Resource Name)을 추가해야 합니다. AWS Lambda 서비스 페이지로 돌아가서 다음 단계를 따르세요:

  1. 방금 생성한 Lambda 함수를 클릭하여 함수의 상세 정보 페이지로 이동합니다.
  2. “트리거 추가”를 클릭합니다.
  3. “SNS”를 선택하고, “EventNotifications” 토픽의 ARN을 붙여넣습니다.
  4. “추가”를 클릭하여 트리거를 추가합니다.

단계 4: 이벤트 발생 시 알림 보내기

이제 사용자 등록, 주문 완료 등의 이벤트가 발생할 때 Lambda 함수를 호출하여 알림을 보낼 수 있습니다. 다음 예제 코드는 이벤트 발생 시 Lambda 함수를 호출하는 코드입니다.

import boto3

def send_event_notification(event_type, message):
    lambda_client = boto3.client('lambda')
    lambda_client.invoke(
        FunctionName='이벤트 알림 함수',
        InvocationType='Event',
        Payload=json.dumps({'event_type': event_type, 'message': message})
    )

# 사용자 등록 이벤트 발생 시 알림 보내기
send_event_notification('사용자 등록', '새로운 사용자가 등록되었습니다.')

# 주문 완료 이벤트 발생 시 알림 보내기
send_event_notification('주문 완료', '주문이 정상적으로 완료되었습니다.')

실제로 사용자 등록 이벤트 또는 주문 완료 이벤트가 발생할 때마다 해당 함수를 호출하여 알림이 전송될 것입니다.

결론

이번 블로그 포스트에서는 AWS Lambda와 SNS를 활용하여 이벤트 기반 알림 시스템을 구축하는 방법을 살펴보았습니다. 이를 통해 사용자에게 실시간으로 알림을 제공하는 기능을 구현할 수 있습니다. 이벤트에 따라 알림을 사용자에게 전송하기 위해 Lambda 함수와 SNS 토픽을 효과적으로 연결하여 활용해 보세요.