DynamoDB operations
Every DynamoDB operation Overcast declares — 21 of 28 implemented — with status, behaviour notes and a link to the AWS API reference for each.
21 of 28 listed operations are implemented. Back to DynamoDB.
Summary
| Category | ✅ Supported | ❌ Unsupported |
|---|---|---|
| Table management | 7 | 1 |
| Item operations | 6 | |
| Query & scan | 2 | |
| Transactions | 2 | |
| Tags | 3 | |
| Streams interoperability | 1 | |
| Global tables | 6 |
Endpoints
Table management
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
CreateTable | ✅ Supported | Includes GSI/LSI definitions; an omitted BillingMode defaults to PROVISIONED, which requires ProvisionedThroughput on the table and on every GSI, while PAY_PER_REQUEST rejects it | docs |
DeleteTable | ✅ Supported | docs | |
DescribeTable | ✅ Supported | docs | |
ListTables | ✅ Supported | Region-scoped — lists only tables in the request’s region; Limit (default/max 100) and ExclusiveStartTableName honored; LastEvaluatedTableName echoed when more tables remain | docs |
UpdateTable | ✅ Supported | BillingMode, ProvisionedThroughput, GSI create/delete/update-throughput, AttributeDefinitions, StreamSpecification | docs |
DescribeTimeToLive | ✅ Supported | Reports all four TimeToLiveStatus values — a change is ENABLING/DISABLING until it settles; AttributeName is omitted only once the table has settled on DISABLED | docs |
UpdateTimeToLive | ✅ Supported | TTL-based item expiry, with the sweeper deleting expired items hourly once the status reaches ENABLED; the change is asynchronous as on AWS, and both members of TimeToLiveSpecification are required (AttributeName 1..255). A second UpdateTimeToLive inside the transition window, re-enabling an ENABLED table (renaming the attribute included) and disabling a DISABLED one are each a ValidationException, so the attribute name only changes by disabling first. Overcast settles in 30 seconds where AWS takes up to an hour | docs |
RestoreTableFromBackup | ❌ Unsupported | docs |
Item operations
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
PutItem | ✅ Supported | Includes ConditionExpression, ReturnValues (ALL_OLD); key attributes must be present and carry their declared AttributeDefinitions type, while non-key attributes stay schemaless; records AWS/DynamoDB CloudWatch metrics SuccessfulRequestLatency, ConsumedWriteCapacityUnits, UserErrors/SystemErrors; a reserved word used as a bare attribute name in an expression is rejected, as AWS does — reach it through ExpressionAttributeNames | docs |
GetItem | ✅ Supported | Includes ProjectionExpression; a Key must name exactly the key schema’s attributes with their declared types; records SuccessfulRequestLatency, ConsumedReadCapacityUnits, UserErrors/SystemErrors; a reserved word used as a bare attribute name in an expression is rejected, as AWS does — reach it through ExpressionAttributeNames | docs |
UpdateItem | ✅ Supported | SET/REMOVE/ADD/DELETE clauses; all ReturnValues variants; upsert; a Key must name exactly the key schema’s attributes with their declared types; records SuccessfulRequestLatency, ConsumedWriteCapacityUnits, UserErrors/SystemErrors; a reserved word used as a bare attribute name in an expression is rejected, as AWS does — reach it through ExpressionAttributeNames | docs |
DeleteItem | ✅ Supported | ConditionExpression, ReturnValues (ALL_OLD); a Key must name exactly the key schema’s attributes with their declared types; records SuccessfulRequestLatency, ConsumedWriteCapacityUnits, UserErrors/SystemErrors; a reserved word used as a bare attribute name in an expression is rejected, as AWS does — reach it through ExpressionAttributeNames | docs |
BatchGetItem | ✅ Supported | Up to 100 items across tables; every key is checked against its table’s key schema before any read; records SuccessfulRequestLatency/ConsumedReadCapacityUnits per table touched | docs |
BatchWriteItem | ✅ Supported | Up to 25 put/delete operations; every item and key is checked against its table’s key schema before any write is applied; records SuccessfulRequestLatency/ConsumedWriteCapacityUnits per table touched | docs |
Query & scan
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
Query | ✅ Supported | KeyConditionExpression (values type-checked against the declared key types), FilterExpression, Limit (applied before FilterExpression per AWS semantics), ExclusiveStartKey/LastEvaluatedKey pagination, ScanIndexForward, Select=COUNT; ConsistentRead=true on a GSI is rejected as AWS does; records SuccessfulRequestLatency and ConsumedReadCapacityUnits (with GlobalSecondaryIndexName when IndexName names a real GSI); a reserved word used as a bare attribute name in an expression is rejected, as AWS does — reach it through ExpressionAttributeNames | docs |
Scan | ✅ Supported | FilterExpression, Limit (applied before FilterExpression per AWS semantics), ExclusiveStartKey/LastEvaluatedKey pagination, parallel scan (Segment/TotalSegments), Select=COUNT; ConsistentRead=true on a GSI is rejected as AWS does; records SuccessfulRequestLatency and ConsumedReadCapacityUnits (with GlobalSecondaryIndexName when IndexName names a real GSI); a reserved word used as a bare attribute name in an expression is rejected, as AWS does — reach it through ExpressionAttributeNames | docs |
Transactions
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
TransactGetItems | ✅ Supported | Up to 100 items across tables; every key is checked against its table’s key schema; records SuccessfulRequestLatency/ConsumedReadCapacityUnits per table (2x weighted, matching AWS’s transactional-read capacity accounting) | docs |
TransactWriteItems | ✅ Supported | Put, Update, Delete, ConditionCheck; all-or-nothing; a key-schema mismatch is a ValidationException raised before anything is applied, not a cancellation reason; records SuccessfulRequestLatency/ConsumedWriteCapacityUnits per table (2x weighted, matching AWS’s transactional-write capacity accounting) | docs |
Tags
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
TagResource | ✅ Supported | Merges tags; max 50; validates key/value lengths | docs |
ListTagsOfResource | ✅ Supported | Returns tags as Key/Value array | docs |
UntagResource | ✅ Supported | Removes specified keys; idempotent on missing keys | docs |
Streams interoperability
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
GetShardIterator | ✅ Supported | TRIM_HORIZON, LATEST, AT/AFTER_SEQUENCE_NUMBER | docs |
Global tables
| Operation | Status | Notes | AWS Docs |
|---|---|---|---|
CreateGlobalTable | ❌ Unsupported | Overcast emulates a single region | docs |
DescribeGlobalTable | ❌ Unsupported | Overcast emulates a single region | docs |
DescribeGlobalTableSettings | ❌ Unsupported | Overcast emulates a single region | docs |
ListGlobalTables | ❌ Unsupported | Overcast emulates a single region | docs |
UpdateGlobalTable | ❌ Unsupported | Overcast emulates a single region | docs |
UpdateGlobalTableSettings | ❌ Unsupported | Overcast emulates a single region | docs |
Related
- DynamoDB — quick start, what works, and the differences from AWS
- All service pages