FastAPI와 AWS SQS를 연동하여 메시지 큐 서비스 구현하기

서론

메시지 큐는 많은 양의 메시지를 비동기적으로 처리하고 분산시킬 수 있는 효과적인 방법입니다. 이번 글에서는 FastAPI와 AWS SQS를 이용하여 메시지 큐 서비스를 구현하는 방법에 대해 알아보겠습니다. FastAPI는 빠르고 간편한 웹 프레임워크로, SQS는 안정적인 메시지 큐 서비스로 유명합니다.

사전 요구사항

FastAPI 프로젝트 설정

  1. FastAPI를 설치합니다:

    pip install fastapi
    
  2. FastAPI 애플리케이션을 생성합니다:

    from fastapi import FastAPI
       
    app = FastAPI()
    
  3. 메시지 큐에 작업을 전송하는 엔드포인트를 생성합니다:

    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
    
  4. FastAPI 서버를 실행합니다:

    uvicorn main:app --reload
    

AWS SQS 설정

  1. AWS Management Console에 로그인하고, SQS를 선택합니다.
  2. “Create new queue” 버튼을 클릭하여 큐를 생성합니다.
  3. 큐의 URL 및 이름을 확인하고, Step 3에서 해당 정보를 FastAPI 애플리케이션에 적용합니다.

큐에서 메시지 처리하기

  1. AWS Lambda 함수를 생성하고, 다음과 같이 설정합니다:

    • 트리거: SQS
    • SQS 큐 설정: 생성한 큐 선택
  2. 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