对AWS API网关输出进行排序/排序

时间:2017-05-29 22:26:44

标签: amazon-web-services amazon-dynamodb aws-api-gateway

tl; dr希望对AWS API网关的API输出进行排序

我有一个dynamoDB表' NP'用钥匙' id'和GSI' atype-in​​dex'。没有排序键。

另外,我有API网关映射模板

{
    "TableName": "NP",
    "IndexName": "atype-index",
    "KeyConditionExpression": "atype = :v1",
    "ExpressionAttributeValues": {
        ":v1": {
            "S": "$input.params('atype')"
        }
    }
}

映射模板将使用与指定字符串匹配的GSI键提取表中的所有值。但是,值没有按特定顺序提取,例如,API可能是:

{
  "Count": 3,
  "Items": [
    {
      "apiUrl": {
        "S": “ee”
      },
      "webTitle": {
        "S": “dd”
      },
      "atype": {
        "S": “type”
      },
      "id": {
        "S": "1a"
       }
     },
    {
      "apiUrl": {
        "S": “dd”
      },
      "webTitle": {
        "S": “cc”
      },
      "atype": {
        "S": "atype"
      },
      "id": {
        "S": “3a”
       }
     },
    {
      "apiUrl": {
        "S": “cc”
      },
      "webTitle": {
        "S": “bb”
      },
      "atype": {
        "S": "atype"
      },
      "id": {
        "S": “2a”
       }
     }
  ],
  "ScannedCount": 3
}

如何通过键" apiURL"对上述输出进行排序?例如?

1 个答案:

答案 0 :(得分:1)

您所描述的正是排序键将完成的任务,假设您使用的是查询API(而不是扫描)。

如果添加排序键,则在查询给定分区键时,将根据排序键对结果进行排序。

编辑:只是为了澄清,没有办法在映射模板中对API GW层进行排序。

如果您的用例的开销是值得的,您可以在API GW和DDB之间放置一个Lambda函数。否则,最好只在客户端进行排序。