Skip to content

DynamoDB feature coverage

The Nimbus DynamoDB endpoint implements the full operation set below, grouped into tiers T0–T7. Requests are dispatched on the standard X-Amz-Target header (DynamoDB_20120810.* and DynamoDBStreams_20120810.*); an unrecognized target is rejected with an explicit error.

Status values:

  • Implemented — supported end to end.
  • Implemented, with divergence — supported, with a recorded behavioral difference from AWS DynamoDB. Each DDB-DIV-* code is documented on the divergences page.
OperationRequest surfaceResponse surfaceErrorsStatus
CreateTableTableName, KeySchema, AttributeDefinitions, BillingMode, StreamSpecification, LocalSecondaryIndexes, GlobalSecondaryIndexesTableDescription with TableStatus, TableArn, TableIdResourceInUseException, ValidationExceptionImplemented, with divergence (DDB-DIV-004: tables are ACTIVE immediately)
DescribeTableTableNameTableResourceNotFoundExceptionImplemented
ListTablesExclusiveStartTableName, LimitTableNames, LastEvaluatedTableName; paginatedImplemented
UpdateTableTableName, BillingMode, StreamSpecification, GSI updates, deletion protectionTableDescriptionResourceNotFoundException, ValidationExceptionImplemented
DeleteTableTableNameTableDescription (DELETING)ResourceNotFoundExceptionImplemented
DescribeEndpointsEndpointsImplemented
DescribeLimitsaccount and table capacity maximaImplemented
OperationRequest surfaceResponse surfaceErrorsStatus
PutItemTableName, Item, ConditionExpression, ExpressionAttributeNames/Values, ReturnValuesAttributesConditionalCheckFailedException, ResourceNotFoundException, ValidationExceptionImplemented, with divergence (DDB-DIV-005: storage format)
GetItemTableName, Key, ProjectionExpression, ConsistentReadItemResourceNotFoundException, ValidationExceptionImplemented
UpdateItemTableName, Key, UpdateExpression, ConditionExpression, ReturnValuesAttributesConditionalCheckFailedException, ResourceNotFoundException, ValidationExceptionImplemented
DeleteItemTableName, Key, ConditionExpression, ReturnValuesAttributesConditionalCheckFailedException, ResourceNotFoundException, ValidationExceptionImplemented

Conditional writes are checked and committed in one storage transaction, so a condition cannot be raced between its check and its commit.

OperationRequest surfaceResponse surfaceErrorsStatus
QueryTableName, KeyConditionExpression, FilterExpression, ProjectionExpression, IndexName, Limit, ExclusiveStartKey, ScanIndexForward, SelectItems, Count, ScannedCount, LastEvaluatedKey; paginatedResourceNotFoundException, ValidationExceptionImplemented, with divergence (DDB-DIV-002: sort-key encoding)
ScanTableName, FilterExpression, ProjectionExpression, IndexName, Limit, ExclusiveStartKey, Segment, TotalSegments, SelectItems, Count, ScannedCount, LastEvaluatedKey; paginated, parallel scan supportedResourceNotFoundException, ValidationExceptionImplemented
OperationRequest surfaceResponse surfaceErrorsStatus
BatchGetItemRequestItems with Keys, ProjectionExpression, ConsistentReadResponses, UnprocessedKeysResourceNotFoundException, ValidationExceptionImplemented
BatchWriteItemRequestItems with PutRequest/DeleteRequestUnprocessedItemsResourceNotFoundException, ValidationExceptionImplemented
TransactGetItemsTransactItems (Get)Responses (snapshot read)ResourceNotFoundException, ValidationException, TransactionCanceledExceptionImplemented
TransactWriteItemsTransactItems (Put/Update/Delete/ConditionCheck), ClientRequestTokenempty on success; CancellationReasons on cancellationTransactionCanceledException, ValidationExceptionImplemented

TransactWriteItems is atomic: either every item commits or none does, and a cancellation reports per-item CancellationReasons.

CapabilityCoverageErrorsStatus
Local secondary indexesDeclared at CreateTable, with projectionsValidationExceptionImplemented
Global secondary indexesCreated, updated, and deleted through UpdateTable (GlobalSecondaryIndexUpdates)ValidationException, ResourceInUseExceptionImplemented
Query with IndexNameLSI and GSI queries honoring the projected attribute setResourceNotFoundException, ValidationExceptionImplemented, with divergence (DDB-DIV-010: ConsistentRead on a GSI is served, not rejected)

Index entries are maintained in the same storage transaction as the base write, so index reads are never stale.

OperationRequest surfaceResponse surfaceErrorsStatus
StreamSpecification on CreateTable/UpdateTableStreamEnabled, StreamViewTypeLatestStreamArn, LatestStreamLabelValidationExceptionImplemented
DescribeStreamStreamArn, Limit, ExclusiveStartShardIdStreamDescriptionResourceNotFoundExceptionImplemented, with divergence (DDB-DIV-006: single shard)
GetShardIteratorStreamArn, ShardId, ShardIteratorType, SequenceNumberShardIteratorResourceNotFoundException, ValidationExceptionImplemented
GetRecordsShardIterator, LimitRecords, NextShardIteratorexpired-iterator and validation errorsImplemented, with divergence (DDB-DIV-007: read-triggered retention)
ListStreamsTableName, Limit, ExclusiveStartStreamArnStreams, LastEvaluatedStreamArn; paginatedResourceNotFoundExceptionImplemented

Batch and transactional writes emit stream records like single-item writes; a transaction’s records are part of its atomic commit. TTL deletions emit REMOVE records.

OperationRequest surfaceResponse surfaceErrorsStatus
UpdateTimeToLiveTableName, TimeToLiveSpecificationTimeToLiveSpecificationResourceNotFoundException, ValidationExceptionImplemented, with divergence (DDB-DIV-009: no modification cooldown)
DescribeTimeToLiveTableNameTimeToLiveDescriptionResourceNotFoundExceptionImplemented
TagResourceResourceArn, TagsemptyResourceNotFoundException, ValidationExceptionImplemented
UntagResourceResourceArn, TagKeysemptyResourceNotFoundException, ValidationExceptionImplemented
ListTagsOfResourceResourceArn, NextTokenTags; single pageResourceNotFoundException, ValidationExceptionImplemented

Expired items are reclaimed by a background TTL sweeper (default cadence 60 seconds, configurable or disablable on the endpoint configuration).

CapabilityBehaviorErrorsStatus
Access-key → tenant resolutionEach access key ID is bound to exactly one tenant; unknown keys fail closedUnrecognizedClientException, MissingAuthenticationToken, IncompleteSignatureImplemented
Strict SigV4 verification (default)Full canonical-request verification with constant-time comparison and a ±15-minute timestamp windowInvalidSignatureException, UnrecognizedClientExceptionImplemented
Persisted access-key managementKeys can be stored, rotated, deleted, and listed in a server-side store; listings never include the secretResourceNotFoundExceptionImplemented

Nimbus has no provisioned-capacity model: requests are not throttled against configured read/write capacity units, so capacity-driven retry loops written for AWS simply never trigger. See divergences for the complete list of recorded behavioral differences.