2017-06-18 61 views
0

我试图让我的API-网关地图应用程序/ X WWW的形式,进行了urlencoded使用此解决方案,以JSON参数传递给AWS LAMBDA: How to pass a params from POST to AWS Lambda from Amazon API Gateway如何从POST从亚马逊API网关

但到目前为止,我的lambda成功触发了我的request.body始终为空。如果有人知道如何处理.net-core c#我真的很感谢洞察力。

这是我的无服务器lambda表达式是什么样子到目前为止,我收到关于request.body时间戳,但没有

public async Task<APIGatewayProxyResponse> Post(APIGatewayProxyRequest request, ILambdaContext context) 
    { 
     var webHook = new WebHookClient("https://{urlHiddenForObviousReasons}"); 
     var body = new BodyModel 
     { 
      Content = $"Trigger @ {DateTime.UtcNow}, {request.Body}" 
     }; 
     await webHook.PostMessage(body); 
     var response = new APIGatewayProxyResponse 
     { 
      StatusCode = (int)HttpStatusCode.OK, 
      Body = "Alert received.", 
      Headers = new Dictionary<string, string> { { "Content-Type", "text/plain" } } 
     }; 

     return response; 
    } 

请注意,如果我使用代理服务器集成,而不是形式的值传递,我想使用映射,所以我可以有两个客户端使用不同的post方法相同的API,并让lambda只解析json。以这种方式结束传递表单值的设置示例:key = 1 & steamid = 1 & notetitle = ARK-ALARM%3A + 06%2F17 +%40 + 16%3A24 + on +旧石器+方舟+ + + +岛%2C + ALARM + '基地' + IN + '的+隐+湖' +是+跳闸! &消息= ...

enter image description here

+1

您是否尝试过使用CW日志来调试API GW映射/处理?如果您在API GW控制台中使用“测试”功能,则可以看到具有完整日志记录输出的dryrun请求,以便您可以看到实际的原始请求正在对Lambda执行,并且还会在执行映射模板之前/之后看到请求主体。 –

回答

0

您需要添加一个Mapping Template。 例如:

{ 
    "name" : "$input.params('name')", 
    "body" : $input.json('$') 
} 

在POST方法的合并请求部分添加此。 AWS API Gateway Integration Request

一个很好的例子是here

为我的作品的另一种更为复杂的例子:

#set($allParams = $input.params()) 
{ 
"body-json" : $input.json('$'), 
"params" : { 
#foreach($type in $allParams.keySet()) 
    #set($params = $allParams.get($type)) 
"$type" : { 
    #foreach($paramName in $params.keySet()) 
    "$paramName" : "$util.escapeJavaScript($params.get($paramName))" 
     #if($foreach.hasNext),#end 
    #end 
} 
    #if($foreach.hasNext),#end 
#end 
} 
} 

,因为我已经习惯了的JavaScript和Python,我不能对C#代码发表评论,但它似乎罚款

+0

以及链接的例子是动态地做这个映射,但我会给你一个静态的例子。看看它是否有效。 – Lorien

+0

对不起,我花了一段时间接受你的答案。这就是我最终做的事,忘了回到这里。 – Lorien

+0

嘿,别担心,我感谢你回来:) – cameck