[파이썬] AWS Lambda와 SQS를 통한 메시지 큐 구축

AWS Lambda와 SQS(Simple Queue Service)는 서버리스 아키텍처를 구축하기 위한 뛰어난 도구들입니다. 이 블로그 포스트에서는 Python을 사용하여 AWS Lambda와 SQS를 함께 사용하여 메시지 큐를 구축하는 방법을 살펴보겠습니다.

1. AWS SQS 큐 생성하기

먼저, AWS Management Console에 로그인하여 SQS 서비스로 이동합니다. 거기서 큐를 생성하기 위해 아래 단계를 따릅니다:

  1. Create Queue 버튼을 클릭합니다.
  2. 이름과 속성을 설정한 후, 큐를 생성합니다. 예를 들어, my-message-queue라는 이름을 입력할 수 있습니다.
  3. 나중에 사용하기 위해 설정 값들을 메모해둡니다.

2. AWS Lambda 함수 생성하기

이제, AWS Management Console에서 Lambda 서비스로 이동한 후 아래 단계를 따릅니다:

  1. Create Function 버튼을 클릭합니다.
  2. Author from scratch를 선택하고, 함수의 이름을 입력합니다.
  3. Runtime으로 Python 3.9을 선택합니다.
  4. Permissions 섹션 아래에서 기본 역할을 선택합니다.
  5. Create function 버튼을 클릭하여 함수를 생성합니다.

3. Lambda 함수에 SQS 이벤트 트리거 연결하기

이제, Lambda 함수에 SQS 이벤트 트리거를 연결해야 합니다. 이를 수행하기 위해 아래 단계를 따릅니다:

  1. Lambda 함수의 Designer 섹션으로 이동합니다.
  2. Add Trigger 버튼을 클릭합니다.
  3. 트리거 목록에서 SQS를 선택합니다.
  4. 이전에 생성한 SQS 큐를 선택합니다.
  5. Add 버튼을 클릭하여 트리거를 연결합니다.

4. Lambda 함수 코드 작성하기

이제, Lambda 함수를 편집하여 메시지 큐로부터 메시지를 수신하고 처리하는 코드를 작성해보겠습니다. 아래는 예시 코드입니다:

import boto3

def lambda_handler(event, context):
    # SQS 클라이언트를 생성합니다.
    sqs = boto3.client('sqs')

    # SQS 큐 URL을 가져옵니다.
    queue_url = 'YOUR_SQS_QUEUE_URL'

    # SQS 큐에서 메시지를 수신합니다.
    response = sqs.receive_message(
        QueueUrl=queue_url,
        MaxNumberOfMessages=1
    )

    # 메시지 처리 로직을 구현합니다.
    if 'Messages' in response:
        for message in response['Messages']:
            # 메시지 내용을 출력합니다.
            print('Received message: {}'.format(message['Body']))

            # SQS 큐에서 메시지를 삭제합니다.
            sqs.delete_message(
                QueueUrl=queue_url,
                ReceiptHandle=message['ReceiptHandle']
            )
    else:
        print('No messages in the queue')

5. Lambda 함수 테스트

Lambda 함수를 테스트하기 위해 AWS Management Console에서 Test 이벤트를 생성하고 Lambda 함수를 실행할 수 있습니다. 이를 통해 SQS 큐에 새 메시지를 전송하고 함수가 이를 수신하고 처리하는지 확인할 수 있습니다.

6. 메시지 큐 사용 시나리오

이제, AWS Lambda와 SQS로 메시지 큐를 구축했습니다. 메시지 큐는 다양한 시나리오에서 유용하게 사용될 수 있습니다. 예를 들어, 주문이나 이벤트 기반 애플리케이션의 비동기 처리, 대량 데이터 전송 등에 사용할 수 있습니다.

마무리

이 블로그 포스트에서는 AWS Lambda와 SQS를 사용하여 메시지 큐를 구축하는 방법을 살펴보았습니다. 이를 통해 서버리스 아키텍처를 구축하고 비동기적으로 다양한 작업을 처리할 수 있게 되었습니다. AWS의 강력한 서비스들을 활용하여 개발 및 운영을 더욱 효율적으로 진행할 수 있습니다.

참고 자료: