← all adapters

sqs-style

simulates Amazon SQS API 2012-11-05

restadapter v0.1.02 routes

verification

SDK + VMverified with aws-sdk-go-v2 v1.47.1· surface 2 · not implemented 4 · differs 5

use it

# add to stunt.yaml
services:
  sqs:
    adapter: embedded:sqs-style

# then
$ stunt up

The embedded: source extracts this adapter from the binary — no git clone, fully offline.

how to mock the Amazon SQS API locally

Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Amazon SQS API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Amazon SQS API 2012-11-05 surface — the data is fake, the behavior is real.

backing stores

queuesmessages

api surface (2)

generated from the adapter manifest — exactly what boots, nothing more

2 routes
POST/
POST/{queueName}

SDK-verified behaviors (6)

  • ✓CreateQueue/GetQueueUrl via real SigV4
  • ✓SendMessage/ReceiveMessage with ms-precision system attributes
  • ✓visibility timeout: in-flight hidden, expiry redelivers
  • ✓DeleteMessage consumes the redelivered message
  • ✓SendMessageBatch correlated results
  • ✓missing-queue typed error surface

VM-verified behaviors (20)

  • ✓signed calls pass on both transports with the real MD5
  • ✓missing and garbage auth are 403
  • ✓tampered signatures and wrong or unknown keys are 403
  • ✓a stale x-amz-date is RequestTimeTooSkewed; a fresh signature passes
  • ✓a delayed send is not receivable until the delay lapses
  • ✓MaxNumberOfMessages bounds are enforced
  • ✓receive hides the message until the timeout lapses, counted NotVisible
  • ✓redelivery mints a fresh receipt handle and bumps the receive count
  • ✓ChangeMessageVisibility extends the in-flight window
  • ✓delete removes the message; stale handles are ReceiptHandleIsInvalid
  • ✓one bad entry fails alone; the rest of the batch still sends
  • ✓delivered entries round-trip their message attributes
  • ✓oversize and duplicate-id batches are rejected
  • ✓purge empties the queue immediately over the queue-URL transport
  • ✓a second purge inside 60s is 403, then works again after the window
  • ✓create, GetQueueUrl, and prefix-filtered ListQueues round-trip
  • ✓identical re-create is idempotent; conflicting attributes are QueueAlreadyExists
  • ✓SetQueueAttributes persists; unknown names are InvalidAttributeName
  • ✓DeleteQueue tears the queue down for its messages too
  • ✓the throttled profile alternates empty receives deterministically

Not implemented (4)

  • No ListQueues MaxResults/NextToken paging; no AttributeNames prefix wildcards (.*)
  • No AddPermission/RemovePermission, Tag/Untag/ListQueueTags, or ListDeadLetterSourceQueues
  • No presigned URL (query-parameter) auth; SigV4 Authorization header only
  • FIFO queues allowed by name only; no MessageGroupId or deduplication semantics

Differs from the real API (5)

  • QueueUrl omits the 12-digit account id; http://<host>/<queueName> instead of the AWS path
  • No long polling: WaitTimeSeconds is validated but never blocks; receive returns at once
  • MD5OfMessageAttributes omitted (compound encoding not reproduced), only body MD5
  • PurgeQueue is immediate, not async; the one-purge-per-60s rule is still enforced
  • Message ids and receipt handles are synthetic deterministic strings, not real AWS ids
want more of the Amazon SQS API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.