← all adapters

dynamodb-style

simulates Amazon DynamoDB API 2012-08-10

restadapter v0.1.01 routes

verification

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

use it

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

# then
$ stunt up

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

how to mock the Amazon DynamoDB API locally

Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Amazon DynamoDB 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 DynamoDB API 2012-08-10 surface — the data is fake, the behavior is real.

backing stores

tablesitems

api surface (1)

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

1 routes
POST/

SDK-verified behaviors (8)

  • ✓CreateTable via real SigV4
  • ✓typed item Put/Get round-trip (S/N/BOOL/SS)
  • ✓UpdateItem SET/ADD with exact decimal arithmetic
  • ✓ConditionExpression → ConditionalCheckFailedException
  • ✓Query numeric sort-key ordering (1,2,10)
  • ✓Query BETWEEN + ScanIndexForward=false
  • ✓Scan with FilterExpression
  • ✓typed ResourceNotFoundException surface

VM-verified behaviors (22)

  • ✓an unsigned request is 403; a real SigV4 signature passes
  • ✓tampered signatures, wrong secrets, and clock skew are all 403
  • ✓CreateTable returns ACTIVE; duplicate and bad-schema creates throw the real exceptions
  • ✓Describe/List/Delete round out the lifecycle with table paging
  • ✓typed values round-trip verbatim through PutItem/GetItem
  • ✓projection, misses, and malformed keys take the documented paths
  • ✓SET upserts, ADD does exact-decimal math, REMOVE drops with UPDATED_OLD
  • ✓non-numeric ADD and bogus ReturnValues are ValidationExceptions
  • ✓numeric sort keys order numerically (10 after 9)
  • ✓BETWEEN, >=, descending, and begins_with shape the key range
  • ✓Limit + ExclusiveStartKey pages queries; bad conditions are rejected
  • ✓Scan returns the whole table and filters by expression
  • ✓Select COUNT, pagination, and error paths round out Scan
  • ✓attribute_not_exists guards writes; failed checks return the old item
  • ✓conditional deletes enforce the condition; consumed capacity echoes
  • ✓batch writes and gets round-trip with empty Unprocessed maps
  • ✓oversized, unknown-table, and invalid batches are rejected atomically
  • ✓unsupported constructs fail with named ValidationExceptions
  • ✓a leading "." answers ValidationException instead of wedging the tokenizer
  • ✓"|" in key values cannot collide two composite keys
  • ✓set members dedupe by string and numeric value
  • ✓"-0" and "0" name the same stored item

Not implemented (8)

  • No secondary indexes: GSI/LSI creation and index-targeted queries
  • No transactions: TransactGetItems, TransactWriteItems
  • No PartiQL: ExecuteStatement, BatchExecuteStatement
  • No TTL: DescribeTimeToLive, UpdateTimeToLive
  • No backup or restore: CreateBackup, RestoreTableFromBackup
  • No UpdateTable, TagResource/UntagResource/ListTags, or DescribeLimits
  • No PITR or import/export: ExportTableToPointInTime, ImportTable
  • No global tables (CreateGlobalTable, ListGlobalTables)

Differs from the real API (5)

  • expression subset: OR/NOT/parens/IN/size()/doc paths rejected as ValidationException
  • tables are ACTIVE immediately and DeleteTable is synchronous; no CREATING/DELETING
  • UnprocessedKeys/UnprocessedItems always empty; no throttling, ConsumedCapacity fixed at 1
  • Query/Scan Limit caps returned post-filter items; real caps items evaluated
  • UpdateItem REMOVE on a key attribute silently no-ops instead of erroring
want more of the Amazon DynamoDB 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.