how to return items in a dynamodb on aws-cli

51,484

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

Share:
51,484
beejm
Author by

beejm

Full Stack Developer | Philippines.

Updated on July 08, 2022

Comments

  • beejm
    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 or key-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
    KTM almost 4 years
    Thanks a ton! I was forgot to escape the query params :)
  • D Malan
    D Malan over 3 years
    If 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
    kloddant about 3 years
    Unknown options: test}}', {S:
  • kloddant
    kloddant about 3 years
    It 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
    kloddant about 3 years
    The first query here yields the error, "An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: id".
  • SebaGra
    SebaGra about 3 years
    Hey @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 a Scan instead of a Query. docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
  • kloddant
    kloddant about 3 years
    @SebaGra Thanks, yup, had to run a scan instead.
  • kloddant
    kloddant about 3 years
    Apparently to fix this error, you can change the read-write capacity mode of the table from provisioned to on-demand.
  • LearningPath
    LearningPath about 2 years
    Please @SebaGra correct your syntax mistake: "by using the --expression-atribute-values" an additional t is needed on the attribute