首页 > 编程语言 > 详细

在AWS Lambda函数中遇到“LAMBDA_RUNTIME Failed to post handler success response. Http response code: 403.”错误,发现Promise.all的参数不能是嵌套数组

时间:2020-07-06 13:35:29      阅读:63      评论:0      收藏:0      [点我收藏+]

在lambda函数最后的return语句是这样的:

1 return Promise.all(  
2   _.map(results, (temp, assetID) => { 
3     _.map(temp, (measurements, time) => 
4       sdk.pushMeasurements({ assetID, timestamp: time, measurements })  
5     )
6   })
7 )

首先这里的语法问题是第一个map函数加了大括号但没有return,参考我的博文https://www.cnblogs.com/mrlonely2018/p/13254007.html

接着看一下results的结构,是一个多层嵌套的json对象:

技术分享图片

技术分享图片

Promise.all 中要做的就是把这个嵌套json对象展开,推送到数据库中。

而Lambda中出现“LAMBDA_RUNTIME Failed to post handler success response. Http response code: 403.”的可能原因是:
以上代码返回了一个Promise对象的数组的数组,而lambda的执行器试图先将其字符串化(stringify),然后再返回。而这串东西太大,最终导致403 错误。

另外,以上代码在Promise.all 中 返回的参数是一个嵌套的数组(nested array),而Promise.all 应该接收一个iterable作为参数。

解决方法:

  1. 去除第一个map函数的大括号
  2. 将第一个map改为flatmap

附lodash参考文档:

https://lodash.com/docs/4.17.15#flatMap

https://lodash.com/docs/4.17.15#map

在AWS Lambda函数中遇到“LAMBDA_RUNTIME Failed to post handler success response. Http response code: 403.”错误,发现Promise.all的参数不能是嵌套数组

原文:https://www.cnblogs.com/mrlonely2018/p/13254271.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!