我正在尝试使用主哈希和排序组合复合从AWS DynamoDB检索条目列表。
我们的想法是检索与给定查询字符串值匹配的列表,该值是排序键的一部分,例如,排序键可以是 a_b_c , a_d_e , a_f_g ,我需要在其中输入 b 的所有条目。
我要求客户端提供三个查询字符串,并将它们连接到AWS API网关的集成请求部分的正文映射模板中。
我正在网上搜索完成同样的事情但是找不到解决方案的成功之处。
如果有人可以帮助我,这会节省很多时间。
以下是我的方法。
{
"TableName": "$util.escapeJavaScript("$context.stage\_TableName").replaceAll("\\","")",
"FilterExpression": "identityId = :v1 and aWithbWithc = :v2 + _ + :v3 + _ + :v4",
"ExpressionAttributeValues": {
":v1": {
"S": "$context.identity.cognitoIdentityId"
},
":v2" : {
"S" : "$input.params('a')"
},
":v3" : {
"S" : "$input.params('b')"
},
":v4" : {
"S" : "$input.params('c')"
}
}
}
答案 0 :(得分:0)
我找到了解决方案并将其放在这里。
{
"TableName": "$util.escapeJavaScript("$context.stage\_TableName").replaceAll("\\","")",
"FilterExpression": "identityId = :v1 and aWithbWithc = :v2",
"ExpressionAttributeValues": {
":v1": {
"S": "$context.identity.cognitoIdentityId"
},
":v2" : {
"S" : "$util.escapeJavaScript($input.params('a'))__$util.escapeJavaScript($input.params('b'))__$util.escapeJavaScript($input.params('c'))"
}
}
}
答案 1 :(得分:0)
你可以有类似的东西
{
#set($tableNameSuffix = "_TableName")
"TableName": "$stageVariables.environment$tableNameSuffix",
"ConsistentRead": true,
"KeyConditionExpression": "XXX = :val",
"ExpressionAttributeValues": {
":val": {
"S": "$method.request.path.xxx"
}
}
}