Error: dynamodb query key condition not supported

Answered by Rafal Wilinski
What's Causing This Error
You may run into this error due to an invalid Key Condition expression for the specified reasons.
1. Improper Key Referrals - If you are querying a table with a composite partition key, you may encounter this error by only referring to the partition key.
2. Invalid Use of Functions - The partition key can only accept the "=" operator and will throw the specified error if any other operator or function is provided to it. For example, if you use the begins_with() function or ">, >=, <, <=" operators on the hash key, you will encounter this error.
Additionally, you may encounter this error if you use the BETWEEN operator on a table that does not have a sort key of type "number."
Solution - Here's How To Resolve It
First, ensure that you have provided the correct combination of Partition and Sort keys for your query as defined in the table or GSI.
Then, ensure that you have provided the correct operator/function for the key condition. For example, the Hash key only supports the "=" operator, and the Sort key supports the standard condition operators, excluding the "contains" function. So, make sure to use only the allowed operators in your query.
Other Common DynamoDB Errors (with Solutions)
- boto3 dynamodb client error
- DynamoDB Query Limit Not Working
- Float types are not supported. Use decimal types instead.
- dynamodb put item not working
- DynamoDB ConditionalCheckFailedException
- dynamodb list_append if_not_exists not working
- dynamodb-admin command not found
- DynamoDB Invalid UpdateExpression Syntax Error Token
- DynamoDB Key element does not match the schema
- dynamodb getItem() is not a function
- cannot find module 'dynamodb-doc'
- ExpressionAttributeValues contains invalid value: One or more parameter values were invalid: An AttributeValue may not contain an empty string
- could not load profile default dynamodb
- aws lambda dynamodb nodejs not working after few puts
- is not authorized to perform dynamodb:* on resource