使用AWS API Gateway和Lambda从multipart / form-data获取非文件正文

时间:2015-11-29 09:55:16

标签: forms amazon-web-services aws-lambda aws-api-gateway

我正在尝试通过API网关从multipart/form-data POST获取表单数据到我的ASW Lambda Web服务。

HTTP POST具有Content-Type“multipart / form-data”和URL编码的正文。文件数据也在这篇文章中发送(因此我认为是多部分)。

Web服务需要与第三方服务集成,因此更改POST的格式实际上不是一种选择。

我已经看到这个thread谈论将URL编码数据转换为JSON对象以便在Lambda中使用,但这并不能解决问题。

我也尝试过设置集成请求 - >内容类型multipart/form-data映射模板输入直通。这也没有帮助。

我确实遇到过使用multipart/form-data上传文件的另一个question,但由于我对该文件不感兴趣,只是正文,这个答案没有帮助。

下面通过runco​​pe找到截获的截图(对不起)。

Post details

1 个答案:

答案 0 :(得分:5)

如果目标是使用Lambda,则需要将有效的JSON传递给该函数。目前,Api Gateway内部的JSON-ify数据无法以非JSON数据形式出现。

我们的短期修复(在我们的待办事项上)是在映射模板中提供一个变量来获取请求的原始输入。这样你就可以使用如下模板进行简单的JSON转换:

{
    "body" : "$input.body"
}

或类似的东西。

查看地图模板参考以获取更多信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

编辑4/7 - 功能已发布为$ input.body