user829174
user829174

Reputation: 6362

dynamodb timestamp reserved name expression-attribute-name

DynamoDb table structure:

Primary key: userId, Sort key: timestamp

I created this query:

aws dynamodb query \
    --table-name QAClusteredData \
    --key-condition-expression 'userId= :user_id AND timestamp BETWEEN :t1 AND :t2' \
    --expression-attribute-values '{
        ":user_id": {"S": "ec2e598f-cff8-4648-a120-3baf18e5102c"}, 
        ":t1": {"S": "1550481826"}, 
        ":t2": {"S": "1550662412"}
    }' \
    --region us-east-1

received: "An error occurred (ValidationException) when calling the Query operation: Invalid KeyConditionExpression: Attribute name is a reserved keyword; reserved keyword: timestamp"

tried:

aws dynamodb query \
    --table-name QAClusteredData \
    --key-condition-expression 'userId= :user_id AND timestamp BETWEEN :t1 AND :t2' \
    --expression-attribute-names '{"#ts":"timestamp"}' \
    --expression-attribute-values '{
        ":user_id": {"S": "ec2e598f-cff8-4648-a120-3baf18e5102c"}, 
        ":t1": {"S": "1550481826"}, 
        ":t2": {"S": "1550662412"}
    }' \
    --region us-east-1

still get the same error, any suggestions?

Upvotes: 0

Views: 2499

Answers (2)

Michiel
Michiel

Reputation: 3410

Your code contains a forbidden keyword: :user_id AND timestamp BETWEEN :t1 AND :t2'

timestamp is a reserved word in DynamoDB. Here's a list of reserved keywords in DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html

Upvotes: 0

user829174
user829174

Reputation: 6362

My bad,

had to put #ts BETWEEN :t1 AND :t2 and not timestamp BETWEEN :t1 AND :t2

Full query:

aws dynamodb query \
    --table-name QAClusteredData \
    --key-condition-expression 'userId= :user_id AND #ts BETWEEN :t1 AND :t2' \
    --expression-attribute-names '{"#ts":"timestamp"}' \
    --expression-attribute-values '{
        ":user_id": {"S": "ec2e598f-cff8-4648-a120-3baf18e5102c"}, 
        ":t1": {"S": "1550481826"}, 
        ":t2": {"S": "1550662412"}
    }' \
    --region us-east-1

Upvotes: 2

Related Questions