【问题标题】:Amazon Api Gateway Dynamodb Body mapping template issue for BatchWriteItem(vtl - velocity template language)BatchWriteItem 的 Amazon Api Gateway Dynamodb Body 映射模板问题(vtl - 速度模板语言)
【发布时间】:2017-08-05 20:08:06
【问题描述】:

我正在使用 aws 服务上的 api 网关,它对 dynamodb 执行 BatchWriteItem 操作。但我知道一个 BatchWrite 操作最多有 25 个放置项限制。我是 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"
}

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-api-gateway vtl


    【解决方案1】:

    无论您在速度模板中执行什么操作,API Gateway 仍然只会调用一次 AWS 集成。按照设计,无法执行多个后端集成调用来处理单个 API 网关调用。 (尽管我们可能会考虑在未来添加此功能。)

    如果您需要放置超过 25 个项目,我建议您让您的客户端循环遍历这些项目,并为每 25 个项目单独调用您的 API。

    【讨论】:

    • 我已经有一个 lambda 函数来处理这个问题。我只是想直接写信给 dynamodb 以消除额外的成本。我现在将使用 lambda。谢谢。
    猜你喜欢
    • 2020-09-28
    • 2022-12-06
    • 1970-01-01
    • 2020-09-05
    • 2017-11-30
    • 1970-01-01
    • 2018-12-04
    • 2013-03-02
    • 2018-01-20
    相关资源
    最近更新 更多