how to return items in a dynamodb on aws-cli

Solution 1:

If you want to dump the whole table, just use

aws dynamodb scan --table-name Users

Solution 2:

Try this format:

aws dynamodb get-item --table-name Users --key '{"Username": {"S": "test"}}'

Solution 3:

Since the question is about using the query operation, here it goes.

As the AWS cli documentation explains, you should separate the attribute values from the condition, by using the --expression-atribute-values parameter:

aws dynamodb query --table-name Users 
    --key-condition-expression "Username = :v1" 
    --expression-attribute-values "{ \":v1\" : { \"S\" : \"test\" } }"

Additionally, you may combine more attributes in the filter (in my case I have a Datetime sort key I want to filter by):

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\" } }" 

Here the #Datetime mapping is done through the --expression-attribute-names parameter, because Datetime is a reserved keyword, so I cannot use it inside the key condition expression.

Solution 4:

As per my understanding you are not passing "key"(hash or hash/range) properly

create a file containing your keys: test.json

{
    "userName": {"S": "abc"},
    "anyRangeKey": {"S": "xyz"}  //optional
}

Run

aws dynamodb get-item --table-name users --key file://test.json

refer:http://docs.aws.amazon.com/cli/latest/reference/dynamodb/get-item.html
Hope that helps