
SQS(Simple Queue Service) 는 완전관리형 메시지 큐. 프로듀서(발행자)가 큐에 메시지를 넣고, 컨슈머(소비자)가 나중에 꺼내서 처리. 시스템 간 결합을 느슨하게 만들고, 버스트 흡수·재시도·DLQ 같은 안정장치를 제공
.fifo)ApproximateNumberOfMessages(Visible/InFlight)로 컨슈머 수 자동 조절.aws sqs create-queue \
--queue-name my-queue \
--attributes VisibilityTimeout=60,ReceiveMessageWaitTimeSeconds=20,MessageRetentionPeriod=345600
aws sqs create-queue \
--queue-name orders.fifo \
--attributes FifoQueue=true,ContentBasedDeduplication=true
# 전송 (표준 큐)
aws sqs send-message --queue-url <URL> --message-body '{"orderId":123}'
# 전송 (FIFO: 그룹 ID 필수)
aws sqs send-message --queue-url <URL_of_orders.fifo> \
--message-body '{"orderId":123}' \
--message-group-id group-1
# 수신 (최대 10건, Long Polling 20s)
aws sqs receive-message --queue-url <URL> --max-number-of-messages 10 --wait-time-seconds 20
# 삭제 (ReceiptHandle 필요)
aws sqs delete-message --queue-url <URL> --receipt-handle '<RECEIPT_HANDLE>'
aws sqs create-queue --queue-name my-dlq
DLQ_ARN=$(aws sqs get-queue-attributes --queue-url <DLQ_URL> --attribute-names QueueArn --query 'Attributes.QueueArn' --output text)
aws sqs set-queue-attributes --queue-url <URL> \
--attributes RedrivePolicy="{\"deadLetterTargetArn\":\"$DLQ_ARN\",\"maxReceiveCount\":\"5\"}"
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AllowSNSToSend",
"Effect": "Allow",
"Principal": {"Service": "sns.amazonaws.com"},
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:ap-northeast-2:111122223333:my-queue",
"Condition": {"ArnEquals": {"aws:SourceArn": "arn:aws:sns:ap-northeast-2:111122223333:my-topic"}}
}]
}
maxReceiveCount 설정, DLQ 메시지 수 모니터링.ApproximateNumberOfMessages*, AgeOfOldestMessage, 처리 지연 경보.