我在aws lambda中调用axios post方法。大多数时候lambda并不返回任何结果。
START RequestId:ac 92 d268-d212- 4 b80-a06 c-927922 fcf 1d 5版本:$LATEST END RequestId:AC92D268-D212-4B80-A06C-927922FCF1D5
但有时lambda返回预期的结果。看起来lambda并没有等待axios完成。下面是Lambda代码。
var axios = require('axios')
exports.handler = async (event, context,callback) => {
axios.post('https://example.com/testapi/api.asmx/GetNames', {})
.then((res) => {
console.log(JSON.stringify(res.data,null,2))
callback(null,'success');
})
.catch((error) => {
console.error(error)
callback(null,'error');
})
};
2条答案
按热度按时间66bbxpm51#
处理程序是
async
,这意味着它将异步运行并返回Promise
。这意味着你的函数在你的代码实际运行之前就被终止了。由于
axios
已经可以与Promises一起使用,并且您的方法已经是async
,因此您不需要更改太多。这将解决问题:如果你想了解更多关于async/await的信息,你可以这样做。
yhxst69z2#
我有一个类似的问题,我在Lambda中使用Axios进行第三方API调用,在花了几乎一天的时间注意到我的lambda有6秒的默认超时。有时候,来自API的响应时间超过6秒,导致502响应。