FastAPI와 AWS SNS를 연동하여 푸시 알림 서비스 개발하기

이번 기술 블로그 포스트에서는 FastAPI와 AWS SNS를 연동하여 푸시 알림 서비스를 개발하는 방법에 대해 알아보겠습니다. 이를 통해 사용자에게 실시간으로 알림을 전송하는 기능을 구현할 수 있습니다.

AWS SNS란?

AWS SNS는 Amazon Simple Notification Service의 약자로, 푸시 알림이나 SMS 등 다양한 종류의 알림을 제공하는 서비스입니다. AWS SNS를 사용하여 FastAPI 애플리케이션에 푸시 알림 서비스를 연동할 수 있습니다.

1. AWS 계정 및 SNS 설정

SNS를 사용하기 위해서는 우선 AWS 계정이 필요합니다. 계정을 만들고 로그인한 후, AWS 콘솔로 이동하여 SNS 서비스를 선택합니다. SNS 대시보드에서 “Create Topic” 버튼을 클릭하여 새로운 토픽을 생성합니다. 이 토픽은 푸시 알림을 수신하는 데 사용됩니다.

2. FastAPI 프로젝트 설정

먼저 FastAPI 프로젝트를 설정해야 합니다. 필요한 패키지를 설치하기 위해 터미널에서 다음 명령을 실행하세요:

pip install fastapi boto3

3. AWS SNS 연동하기

FastAPI 애플리케이션에서 AWS SNS를 사용하려면 boto3 라이브러리를 사용해야 합니다. 다음과 같이 boto3를 사용하여 SNS 클라이언트를 생성하세요:

import boto3

# AWS 인증 정보 설정
sns_client = boto3.client('sns', 
                          region_name='us-west-2', 
                          aws_access_key_id='YOUR_ACCESS_KEY', 
                          aws_secret_access_key='YOUR_SECRET_ACCESS_KEY')

# 토픽 ARN 가져오기
topic_arn = 'YOUR_TOPIC_ARN' # SNS 토픽의 ARN을 입력하세요

4. 푸시 알림 보내기

이제 FastAPI 애플리케이션에서 푸시 알림을 보낼 수 있습니다. 예를 들어, /send_push 엔드포인트를 만들고 다음과 같은 코드를 작성하세요:

from fastapi import FastAPI

app = FastAPI()

@app.post("/send_push")
def send_push_notification(message: str):
    sns_client.publish(TopicArn=topic_arn, Message=message)
    return {"success": True}

위 코드에서는 /send_push 엔드포인트를 POST 요청으로 호출하면 message 파라미터를 받아와 해당 메시지를 푸시 알림으로 보냅니다. 성공적으로 알림이 전송되면 {"success": true}를 반환합니다.

5. 푸시 알림 테스트

애플리케이션이 실행 중인지 확인하기 위해 터미널에서 다음 명령을 실행하세요:

uvicorn main:app --reload

FastAPI 서버가 실행된 후, API 클라이언트를 사용하여 /send_push 엔드포인트에 POST 요청을 보내세요. 예를 들어, {"message": "테스트 알림입니다"}와 같은 JSON 형식의 요청을 보낼 수 있습니다. 이제 SNS 토픽이 설정된 사용자들에게 알림이 전송되어야 합니다.

마무리

이렇게하면 FastAPI와 AWS SNS를 연동하여 푸시 알림 서비스를 개발할 수 있습니다. FastAPI의 강력한 기능과 AWS SNS의 다양한 알림 기능을 조합하여 사용자에게 실시간 알림을 제공할 수 있습니다. 추가로 성능을 향상시키고 사용하기 쉽게하는 방법에 대해서는 공식 문서를 참조하세요.

#FastAPI #AWS #SNS #푸시알림