AWS Lambda 无服务器端点退出而不执行函数
AWS Lambda Serverless endpoint exits without executing function
我们的无服务器 api 中有一个 POST 端点,它侦听 Magento 2 集成激活回调并处理有效负载。本次回调请求的Content-Type为application/x-www-form-urlencoded
。但是,当我们尝试获取回调时,lambda 函数立即结束执行,跳过整个函数 body。我们在 Cloudwatch 日志中看到的仅此而已。甚至没有打印 console.log
s。 (端点只打印一个字符串到控制台。没有异步操作到位。但这个问题仍然存在)
2020-12-12T12:24:47.012+05:30 START RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b Version: $LATEST
2020-12-12T12:24:47.050+05:30 END RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b
2020-12-12T12:24:47.050+05:30 REPORT RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b Duration: 37.83 ms Billed Duration: 38 ms Memory Size: 128 MB Max Memory Used: 109 MB Init Duration: 893.79 ms
当我们尝试使用 Content-Type 从 POSTMAN 访问相同的端点时:application/json,端点按预期工作。
因此我们认为问题可能出在 Content-Type
header 并且在某处读到添加请求映射模板化可以解决这个问题。因此,我们甚至不时在lambda方法的集成请求中添加内容类型application/x-www-form-urlencoded
的映射模板,内容如下。但是很遗憾我们的问题没有得到解决
"{ "body": "$util.base64Decode($input.body)" }"
{
"formparams" : $input.json('$')
}
{
"body" : $input.json('$')
}
我的问题是:我们如何设置端点来打印 POST 请求负载,防止它立即退出?
一周以来,我们一直在寻找解决这个问题的方法。如果有人可以输入他们有用的、有价值的建议来解决这个问题,那将是一个很大的帮助。提前致谢
由于 Magento 2 集成激活回调的 Content-Type
是 application/x-www-form-urlencoded
,因此 POST 请求的 lambda 事件是这样的。
console.log(event) -> {body: "a=var&b=other_var&c=another_var"}
端点甚至没有打印任何东西,因为我输入了 console.log(JSON.parse(event. body))
。这会导致 JSON 解析错误,端点会立即完成执行。
当我开始解析查询参数事件主体而不是JSON.parse()
时,问题就解决了。
我们的无服务器 api 中有一个 POST 端点,它侦听 Magento 2 集成激活回调并处理有效负载。本次回调请求的Content-Type为application/x-www-form-urlencoded
。但是,当我们尝试获取回调时,lambda 函数立即结束执行,跳过整个函数 body。我们在 Cloudwatch 日志中看到的仅此而已。甚至没有打印 console.log
s。 (端点只打印一个字符串到控制台。没有异步操作到位。但这个问题仍然存在)
2020-12-12T12:24:47.012+05:30 START RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b Version: $LATEST
2020-12-12T12:24:47.050+05:30 END RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b
2020-12-12T12:24:47.050+05:30 REPORT RequestId: 4afba03d-54ef-4b5e-bd44-157b0b7a9f9b Duration: 37.83 ms Billed Duration: 38 ms Memory Size: 128 MB Max Memory Used: 109 MB Init Duration: 893.79 ms
当我们尝试使用 Content-Type 从 POSTMAN 访问相同的端点时:application/json,端点按预期工作。
因此我们认为问题可能出在 Content-Type
header 并且在某处读到添加请求映射模板化可以解决这个问题。因此,我们甚至不时在lambda方法的集成请求中添加内容类型application/x-www-form-urlencoded
的映射模板,内容如下。但是很遗憾我们的问题没有得到解决
"{ "body": "$util.base64Decode($input.body)" }"
{
"formparams" : $input.json('$')
}
{
"body" : $input.json('$')
}
我的问题是:我们如何设置端点来打印 POST 请求负载,防止它立即退出? 一周以来,我们一直在寻找解决这个问题的方法。如果有人可以输入他们有用的、有价值的建议来解决这个问题,那将是一个很大的帮助。提前致谢
由于 Magento 2 集成激活回调的 Content-Type
是 application/x-www-form-urlencoded
,因此 POST 请求的 lambda 事件是这样的。
console.log(event) -> {body: "a=var&b=other_var&c=another_var"}
端点甚至没有打印任何东西,因为我输入了 console.log(JSON.parse(event. body))
。这会导致 JSON 解析错误,端点会立即完成执行。
当我开始解析查询参数事件主体而不是JSON.parse()
时,问题就解决了。