SQS
Protocol: Query (XML) and JSON 1.0 (both supported)
Endpoint: POST http://localhost:4566/
Supported Actions
| Action | Description |
|---|---|
CreateQueue |
Create a standard or FIFO queue |
DeleteQueue |
Delete a queue |
ListQueues |
List all queues |
GetQueueUrl |
Look up a queue URL by name |
GetQueueAttributes |
Get queue configuration attributes |
SetQueueAttributes |
Update queue configuration |
SendMessage |
Send a message to a queue |
SendMessageBatch |
Send up to 10 messages in one call |
ReceiveMessage |
Poll for messages |
DeleteMessage |
Acknowledge and delete a message |
DeleteMessageBatch |
Delete multiple messages at once |
ChangeMessageVisibility |
Extend or reset a message's visibility timeout |
ChangeMessageVisibilityBatch |
Change visibility for multiple messages |
PurgeQueue |
Delete all messages in a queue |
TagQueue |
Add tags to a queue |
UntagQueue |
Remove tags from a queue |
ListQueueTags |
List tags on a queue |
ListDeadLetterSourceQueues |
Find queues that use this queue as DLQ |
StartMessageMoveTask |
Start a DLQ redrive task |
ListMessageMoveTasks |
List DLQ redrive tasks |
Configuration
floci:
services:
sqs:
enabled: true
default-visibility-timeout: 30 # Seconds
max-message-size: 262144 # 256 KB
Examples
export AWS_ENDPOINT=http://localhost:4566
# Create a standard queue
aws sqs create-queue --queue-name orders --endpoint-url $AWS_ENDPOINT
# Create a FIFO queue
aws sqs create-queue \
--queue-name orders.fifo \
--attributes FifoQueue=true \
--endpoint-url $AWS_ENDPOINT
# Send a message
QUEUE_URL="$AWS_ENDPOINT/000000000000/orders"
aws sqs send-message \
--queue-url $QUEUE_URL \
--message-body '{"event":"order.placed","id":"abc123"}' \
--endpoint-url $AWS_ENDPOINT
# Receive messages
aws sqs receive-message \
--queue-url $QUEUE_URL \
--max-number-of-messages 10 \
--endpoint-url $AWS_ENDPOINT
# Delete a message (replace RECEIPT_HANDLE with the value from ReceiveMessage)
aws sqs delete-message \
--queue-url $QUEUE_URL \
--receipt-handle "RECEIPT_HANDLE" \
--endpoint-url $AWS_ENDPOINT
# Set up a dead-letter queue
DLQ_ARN=$(aws sqs get-queue-attributes \
--queue-url $AWS_ENDPOINT/000000000000/orders-dlq \
--attribute-names QueueArn \
--query Attributes.QueueArn \
--output text \
--endpoint-url $AWS_ENDPOINT)
aws sqs set-queue-attributes \
--queue-url $QUEUE_URL \
--attributes "{\"RedrivePolicy\":\"{\\\"deadLetterTargetArn\\\":\\\"$DLQ_ARN\\\",\\\"maxReceiveCount\\\":3}\"}" \
--endpoint-url $AWS_ENDPOINT