DynamoDB

Tables, items, transactions, PartiQL, backups, global tables, streams, TTL.

fakecloud implements 57 of 57 DynamoDB operations at 100% Smithy conformance.

Supported features

  • Tables — CRUD, attributes, indexes (GSI, LSI), billing modes, tags
  • Items — GetItem, PutItem, UpdateItem, DeleteItem, BatchGetItem, BatchWriteItem
  • Transactions — TransactGetItems, TransactWriteItems with conditional checks
  • Query and Scan — full expression support (key conditions, filter expressions)
  • PartiQL — ExecuteStatement, BatchExecuteStatement, ExecuteTransaction
  • Update expressions — SET, REMOVE, ADD, DELETE with function support (size, attribute_exists, begins_with, contains, attribute_type)
  • Condition expressions — full operator support with correct type coercion
  • Global tables — replica management, replica status reporting
  • Backups — CreateBackup, DescribeBackup, RestoreTableFromBackup
  • Streams — shard iterators, record retrieval, delivery to Lambda/Kinesis
  • TTL — expire items via /_fakecloud/dynamodb/ttl-processor/tick
  • Exports and imports — S3 exports (recorded), S3 imports (recorded)
  • ConsumedCapacity + ItemCollectionMetrics — every data-plane op (GetItem, PutItem, UpdateItem, DeleteItem, Query, Scan, BatchGetItem, BatchWriteItem, TransactGetItems, TransactWriteItems, PartiQL variants) returns ConsumedCapacity when the caller requests it via ReturnConsumedCapacity = TOTAL / INDEXES. Capacity units are synthesized from the serialized item byte size using AWS's documented 4 KB read / 1 KB write rounding, broken out per table + per index. ItemCollectionMetrics is emitted on writes touching tables that have a local secondary index, with SizeEstimateRangeGB rounded to the AWS-documented [lower, upper] shape
  • TableName accepts ARNs — every operation that takes a TableName parameter also accepts the full arn:aws:dynamodb:<region>:<account>:table/<name> form, and resolves it back to the local table. The same applies to global secondary index identifiers when an ARN form is supplied. Matches the real AWS API change that landed in 2024 so cross-region / cross-account SDK call patterns work without rewriting test fixtures

Protocol

JSON protocol. X-Amz-Target header, JSON body, JSON responses.

Introspection

  • POST /_fakecloud/dynamodb/ttl-processor/tick — expire items whose TTL attribute is in the past

Cross-service delivery

  • DynamoDB Streams -> Lambda — Event source mapping polls and invokes
  • DynamoDB -> Kinesis — Table changes stream to Kinesis Data Streams

Source