Tier 1
95.4%
Tier 2
16.9%
Tier 3
82.7%
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
- batchWriteItem tier 1
- deleteItem tier 1
- deleteTable tier 1
- describeTable tier 1
- getItem tier 1
- listTables tier 1
- scan 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.
-
transactions Tier 2 39 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 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
-
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 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 rejects empty TransactStatements
-
error-messages Tier 3 24 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
- BatchWriteItem — exact error messages empty RequestItems: full required-parameter error
- BatchWriteItem — exact error messages > 25 requests: anchored regex on the constraint phrase
- 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
- GetItem — exact error messages invalid ProjectionExpression syntax: full parser error
- PutItem — exact error messages empty table name: minimum length 1 error
- Query — exact error messages Limit of 0
- Scan — exact error messages Segment without TotalSegments: full required-parameter error
- 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)
- UpdateItem — exact error messages invalid UpdateExpression syntax
-
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
-
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
-
limits Tier 3 7 failing
View these tests in the suite →- 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 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
-
validation-ordering Tier 3 5 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
- Non-existent index — error surface UpdateTable deleting a non-existent GSI reports ResourceNotFoundException
- Query — validation ordering reports invalid Limit value
- Scan — validation ordering rejects Segment without TotalSegments
-
createTable Tier 1 4 failing
View these tests in the suite →- 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
-
putItem Tier 1 4 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
-
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
-
query Tier 1 1 failing
View these tests in the suite →- Query — Select SPECIFIC_ATTRIBUTES Select SPECIFIC_ATTRIBUTES without ProjectionExpression is rejected
-
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