FastAPI와 AWS SQS를 연동하여 메시지 큐 서비스 구현하기
서론
메시지 큐는 많은 양의 메시지를 비동기적으로 처리하고 분산시킬 수 있는 효과적인 방법입니다. 이번 글에서는 FastAPI와 AWS SQS를 이용하여 메시지 큐 서비스를 구현하는 방법에 대해 알아보겠습니다. FastAPI는 빠르고 간편한 웹 프레임워크로, SQS는 안정적인 메시지 큐 서비스로 유명합니다.
사전 요구사항
- FastAPI 설치 및 설정
- AWS 계정 및 SQS 리소스
FastAPI 프로젝트 설정
-
FastAPI를 설치합니다:
pip install fastapi
-
FastAPI 애플리케이션을 생성합니다:
from fastapi import FastAPI app = FastAPI()
-
메시지 큐에 작업을 전송하는 엔드포인트를 생성합니다:
import boto3 sqs = boto3.client('sqs', region_name='us-west-2') queue_url = 'https://sqs.us-west-2.amazonaws.com/123456789/my-queue' @app.post('/enqueue') async def enqueue_message(payload: dict): response = sqs.send_message( QueueUrl=queue_url, MessageBody=json.dumps(payload) ) return response
-
FastAPI 서버를 실행합니다:
uvicorn main:app --reload
AWS SQS 설정
- AWS Management Console에 로그인하고, SQS를 선택합니다.
- “Create new queue” 버튼을 클릭하여 큐를 생성합니다.
- 큐의 URL 및 이름을 확인하고, Step 3에서 해당 정보를 FastAPI 애플리케이션에 적용합니다.
큐에서 메시지 처리하기
-
AWS Lambda 함수를 생성하고, 다음과 같이 설정합니다:
- 트리거: SQS
- SQS 큐 설정: 생성한 큐 선택
-
Lambda 함수 코드를 작성하고, 메시지를 처리하는 로직을 구현합니다. 예를 들어 다음과 같이 메시지를 처리하는 코드를 작성할 수 있습니다:
import json def lambda_handler(event, context): for record in event['Records']: message_body = json.loads(record['body']) # 메시지 처리 로직
마무리
FastAPI와 AWS SQS를 연동하여 메시지 큐 서비스를 구현하는 방법에 대해 알아보았습니다. FastAPI의 간편한 API 작성 방식과 SQS의 확장성과 안정성을 통해 메시지 큐 서비스를 효과적으로 구현할 수 있습니다. 이를 통해 복잡한 작업을 비동기적으로 처리하고 분산시킬 수 있는 기능을 구현할 수 있습니다.
#FastAPI #AWS #SQS