Amazon dynamodb dynamodb时间戳保留名称表达式属性名称

Amazon dynamodb dynamodb时间戳保留名称表达式属性名称,amazon-dynamodb,Amazon Dynamodb,DynamoDb表格结构: Primary key: userId, Sort key: timestamp 我创建了这个查询: aws dynamodb query \ --table-name QAClusteredData \ --key-condition-expression 'userId= :user_id AND timestamp BETWEEN :t1 AND :t2' \ --expression-attribute-values '{

DynamoDb表格结构:

Primary key: userId, Sort key: timestamp
我创建了这个查询:

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
接收到:
“调用查询操作时发生错误(ValidationException):无效的KeyConditionExpression:属性名称是保留关键字;保留关键字:时间戳”

尝试:

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

仍然会出现相同的错误,有什么建议吗?

您的代码包含一个禁止的关键字:
:user\u id和时间戳介于:t1和:t2'

timestamp
是DynamoDB中的保留字。下面是DynamoDB中保留的关键字列表:

我的坏

必须将
#ts放在:t1和:t2之间
而不是
时间戳放在:t1和:t2之间

完整查询:

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

您仍然可以使用--expression属性namesThank,my bad来使用保留字。没错,文档中对此进行了解释:
如果需要编写一个表达式,其中包含与DynamoDB保留字冲突的属性名,则可以定义一个表达式属性名来代替保留字。有关详细信息,请参见表达式属性名称