因此,我有一个DynamoDB表Users
,我想返回该表的所有内容。甚至可能有些。
我试过
aws dynamodb query --table-name Users
它说我必须指定key-condition
或key-condition-expression
,所以我添加了以下内容:
aws dynamodb query --table-name Users --key-condition-expression Username = "test"
并返回错误消息CCD_ 4。
如果您想转储整个表,只需使用
aws dynamodb scan --table-name Users
尝试以下格式:
aws dynamodb get-item --table-name Users --key '{"Username": {"S": "test"}}'
由于问题是关于使用query
操作,所以到此为止。
正如AWS cli文档所解释的,您应该使用--expression-attribute-values
参数将属性值与条件分离:
aws dynamodb query --table-name Users
--key-condition-expression "Username = :v1"
--expression-attribute-values "{ ":v1" : { "S" : "test" } }"
此外,您可以在过滤器中组合更多属性(在我的情况下,我有一个Datetime排序键,我想根据它进行过滤):
aws dynamodb query
--table-name Users
--key-condition-expression "Username = :v1 AND #Datetime BETWEEN :v2 AND :v3"
--expression-attribute-names "{ "#Datetime": "Datetime" }"
--expression-attribute-values "{ ":v1" : { "S" : "test" }, ":v2" : { "S" : "2019-06-06" }, ":v3" : { "S" : "2019-06-07" } }"
这里的#Datetime
映射是通过--expression-attribute-names
参数完成的,因为Datetime
是一个保留关键字,所以我不能在关键字条件表达式中使用它。
根据我的理解,您没有正确传递"密钥"(hash或hash/range)
创建一个包含密钥的文件:test.json
{
"userName": {"S": "abc"},
"anyRangeKey": {"S": "xyz"} //optional
}
运行
aws dynamodb get-item --table-name users --key file://test.json
参考:http://docs.aws.amazon.com/cli/latest/reference/dynamodb/get-item.html
希望对有所帮助
aws dynamodb get-item --table-name ProductCatalog --key "{""Id"":{""N"":""205""}}" --no-verify-ssl