DynamoDB 查询 CLI "Parameter validation failed"



我正在使用AWS CLI进行dynamoDB查询,其中包括key-condition-expressionexpression-attribute-names,并且我不断获得无效错误:

Invalid type for parameter ExpressionAttributeNames.:taskName, value: OrderedDict([(u'S', u'taskOne')]), type: <class 'collections.OrderedDict'>, valid types: <type 'basestring'>
Invalid type for parameter ExpressionAttributeNames.#status, value: OrderedDict([(u'S', u'status')]), type: <class 'collections.OrderedDict'>, valid types: <type 'basestring'>
Invalid type for parameter ExpressionAttributeNames.:status, value: OrderedDict([(u'S', u'success')]), type: <class 'collections.OrderedDict'>, valid types: <type 'basestring'>

我看了以前的问题,如dynamodb-get-item-boto3-parameter- validate -failed和invalid-type-parameter-class-str-valid-types-class-dict,但我没有看到我做错了什么。

Dynamo调用需要属性数据类型,我已经包含了,但我认为这是导致错误的原因。删除数据类型会导致另一个预期错误。

这是我的电话:

aws dynamodb query 
--table-name myTable 
--key-condition-expression "taskName = :taskName AND #status = :status" 
--expression-attribute-names '{":taskName":{"S":"taskOne"},"#status":{"S":"status"},":status":{"S":"success"}}'

更新:当我删除数据类型:"S"时,我得到这个错误:

解析参数"——expression-attribute-names"错误:Invalid JSON:无法解码JSON对象

您在属性名称下混合了属性名称和值。两者都需要https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeValues.html名称是纯字符串,值是用"S&quot定义的对象。作为类型。但都是单独定义

试试这个

aws dynamodb query 
--table-name myTable 
--key-condition-expression "#taskName = :taskName AND #status = :status" 
--expression-attribute-names '{"#taskName": "taskName","#status": "status"}'
--expression-attribute-values '{":taskName":{"S":"taskOne"},":status":{"S":"success"}}'

相关内容

  • 没有找到相关文章