【发布时间】:2020-04-16 20:25:27
【问题描述】:
我有一个与 API Gateway 集成的 Lambda 函数,并且堆栈被部署为云形成模板。当我尝试在 AWS Web 控制台中测试端点时,我得到了正确的响应,但是当我尝试调用 API 的部署版本时,我得到了那个错误。
"message": "Could not parse request body into json: Unrecognized token ....etc"
我在集成请求中尝试了这种映射{ "body" : $input.json('$') },但没有奏效。
这是我尝试使用 POSTMAN 发送的 JSON
{
"description": "test description",
"status": "test status"
}
并且请求有标头:Content-Type: application/json
这里是 POSTMAN 请求正文和标头的屏幕截图,以及来自 API 的响应:
有什么解决方案吗?
更新:
我在集成请求级别放置了一个映射模板,如下所示:
{
"body-json" : $input.json('$')
}
并更新了 lambda 函数以记录即将到来的请求,然后发出 2 个请求:
第一个:来自 API Gateway 测试 Web 控制台:
我在 cloudwatch 日志中发现以下内容:
INFO {
body: {
description: 'test',
projectId: 23,
action: 'test',
entity: 'test',
startDate: '01-01-2020',
endDate: '01-01-2020'
}
}
第二个:来自POSTMAN:
我在 cloudwatch 日志中发现以下内容:
INFO {
body: 'ewogICAgImRlc2NyaXB0aW9uIjogInRlc3QiLAogICAgInByb2plY3RJZCI6IDIzLAogICAgImFjdGlvbiI6ICJ0ZXN0IiwKICAgICJlbnRpdHkiOiAidGVzdCIsCiAgICAic3RhcnREYXRlIjogIjAxLTAxLTIwMjAiLAogICAgImVuZERhdGUiOiAiMDEtMDEtMjAyMCIKfQ=='
}
这表明在使用 POSTMAN 发出请求的情况下,JSON 有效负载会自动进行字符串化。什么会导致这样的事情?以及如何处理?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
能否也分享一下CloudFormation模板的yaml/json相关的sn-p?
标签: amazon-web-services aws-lambda amazon-cloudformation aws-api-gateway