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로 대기열을 설정했을 경우 꼭 작성해야 함}