13
votes

I've a Dynamo Db table with following

{
  "primary_key": {
    "S": "series"
  },
  "sort_key": {
    "S": "type-of-brokers"
  },
  "title": {
    "S": "Types Of Brokers"
}
,
{
  "primary_key": {
    "S": "series"
  },
  "sort_key": {
    "S": "type-of-brokers-2"
  },
  "title": {
    "S": "Types Of Brokers-2"
}

Following this I've implemented application/json body mapping template:

{
    "TableName": "table_name",
    "Key" :{
        "primary_key" :{
            "S": "series"
        },
        "sort_key" : {
            "S": "type-of-brokers"
        }
    }
}

It returns one item that matched primary and sort key!

Now I want to return all the matched primary_key items i.e. without sort_key

How do I achieve that? with API gateway body mapping template?

Also, can api return common json rather than "S" kind, here it specify attributes , can it be done by not hard coding in integration response

1
can api return common json rather than "S" kind ? like the Text view in console for edit Item with DynamoDB JSON checkbox unchecked? - Garvit Jain
If you're using the nodejs sdk you can use the DocumentClient to abstract away the AttributeValues from the dynamodb response. Other sdks might have similar Clients/abstractions. AFAIK the api itself will always include the attributevalues by design. - Jacob Lange
I'm avoiding AWS Lambda The values are fetched by API Gateway using Body Mapping Templates, mapping can be done to response too. but I don't want to hard code for each response. - Garvit Jain

1 Answers

21
votes

The getitem API requires both hash and sort key. However, you can use query api with only hash only.

Query API

Use the KeyConditionExpression parameter to provide a specific value for the partition key. The Query operation will return all of the items from the table or index with that partition key value. You can optionally narrow the scope of the Query operation by specifying a sort key value and a comparison operator in KeyConditionExpression. To further refine the Query results, you can optionally provide a FilterExpression. A FilterExpression determines which items within the results should be returned to you. All of the other results are discarded.