AWS Lambda와 SQS(Simple Queue Service)는 서버리스 아키텍처를 구축하기 위한 뛰어난 도구들입니다. 이 블로그 포스트에서는 Python을 사용하여 AWS Lambda와 SQS를 함께 사용하여 메시지 큐를 구축하는 방법을 살펴보겠습니다.
1. AWS SQS 큐 생성하기
먼저, AWS Management Console에 로그인하여 SQS 서비스로 이동합니다. 거기서 큐를 생성하기 위해 아래 단계를 따릅니다:
- Create Queue 버튼을 클릭합니다.
- 이름과 속성을 설정한 후, 큐를 생성합니다. 예를 들어,
my-message-queue
라는 이름을 입력할 수 있습니다. - 나중에 사용하기 위해 설정 값들을 메모해둡니다.
2. AWS Lambda 함수 생성하기
이제, AWS Management Console에서 Lambda 서비스로 이동한 후 아래 단계를 따릅니다:
- Create Function 버튼을 클릭합니다.
- Author from scratch를 선택하고, 함수의 이름을 입력합니다.
- Runtime으로 Python 3.9을 선택합니다.
- Permissions 섹션 아래에서 기본 역할을 선택합니다.
- Create function 버튼을 클릭하여 함수를 생성합니다.
3. Lambda 함수에 SQS 이벤트 트리거 연결하기
이제, Lambda 함수에 SQS 이벤트 트리거를 연결해야 합니다. 이를 수행하기 위해 아래 단계를 따릅니다:
- Lambda 함수의 Designer 섹션으로 이동합니다.
- Add Trigger 버튼을 클릭합니다.
- 트리거 목록에서 SQS를 선택합니다.
- 이전에 생성한 SQS 큐를 선택합니다.
- 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의 강력한 서비스들을 활용하여 개발 및 운영을 더욱 효율적으로 진행할 수 있습니다.
참고 자료: