tl; dr希望对AWS API网关的API输出进行排序
我有一个dynamoDB表' NP'用钥匙' id'和GSI' atype-index'。没有排序键。
另外,我有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"对上述输出进行排序?例如?
答案 0 :(得分:1)
您所描述的正是排序键将完成的任务,假设您使用的是查询API(而不是扫描)。
如果添加排序键,则在查询给定分区键时,将根据排序键对结果进行排序。
编辑:只是为了澄清,没有办法在映射模板中对API GW层进行排序。
如果您的用例的开销是值得的,您可以在API GW和DDB之间放置一个Lambda函数。否则,最好只在客户端进行排序。