Amazon SQS
Create queues, send and receive messages, then delete messages and queues.
Plan: Free23 of 23 operations implemented3Known differences
Visibility changes, long polling, per-message delays and content-based FIFO deduplication did not behave like AWS in testing of Vera 1.2.0 preview.
Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.
Connect
Section titled “Connect”This Free service needs no license key. Start Vera as in Get started, then run this in a terminal of its own, from an empty scratch directory. It gives the official AWS CLI dummy credentials and a config file of its own, so no AWS account is needed and your own AWS profile isn't touched.
export VERA_ENDPOINT="http://localhost:5003"export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=testexport AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1export AWS_SHARED_CREDENTIALS_FILE=/dev/nullexport AWS_EC2_METADATA_DISABLED=trueexport AWS_PAGER="" AWS_CLI_AUTO_PROMPT=offunset AWS_PROFILE AWS_DEFAULT_PROFILEunset AWS_SESSION_TOKEN AWS_SECURITY_TOKENunset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAMEunset AWS_CONTAINER_CREDENTIALS_FULL_URIunset AWS_CONTAINER_CREDENTIALS_RELATIVE_URIcat > vera-aws-config <<'EOF'[default]region = us-east-1output = jsoncli_binary_format = base64s3 = addressing_style = pathEOFexport AWS_CONFIG_FILE="$PWD/vera-aws-config"When you've finished every example in this terminal, close it and delete vera-aws-config, not before.
Use the AWS CLI’s sqs commands. The emulator serves the 2012-11-05 API over the AWS JSON protocol. The example also needs python3, to copy the receipt handle out of a response, and tee.
A queue URL looks like AWS’s, such as https://sqs.us-east-1.amazonaws.com/123456789012/vera-docs-queue. Pass it as --queue-url, but keep --endpoint-url on every command: the URL names the queue, and requests still go to VERA_ENDPOINT.
Example
Section titled “Example”Create a queue, send example.net to it, then receive the message. The receive’s output is shown and also saved to received.json.
QUEUE_URL=$(aws --endpoint-url "$VERA_ENDPOINT" sqs create-queue \ --queue-name vera-docs-queue \ --attributes '{"VisibilityTimeout": "30", "MessageRetentionPeriod": "60"}' \ --query QueueUrl --output text)aws --endpoint-url "$VERA_ENDPOINT" sqs send-message \ --queue-url "$QUEUE_URL" --message-body example.netaws --endpoint-url "$VERA_ENDPOINT" sqs receive-message \ --queue-url "$QUEUE_URL" --wait-time-seconds 0 --max-number-of-messages 1 | tee received.jsonThe receive returns the message with its body, example.net. These are selected fields; the MessageId and ReceiptHandle differ on every run.
{ "Messages": [ { "MessageId": "f011df34-abc1-4597-a7b9-5c1d9ef2dd2d", "ReceiptHandle": "recpt-e942e8cb804a4105b", "Body": "example.net" } ]}To clean up, delete the message with the receipt handle saved in received.json, then delete the queue and the file. The first line copies the ReceiptHandle out of the file. Both deletes print nothing.
RECEIPT_HANDLE=$(python3 -c 'import json; print(json.load(open("received.json"))["Messages"][0]["ReceiptHandle"])')aws --endpoint-url "$VERA_ENDPOINT" sqs delete-message \ --queue-url "$QUEUE_URL" --receipt-handle "$RECEIPT_HANDLE"aws --endpoint-url "$VERA_ENDPOINT" sqs delete-queue --queue-url "$QUEUE_URL"rm received.jsonSupported features
Section titled “Supported features”- Queues, created with attributes such as
VisibilityTimeoutandMessageRetentionPeriod, and deleted.GetQueueAttributesreturns a queue’sQueueArn. - Send, receive and delete: a received message carries its body and a receipt handle, and deleting with that handle removes it.
- Batches and purging: in a supplemental test, both messages of a two-message batch send were received, and a batch delete removed them by their receipt handles.
PurgeQueuealso succeeded. - Messages from other services: SNS and EventBridge delivered to local queues.
- Also served, not yet tested: batch visibility changes, dead-letter source queues, message move tasks, tags and queue permissions.
Limitations
Section titled “Limitations”The main limits are below. A few more apply to every service, and the API coverage notes cover smaller differences.
- Visibility changes don’t make messages visible. In Vera 1.2.0 preview,
ChangeMessageVisibilitywith a timeout of0succeeded, but the message wasn’t returned by the next receive. Its receipt handle still deleted it. - No long polling. In Vera 1.2.0 preview, an empty receive with
WaitTimeSecondsset to2returned in about 0.23 seconds. No long-poll wait was observed. - Per-message delays are ignored. In Vera 1.2.0 preview, a message sent to a standard queue with
DelaySecondsset to2was received at once, before the delay had passed. - Content-based deduplication didn’t deduplicate. In Vera 1.2.0 preview, a FIFO queue accepted
FifoQueueandContentBasedDeduplicationset totrue, but two messages with the same body in the same message group were both returned. Don’t rely on exactly-once delivery, and FIFO ordering wasn’t confirmed either. - Not yet verified: retention expiry, quotas, dead-letter moves and concurrent consumers.
AWS describes the intended delay and deduplication behavior in its SendMessage reference.
API coverage
Section titled “API coverage”Every operation in AWS's published 2012-11-05 API (SDK model, botocore 1.43.105), and whether the emulator implements it. Availability combines the earlier implementation inventory with the dated observations below; checking a page's example does not verify every operation. Each note names its evidence first; an observation given without a build or date comes from earlier testing, on 3 November 2026. What the statuses mean
No operation matches .
Try part of a name, such as AddPermission, or .
| Operation | Status | Notes |
|---|---|---|
| Add | Implemented | |
| Cancel | Implemented | |
| Change | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — As in earlier testing, a timeout of 0 succeeds, but the message isn't returned by the next receive. Its receipt handle still deletes it. |
| Change | Implemented | |
| Create | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Created a standard queue with VisibilityTimeout and MessageRetentionPeriod, returning an AWS-style queue URL. A FIFO queue with FifoQueue and ContentBasedDeduplication was accepted too, which doesn't establish FIFO semantics: see SendMessage. |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Deleted a received message by its receipt handle, printing nothing. |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Deleted both messages of a two-message batch by their receipt handles. |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Deleted the example's queue, printing nothing. |
| Get | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Returned the queue's QueueArn. |
| Get | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| List | Implemented | |
| Purge | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — A purge request succeeded in a supplemental test. |
| Receive | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — Returned the example's message with its body and receipt handle. A message made visible again with ChangeMessageVisibility timeout 0 wasn't returned by the next receive. An empty receive with WaitTimeSeconds 2 returned in about 0.23 seconds: no long-poll wait was observed, as earlier source inspection suggested. |
| Remove | Implemented | |
| Send | Known difference | Local observation: Vera 1.2.0 preview, 5 November 2026 — A standard-queue message sent with DelaySeconds 2 was received at once, before the delay had passed. On a FIFO queue with ContentBasedDeduplication enabled, two messages with the same body in the same message group were both received, so content-based deduplication didn't apply. |
| Send | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — Both messages of a two-message batch were sent and received. |
| Set | Implemented | |
| Start | Implemented | |
| Tag | Implemented | |
| Untag | Implemented |