SQS란 여러 호출을 하나의 큐에 담아서 다른 곳에 보낼 수 있게 해주는 서비스이다. SQS는 전송, 수신, 삭제 3가지 기능을 제공한다.
SQS에는 세 가지 주체가 있다.
아래와 같이 여러 클라이언트가 호출을 할 때 하나씩 작업을 처리하기 보단, SQS의 queue에서 데이터를 한 번에 모으고 수신자에서 처리하는 것이 훨씬 효율적이다.
import json
import os
import boto3
import logging
from botocore.exceptions import ClientError
def lambda_handler(event, context):
_params = {'message': "hello"}
msg_body = json.dumps(_params)
msg = send_sqs_message(os.environ['SQS_QUEUE'], msg_body)
return msg
def send_sqs_message(sqs_queue_url, msg_body):
sqs_client = boto3.client('sqs')
try:
msg = sqs_client.send_message(QueueUrl=sqs_queue_url,
MessageBody=msg_body,
MessageGroupId="ikaria")
except ClientError as e:
logging.error(e)
return None
return msg
- boto3: AWS Service와 연결할 수 있게 해주는 라이브러리
- sqs_client = boto3.client('sqs') :
>> boto3를 사용해서 sqs 서비스에 접근할 수 있는 client 객체 생성
- msg = sqs_client.send_message(QueueUrl=sqs_queue_url,
MessageBody=msg_body,
MessageGroupId="ikaria")
>> QueueUrl = {SQS 엔드포인트 작성}
MessageBody = {보낼 메시지}
MessageGroupId = {FIFO로 대기열을 설정했을 경우 꼭 작성해야 함}