0

Ich arbeite an einem API-Gateway für aws-Dienste, die BatchWriteItem-Operation auf dynamodb ausführt. Aber ich weiß, dass es für einen BatchWrite-Vorgang ein Limit von max. 25 Positionen gibt. Ich bin neu in vtl und ich bin nicht sicher, wie mit Anfragen, die mehr als 25 Put-Elemente haben, umzugehen. Ich schreibe meine aktuelle Körpervorlage auf.Amazon Api Gateway Dynamodb Problem bei der Ausgabe von Body-Mappings für BatchWriteItem (vtl - vector vocal)

Alle Hinweise oder Hilfe wird geschätzt. Vielen Dank.

Body Mapping Vorlage:

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

Antwort

0

Egal, was Sie in Ihrer Geschwindigkeit Vorlage zu tun, API-Gateway wird nach wie vor nur die Integration AWS nennen einmal. Es ist nicht möglich, mehrere Back-End-Integrationsaufrufe gleichzeitig auszuführen, um einen einzelnen API-Gateway-Aufruf zu verarbeiten. (Auch wenn wir in Erwägung ziehen, diese Funktionalität in Zukunft hinzuzufügen.)

Wenn Sie mehr als 25 Elemente hinzufügen müssen, empfehle ich, dass Ihr Client die Elemente durchläuft und für jede 25 einen separaten Aufruf an Ihre API sendet Artikel.

+0

Ich habe bereits eine Lambda-Funktion, um damit umzugehen. Ich wollte nur direkt zu Dynamodb schreiben, um zusätzliche Kosten zu vermeiden. Ich werde jetzt mit Lambda gehen. Vielen Dank. –

Verwandte Themen