我在aws服务上工作api网关,它对dynamodb执行BatchWriteItem操作。但我知道一个BatchWrite操作最多有25个put项限制。我是vtl的新手,我不知道如何处理超过25个放置项目的请求。我写下我目前的身体模板。
任何提示或帮助将不胜感激。感谢。
身体映射模板:
#set($inputRoot = $input.path('$'))
{
"RequestItems": {
"SensorDataTest": [
#foreach($elem in $inputRoot.sensorMessages)
{
"PutRequest":
{
"Item":
{
"GatewayID":
{
"N": "$inputRoot.gatewayMessage.gatewayID"
},
"SensorID": {
"N": "$elem.sensorID"
},
"SensorName": {
"S": "$elem.sensorName"
},
"ApplicationID": {
"N":"$elem.applicationID"
},
"NetworkID": {
"S":"$elem.networkID"
},
"DataMessageGUID": {
"S":"$elem.dataMessageGUID"
},
"MessageDate": {
"S":"$elem.messageDate"
},
"State": {
"N":"$elem.state"
},
"RawData": {
"S": "$elem.rawData"
},
"DataType": {
"S": "$elem.dataType"
},
"DataValue": {
"S": "$elem.dataValue"
},
"PlotValues": {
"S": "$elem.plotValues"
},
"PlotLabels": {
"S": "$elem.plotLabels"
},
"SignalStrength": {
"N":"$elem.signalStrength"
},
"BatteryLevel": {
"N": "$elem.batteryLevel"
},
"PendingChange": {
"S": "$elem.pendingChange"
}
}
}
}#if($foreach.hasNext),#end
#end
]
},
"ReturnConsumedCapacity": "TOTAL"
}
答案 0 :(得分:1)
无论您在速度模板中执行什么操作,API网关仍然只会调用AWS集成一次。按照设计,无法进行多个后端集成调用来处理单个API网关调用。 (虽然我们可能会考虑将来添加此功能。)
如果您需要放置超过25个项目,我建议您让客户循环浏览这些项目,并为每25个项目单独调用您的API。