API网关暴露DynamoDB(需要复杂映射模板或Lamdba函数吗?)

时间:2017-06-22 13:47:54

标签: api amazon-web-services gateway

我通过AWS API Gateway公开我的DDB。我有它工作,但当我通过我的“PUT”时,它要求我在身体请求中包含我的DDB中的每个字段。有些客户可能只想在我的DDB中POST 10个10个字段。这可以作为POST或PATCH完成吗?如果是这样,我的映射模板对于这些是什么样的?

第二:我想为DDB中的每个条目添加一个自动生成的order_number。所以现在每个PUT或POST都有一个唯一的order_number。因此,我的主键将是一个变量,辅助键将是客户sku编号,反之亦然。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

正文模板:我仍然需要它来生成" order_number"    自动为每个新条目。

#set($inputSep = $input.path('$')) 
#set($thisLoop = 
'{"CustomerNm":"1","ShipDate":"2","Shipping":"3","commentId":"4"}')
#set($myPlaces = $util.parseJson($thisLoop))
#set($allKeys = '')
#set($myVals = '"')
{ 
"TableName": "BRPI",
"Key": {
    "CustomerID": {
        "S": "$input.path('$.CustomerID')"
    }
},
#foreach($type in $inputSep.keySet())
#if($type == "CustomerID")
#else
    #set($thisPlace = $myPlaces.get($type))
    #set($params = $inputSep.get($type))
    #set($thisKey = "$type" + " = :val" + "$thisPlace")
    #set($thisPath = "$params")
    #if($foreach.hasNext)
        #set($myComma = ",")
        #set($myReturn = '"')
    #else
        #set($myComma = "")
        #set($myReturn = "")
    #end
    #set($allKeys = "$allKeys" + "$thisKey" + "$myComma")
    #set($myVals = "$myVals" + ":val" + "$thisPlace" + '": {"S": "' + 
"$thisPath" + '"}' + "$myComma" + "$myReturn")
#end
#end
"UpdateExpression": "SET $allKeys",
"ExpressionAttributeValues": {
    $myVals
},
"ReturnValues":"UPDATED_NEW"
}