Проблема шаблона сопоставления тела Dynamodb для шлюза Amazon Api для BatchWriteItem(vtl - язык шаблонов скорости)

Я работаю над API-шлюзом на сервисах aws, которые выполняют операцию BatchWriteItem для DynamoDB. Но я знаю, что для одной операции BatchWrite существует максимум 25 позиций. Я новичок в vtl и не знаю, как обрабатывать запросы, в которых более 25 предметов. Я записываю свой текущий шаблон тела.

Любые советы или помощь будут оценены. Благодарю.

Body Mapping Template:

#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"
}

1 ответ

Независимо от того, что вы делаете в своем шаблоне скорости, API Gateway по-прежнему будет вызывать интеграцию AWS только один раз. В принципе, не существует способа выполнить несколько внутренних вызовов интеграции для обработки одного вызова API-шлюза. (Хотя мы можем рассмотреть возможность добавления этой функции в будущем.)

Если вам нужно поместить более 25 элементов, я рекомендую, чтобы ваш клиент просматривал элементы и делал отдельный вызов вашего API для каждых 25 элементов.

Другие вопросы по тегам