Tier 1
91.3%
Tier 2
12.6%
Tier 3
68.8%
Fully supports
Operation areas this target implements completely - every test passes, nothing skipped. Areas it only partly implements, or gets wrong, are in “Where it falls short” below.
- batchGetItem tier 1
- deleteItem tier 1
- deleteTable tier 1
- describeTable tier 1
- getItem tier 1
- listTables tier 1
Conformance over time
Where it falls short
Operation groups with gaps in the latest run, biggest first. Unsupported means the target doesn't implement that feature at all, often by design. Open one for the exact tests, or see the conformance suite.
-
error-messages Tier 3 65 failing
View these tests in the suite →- BatchGetItem - exact error messages empty RequestItems: full required-parameter error
- BatchGetItem - exact error messages > 100 keys across all tables: interpolated full error
- BatchGetItem - exact error messages empty-binary lookup key: full empty-value message
- BatchGetItem - exact error messages mixing ProjectionExpression on one table and AttributesToGet on another is rejected
- BatchWriteItem - exact error messages empty RequestItems: full required-parameter error
- BatchWriteItem - exact error messages > 25 requests: anchored regex on the constraint phrase
- BatchWriteItem - exact error messages empty-binary delete-request key: full empty-value message
- BatchWriteItem - exact error messages empty-string index key: full secondary-index-key message
- BatchWriteItem - exact error messages empty-binary index key: full secondary-index-key message
- Conditional check - exact error messages TransactionCanceledException message format
- Conditional check - exact error messages ReturnValuesOnConditionCheckFailure: ALL_OLD returns item in error
- CreateTable - exact error messages short table name (2 chars): minimum length 3 error
- CreateTable - exact error messages more than 2 KeySchema elements
- CreateTable - exact error messages GSI INCLUDE projection without NonKeyAttributes: full missing-attributes message
- CreateTable - exact error messages LSI INCLUDE projection without NonKeyAttributes: full missing-attributes message
- CreateTable - exact error messages StreamSpecification StreamEnabled:false with a StreamViewType: full conflict message
- DeleteItem - exact error messages empty-binary key value: full ValidationException message
- GetItem - exact error messages invalid ProjectionExpression syntax: full parser error
- GetItem - exact error messages empty-binary key value: full ValidationException message
- PutItem - exact error messages empty table name: minimum length 1 error
- PutItem - exact error messages NULL attr with false is accepted and normalises to NULL true
- PutItem - exact error messages empty-binary index key value: full secondary-index-key message
- Query - exact error messages Limit of 0
- Query - exact error messages Select SPECIFIC_ATTRIBUTES without ProjectionExpression: full required-projection message
- Scan - exact error messages Segment without TotalSegments: full required-parameter error
- Scan - exact error messages ConsistentRead on a GSI: full consistent-reads-unsupported message
- Scan - exact error messages Select SPECIFIC_ATTRIBUTES without ProjectionExpression: full required-projection message
- TransactGetItems - exact error messages empty TransactItems: full minimum-length error
- TransactGetItems - exact error messages > 100 gets: anchored regex on the constraint phrase
- TransactGetItems - exact error messages non-existent table: full ResourceNotFoundException message
- TransactGetItems - exact error messages invalid ProjectionExpression syntax: full parser error
- TransactGetItems - exact error messages missing key attribute: action-level ValidationError surfaces as TransactionCanceledException
- TransactWriteItems - exact error messages empty TransactItems: full minimum-length error
- TransactWriteItems - exact error messages > 100 actions: anchored regex on the constraint phrase
- TransactWriteItems - exact error messages duplicate target keys in same transaction: full multi-op error
- TransactWriteItems - exact error messages non-existent table: full ResourceNotFoundException message
- TransactWriteItems - exact error messages two failing actions: multi-reason TransactionCanceledException
- TransactWriteItems - exact error messages one passing, one failing: positional reason codes (None for the survivor)
- TransactWriteItems - exact error messages Put wrong-typed table key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Put non-scalar table key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Put wrong-typed index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Put non-scalar index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Update wrong-typed index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Update non-scalar index key: cancelled with full ValidationError reason
- TransactWriteItems - exact error messages Put empty-string table key: top-level ValidationException
- TransactWriteItems - exact error messages Put empty-string index key: top-level ValidationException
- TransactWriteItems - exact error messages Update empty-string index key: top-level ValidationException
- TransactWriteItems - exact error messages Update empty-string Key: top-level empty-value message
- TransactWriteItems - exact error messages Delete empty-string Key: top-level empty-value message
- TransactWriteItems - exact error messages ConditionCheck empty-string Key: top-level empty-value message
- TransactWriteItems - exact error messages Update wrong-typed Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Update non-scalar Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Delete wrong-typed Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Delete non-scalar Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages ConditionCheck wrong-typed Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages ConditionCheck non-scalar Key: cancelled with schema-mismatch reason
- TransactWriteItems - exact error messages Put empty-binary item key: top-level empty-value message
- TransactWriteItems - exact error messages Update empty-binary Key: top-level empty-value message
- TransactWriteItems - exact error messages Delete empty-binary Key: top-level empty-value message
- TransactWriteItems - exact error messages ConditionCheck empty-binary Key: top-level empty-value message
- TransactWriteItems - exact error messages Put empty-binary index key: top-level ValidationException
- TransactWriteItems - exact error messages Update empty-binary index key: top-level ValidationException
- UpdateItem - exact error messages invalid UpdateExpression syntax
- UpdateItem - exact error messages empty-binary key value: full ValidationException message
- UpdateItem - exact error messages empty-binary index key value: full secondary-index-key message
-
transactions Tier 2 61 failing
View these tests in the suite →- TransactGetItems - basic gets multiple items atomically
- TransactGetItems - basic gets items across tables (hashTableDef + compositeTableDef)
- TransactGetItems - basic returns empty Item for non-existing items in the mix
- TransactGetItems - basic gets a single item
- TransactGetItems - basic returns all items when all exist
- TransactGetItems - validation rejects empty TransactItems
- TransactGetItems - validation rejects get on non-existent table
- TransactGetItems - validation rejects duplicate keys in same transaction
- TransactGetItems - ConsumedCapacity charges 2 read capacity units per item, including a missing item
- TransactGetItems - ConsumedCapacity INDEXES breakdown includes the table read capacity units
- TransactGetItems - projection matching nothing omits Item when the projection matches no attribute on a present item
- TransactWriteItems - basic functionality executes Put + Update + Delete atomically
- TransactWriteItems - basic functionality succeeds when ConditionCheck condition is met
- TransactWriteItems - basic functionality rolls back entire transaction when ConditionCheck fails
- TransactWriteItems - basic functionality applies ConditionExpression on Put action
- TransactWriteItems - basic functionality applies ConditionExpression on Update action
- TransactWriteItems - basic functionality applies ConditionExpression on Delete action
- TransactWriteItems - basic functionality executes cross-table transaction (hashTableDef + compositeTableDef)
- TransactWriteItems - basic functionality supports idempotency via ClientRequestToken
- TransactWriteItems - basic functionality rejects same ClientRequestToken with different payload
- TransactWriteItems - basic functionality includes CancellationReasons in error when condition fails
- TransactWriteItems - basic functionality returns ALL_OLD item via ReturnValuesOnConditionCheckFailure
- TransactWriteItems - multiple items puts multiple items in one transaction
- TransactWriteItems - multiple items updates multiple items in one transaction
- TransactWriteItems - multiple items deletes multiple items in one transaction
- TransactWriteItems - validation rejects duplicate target items in same transaction
- TransactWriteItems - validation rejects empty TransactItems
- TransactWriteItems - validation rejects transaction on non-existent table
- TransactWriteItems - validation Put with a wrong-typed table key cancels with a ValidationError reason
- TransactWriteItems - validation Put with a non-scalar table key cancels with a ValidationError reason
- TransactWriteItems - validation Put with a wrong-typed index key cancels with a ValidationError reason
- TransactWriteItems - validation Put with a non-scalar index key cancels with a ValidationError reason
- TransactWriteItems - validation Update setting a wrong-typed index key cancels with a ValidationError reason
- TransactWriteItems - validation Update setting a non-scalar index key cancels with a ValidationError reason
- TransactWriteItems - validation Put with an empty-string table key is a top-level ValidationException
- TransactWriteItems - validation Put with an empty-string index key is a top-level ValidationException
- TransactWriteItems - validation Update setting an empty-string index key is a top-level ValidationException
- TransactWriteItems - validation Update with an empty-string Key is a top-level ValidationException
- TransactWriteItems - validation Delete with an empty-string Key is a top-level ValidationException
- TransactWriteItems - validation ConditionCheck with an empty-string Key is a top-level ValidationException
- TransactWriteItems - validation Update with a wrong-typed Key cancels with a ValidationError reason
- TransactWriteItems - validation Update with a non-scalar Key cancels with a ValidationError reason
- TransactWriteItems - validation Delete with a wrong-typed Key cancels with a ValidationError reason
- TransactWriteItems - validation Delete with a non-scalar Key cancels with a ValidationError reason
- TransactWriteItems - validation ConditionCheck with a wrong-typed Key cancels with a ValidationError reason
- TransactWriteItems - validation ConditionCheck with a non-scalar Key cancels with a ValidationError reason
- TransactWriteItems - validation Update with attribute_exists rejects non-existent item
- TransactWriteItems - validation Update with attribute_not_exists upserts on non-existent key
- TransactWriteItems - validation Update with comparison condition cancels on non-existent key; no ghost item
- TransactWriteItems - validation Update with combined attribute_exists + equality cancels on non-existent key; no ghost item
- TransactWriteItems - validation mixed transaction: one passing, one failing on non-existent cancels everything
- TransactWriteItems - ConditionExpression parens Put with per-condition parens succeeds on fresh key
- TransactWriteItems - ConditionExpression parens Update with full-expression wrap succeeds when condition holds
- TransactWriteItems - ConditionExpression parens Delete with non-redundant nested parens succeeds when condition holds
- TransactWriteItems - ConditionExpression parens ConditionCheck with per-condition parens passes when condition holds
- TransactWriteItems - ConditionExpression parens cancels transaction when any parenthesised condition fails
- TransactWriteItems - ConsumedCapacity charges 2 write capacity units per item
- TransactWriteItems - ConsumedCapacity: conditional, check, replay, cancel a passing conditional write costs the same 2 WCU/item as an unconditional one
- TransactWriteItems - ConsumedCapacity: conditional, check, replay, cancel a standalone ConditionCheck action costs 2 write capacity units
- TransactWriteItems - ConsumedCapacity: conditional, check, replay, cancel reports write capacity on the first call and read capacity on a same-token replay
- TransactWriteItems - ConsumedCapacity: conditional, check, replay, cancel a cancelled conditional transaction reports no consumed capacity
-
partiql Tier 2 unsupported
View these tests in the suite →- BatchExecuteStatement - PartiQL batch of multiple SELECT statements
- BatchExecuteStatement - PartiQL batch of INSERT and UPDATE statements
- BatchExecuteStatement - PartiQL partial failure - one valid and one invalid statement
- BatchExecuteStatement - PartiQL rejects an empty Statements array
- ExecuteStatement - PartiQL INSERTs a new item
- ExecuteStatement - PartiQL SELECTs an item by primary key
- ExecuteStatement - PartiQL SELECTs with WHERE clause using comparison
- ExecuteStatement - PartiQL UPDATEs an existing item
- ExecuteStatement - PartiQL DELETEs an item
- ExecuteStatement - PartiQL rejects INSERT on an existing item (INSERT is not upsert)
- ExecuteStatement - PartiQL INSERT succeeds after DELETE of same key
- ExecuteStatement - PartiQL SELECT returns empty results for non-matching WHERE
- ExecuteStatement - PartiQL parameterized INSERT with ? placeholders
- ExecuteStatement - PartiQL parameterized SELECT with ? placeholder
- ExecuteStatement - PartiQL SELECT with nested map path
- ExecuteStatement - PartiQL SELECT with specific attributes
- ExecuteStatement - PartiQL SELECT with begins_with in WHERE clause
- ExecuteStatement - PartiQL PartiQL UPDATE with SET on attribute
- ExecuteStatement - PartiQL PartiQL UPDATE with REMOVE
- ExecuteStatement - PartiQL returns a populated ConsumedCapacity block when requested
- ExecuteStatement - PartiQL evaluates negated predicates (NOT begins_with, IS NOT MISSING)
- ExecuteStatement - PartiQL DELETE with a false non-key predicate fails ConditionalCheckFailed and leaves the item
- ExecuteStatement - PartiQL DELETE with a true non-key predicate removes the item
- ExecuteStatement - PartiQL UPDATE with a false non-key predicate fails ConditionalCheckFailed and leaves the item
- ExecuteStatement - PartiQL UPDATE with a true non-key predicate mutates the item
- ExecuteStatement - PartiQL DELETE with a false NOT begins_with predicate fails ConditionalCheckFailed
- ExecuteStatement - PartiQL DELETE with a true NOT begins_with predicate removes the item
- ExecuteStatement - PartiQL rejects a write WHERE clause that omits the primary key
- ExecuteStatement - PartiQL DELETE on a missing key with a non-key predicate is a silent no-op
- ExecuteStatement - PartiQL rejects a statement with syntax error
- ExecuteStatement - PartiQL rejects a reference to a non-existent table
- ExecuteTransaction - PartiQL transactional INSERT and UPDATE both succeed atomically
- ExecuteTransaction - PartiQL transaction rolls back on duplicate key INSERT
- ExecuteTransaction - PartiQL multiple INSERTs in one transaction
- ExecuteTransaction - PartiQL idempotent replay under the same ClientRequestToken does not double-apply
- ExecuteTransaction - PartiQL rejects empty TransactStatements
-
streams Tier 2 unsupported
View these tests in the suite →- DynamoDB Streams - basic table with StreamSpecification has LatestStreamArn in DescribeTable
- DynamoDB Streams - basic table StreamSpecification.StreamEnabled is true
- DynamoDB Streams - basic table StreamSpecification.StreamViewType matches what was requested
- DynamoDB Streams - basic ListStreams returns the stream for our table
- DynamoDB Streams - basic ListStreams with TableName filter returns only our table's stream
- DynamoDB Streams - basic DescribeStream returns stream status ENABLED or ENABLING
- DynamoDB Streams - basic DescribeStream returns at least one shard
- DynamoDB Streams - basic each shard has a ShardId
- DynamoDB Streams - basic TRIM_HORIZON returns a valid iterator string
- DynamoDB Streams - basic LATEST returns a valid iterator string
- DynamoDB Streams - basic GetRecords after PutItem contains the new image (INSERT event)
- DynamoDB Streams - basic INSERT record has eventName INSERT
- DynamoDB Streams - basic INSERT record dynamodb.Keys contains the item key
- DynamoDB Streams - basic INSERT record dynamodb.NewImage contains the full item
- DynamoDB Streams - basic GetRecords after UpdateItem contains both old and new images (MODIFY event)
- DynamoDB Streams - basic GetRecords after DeleteItem contains old image (REMOVE event)
- DynamoDB Streams - basic NEW_IMAGE view type records have NewImage but no OldImage on MODIFY
- DynamoDB Streams - basic KEYS_ONLY view type records have Keys but no NewImage or OldImage
-
putItem Tier 1 13 failing
View these tests in the suite →- PutItem - ConditionExpression returns the conflicting item via ReturnValuesOnConditionCheckFailure on a failed Put
- ReturnItemCollectionMetrics PutItem with SIZE returns ItemCollectionMetrics
- ReturnItemCollectionMetrics DeleteItem with SIZE returns ItemCollectionMetrics
- ReturnItemCollectionMetrics UpdateItem with SIZE returns ItemCollectionMetrics
- PutItem - number format accepts "+5" and stores it as "5"
- PutItem - number format accepts "+1.5" and stores it as "1.5"
- PutItem - number format accepts "+0" and stores it as "0"
- PutItem - number format accepts "+0.0" and stores it as "0"
- PutItem - number format accepts "+1e2" and stores it as "100"
- PutItem - number format accepts "+.5" and stores it as "0.5"
- PutItem - number format accepts "+1e-2" and stores it as "0.01"
- PutItem - number format accepts a leading + on a numeric sort key and normalises it
- PutItem - validation rejects an empty-string index key attribute
-
validation-ordering Tier 3 10 failing
View these tests in the suite →- CreateTable - validation ordering empty TableName reports only tableName constraint
- CreateTable - validation ordering invalid table name pattern reports only tableName
- DeleteItem - validation ordering empty TableName reports only tableName constraint
- Non-existent index - error surface UpdateTable deleting a non-existent GSI reports ResourceNotFoundException
- PutItem - validation ordering empty TableName reports tableName constraint (stops early)
- PutItem - validation ordering empty TableName with invalid ReturnValues reports only tableName
- Query - validation ordering reports invalid Limit value
- Scan - validation ordering rejects Segment without TotalSegments
- UpdateItem - validation ordering empty TableName reports only tableName constraint
- UpdateItem - validation ordering rejects invalid ReturnValues (UpdateItem reports the first enum error)
-
limits Tier 3 9 failing
View these tests in the suite →- Nesting depth - 32-level document limit rejects a stored attribute nested 32 levels (leaf at level 33)
- Nesting depth - 32-level document limit rejects a 32-level ExpressionAttributeValue with ValidationException
- Number precision - DynamoDB number limits and edge cases rejects arithmetic that overflows the supported number magnitude
- TransactWriteItems limits TransactWriteItems with exactly 100 Put actions succeeds
- TransactWriteItems limits TransactWriteItems with 101 actions fails with ValidationException
- TransactWriteItems limits TransactWriteItems total item size approaching 4MB succeeds
- TransactWriteItems limits TransactWriteItems total item size over 4MB fails with ValidationException
- TransactGetItems limits TransactGetItems with exactly 100 items succeeds
- TransactGetItems limits TransactGetItems with 101 items fails with ValidationException
-
updateTable Tier 2 8 failing
View these tests in the suite →- UpdateTable - add GSI adds a hash-only GSI to an existing table
- UpdateTable - add GSI adds a composite GSI (hash + range) to an existing table
- UpdateTable - add GSI adds a GSI with KEYS_ONLY projection
- UpdateTable - add GSI adds a GSI with INCLUDE projection and NonKeyAttributes
- UpdateTable - add GSI can query a newly created GSI after putting items
- UpdateTable - add GSI adds multiple GSIs sequentially
- UpdateTable - remove GSI removes a GSI from a table
- UpdateTable - GSI validation rejects removing a non-existent GSI
-
createTable Tier 1 7 failing
View these tests in the suite →- CreateTable - validation rejects a GSI INCLUDE projection without NonKeyAttributes
- CreateTable - validation rejects StreamSpecification with StreamEnabled false plus a StreamViewType
- CreateTable - configuration parameters DeletionProtectionEnabled round-trips
- CreateTable - configuration parameters TableClass STANDARD_INFREQUENT_ACCESS round-trips
- CreateTable - configuration parameters SSESpecification with the AWS-managed key round-trips
- CreateTable - configuration parameters OnDemandThroughput round-trips on a PAY_PER_REQUEST table
- CreateTable - LSI rejects an LSI INCLUDE projection without NonKeyAttributes
-
scan Tier 1 6 failing
View these tests in the suite →- Scan - Select / ProjectionExpression rejections Select ALL_ATTRIBUTES with ProjectionExpression is rejected
- Scan - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES without an IndexName is rejected
- Scan - Select / ProjectionExpression rejections Select COUNT with ProjectionExpression is rejected
- Scan - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES with ProjectionExpression and no IndexName is rejected
- Scan - Select / ProjectionExpression rejections Select SPECIFIC_ATTRIBUTES without ProjectionExpression is rejected
- Scan - validation rejects TotalSegments above the maximum
-
query Tier 1 5 failing
View these tests in the suite →- Query - Select SPECIFIC_ATTRIBUTES Select SPECIFIC_ATTRIBUTES without ProjectionExpression is rejected
- Query - Select / ProjectionExpression rejections Select ALL_ATTRIBUTES with ProjectionExpression is rejected
- Query - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES without an IndexName is rejected
- Query - Select / ProjectionExpression rejections Select COUNT with ProjectionExpression is rejected
- Query - Select / ProjectionExpression rejections Select ALL_PROJECTED_ATTRIBUTES with ProjectionExpression and no IndexName is rejected
-
updateTable Tier 1 5 failing
View these tests in the suite →- UpdateTable - configuration parameters UpdateTable enables DeletionProtectionEnabled
- UpdateTable - configuration parameters UpdateTable changes TableClass
- UpdateTable - configuration parameters UpdateTable changes OnDemandThroughput
- DeleteTable - deletion protection enforcement rejects DeleteTable while deletion protection is enabled
- DeleteTable - deletion protection enforcement allows DeleteTable after protection is disabled
-
backups Tier 2 unsupported
View these tests in the suite →- Continuous backups - PITR reports PITR DISABLED by default
- Continuous backups - PITR enabling PITR transitions PointInTimeRecoveryStatus to ENABLED
- On-demand backups - lifecycle and restore CreateBackup → DescribeBackup → ListBackups → DeleteBackup
- On-demand backups - lifecycle and restore RestoreTableFromBackup initiates a restore into a new table
- On-demand backups - lifecycle and restore DescribeBackup on a deleted backup throws BackupNotFoundException
-
ttl Tier 2 5 failing
View these tests in the suite →- TTL - basic enables TTL on a table
- TTL - basic DescribeTimeToLive returns ENABLED status and correct attribute name after enabling
- TTL - basic enables TTL with a different attribute name
- TTL - validation rejects empty attribute name
- TTL - validation rejects UpdateTimeToLive on non-existent table
-
updateItem Tier 1 2 failing
View these tests in the suite →- UpdateItem - ReturnValues granularity REMOVE with UPDATED_NEW omits Attributes (nothing was set to a new value)
- UpdateItem - ConditionExpression ReturnValuesOnConditionCheckFailure ALL_OLD returns existing item on failure
-
account Tier 2 unsupported
View these tests in the suite →- Account reads - DescribeLimits, DescribeEndpoints DescribeLimits returns positive account and table capacity limits
- Account reads - DescribeLimits, DescribeEndpoints DescribeEndpoints returns at least one endpoint with an address
-
contributorInsights Tier 2 unsupported
View these tests in the suite →- Contributor insights - enable/describe/list reports DISABLED by default
- Contributor insights - enable/describe/list enabling transitions the status and lists the table
-
export Tier 2 unsupported
View these tests in the suite →- Export and import - S3 ExportTableToPointInTime initiates an export and reports it
- Export and import - S3 ImportTable ingests S3 data into a new table
-
resourcePolicy Tier 2 unsupported
View these tests in the suite →- Resource policies - Put/Get/Delete GetResourcePolicy on a table with no policy throws PolicyNotFoundException
- Resource policies - Put/Get/Delete Put then Get round-trips the policy, and Delete removes it
-
tags Tier 2 2 failing
View these tests in the suite →- Tags - validation rejects TagResource with an invalid ARN format
- Tags - validation rejects ListTagsOfResource with a non-existent ARN
-
batchWriteItem Tier 1 1 failing
View these tests in the suite →- BatchWriteItem - validation rejects an empty-string index key value
-
kinesis Tier 2 unsupported
View these tests in the suite →- Kinesis streaming destination enables a streaming destination and reports it via Describe
-
legacy-api Tier 3 1 failing
View these tests in the suite →- Legacy API - KeyConditions and QueryFilter QueryFilter with ComparisonOperator EQ on a BOOL attribute filters correctly