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-attribute-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
Comments
-
beejm almost 2 years
So, I have a DynamoDB table
Users
and I want to return all the contents of this table. Or maybe even some.I tried
aws dynamodb query --table-name Users
and it says I have to specify
key-condition
orkey-condition-expression
, so I added the following:aws dynamodb query --table-name Users --key-condition-expression Username = "test"
and it returns an error message
" Unknown options: test "
. -
KTM almost 4 yearsThanks a ton! I was forgot to escape the query params :)
-
D Malan over 3 yearsIf you're getting a
An error occurred (ValidationException) when calling the GetItem operation: The provided key element does not match the schema
error when running this, check out this question. -
kloddant about 3 yearsUnknown options: test}}', {S:
-
kloddant about 3 yearsIt appears that, for all but the smallest of tables, this yields the error, "An error occurred (ProvisionedThroughputExceededException) when calling the Scan operation (reached max retries: 2): The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API."
-
kloddant about 3 yearsThe first query here yields the error, "An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: id".
-
SebaGra about 3 yearsHey @kloddant, I think you're trying to run a query using a condition that does not include your primary key (
id
). Without knowing how your query looks like, I guess you need to add a secondary index with the attributes you are querying. Or, you may run aScan
instead of aQuery
. docs.aws.amazon.com/amazondynamodb/latest/developerguide/… -
kloddant about 3 years@SebaGra Thanks, yup, had to run a scan instead.
-
kloddant about 3 yearsApparently to fix this error, you can change the read-write capacity mode of the table from provisioned to on-demand.
-
LearningPath about 2 yearsPlease @SebaGra correct your syntax mistake: "by using the --expression-atribute-values" an additional t is needed on the attribute