【发布时间】:2017-05-31 12:40:44
【问题描述】:
我的问题如下:
abc lambda 触发另一个 lambda(named : khjj) 对我来说一切都很好,唯一的问题是在 cloudwatch 日志中,甚至在本地如果我运行 abc lambda 函数来触发 khjj lambda,我在请求后收到套接字挂断错误。
我的 abc lambda 从 dynamo db 表中读取一个数据并逐行触发 khjj 函数,abc lambda 中的代码是:
var sendData = module.exports = {
data : function(){
return new Promise(function (resolve, reject) {
arrayData = []
// here table.get is a function in the same file for getting the
// data from the dynamo db table
table.get("Table1").then(function(response){
_.forEach(response, function(data){
var obj = {};
obj.value1 = data.value1;
obj.value2 = data.value2;
obj.value3 = data.value3;
obj.value4 = data.value4;
obj.value5 = data.value5;
obj.value6 = data.value6;
obj.value7 = data.value7;
arrayData.push(obj)
})
Promise.all(arrayData).then(function(objs){
async.each(objs, function(data, callback){
request({
headers: {'Content-Type':'application/json'},
url : // here I used lambda khjj url here,
method: 'POST',
body: company,
json: true
}, function (err, res, body) {
if(!_.isNil(err)){
console.log(err);
console.log('error in triggering')
} else {
// tried this callback as well to stop that error of socket hangup
callback(null, 'success')
}
})
}, function(err){
console.log()
})
}, function(err){
console.log(err)
})
}, function(err){
console.log('error in getting data from table :', err)
})
resolve(true);
})
}
现在上面的 lambda 函数触发了 "khjj" lambda,所以我在 "khjj" lambda 函数中使用了 awsServerlessExpress 函数,所以它在代码中获取请求:
app.post('/called/by/abc/lambda', function(req,
resp){
check.message(request).then(function(response){
resp.write('success')
resp.end();
}, function(err){
console.log(err)
resp.end();
})
})
上面的 lambda 即 khjj 出现了套接字错误,搜索了整个网络甚至 stackoverflow 和 aws 论坛,但没有得到任何解决方案
甚至考虑过这个网站:https://gregjs.com/javascript/2015/how-to-scrape-the-web-gently-with-node-js/
请任何帮助都可以。谢谢。
CloudWatch 错误:
2017-05-25T13:30:15.043Z 009c3110-414e-11e7-99b5-b3bd2686fba3
{ Error: socket hang up
at createHangUpError (_http_client.js:253:15)
at Socket.socketOnEnd (_http_client.js:345:23)
at emitNone (events.js:91:20)
at Socket.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickDomainCallback
(internal/process/next_tick.js:128:9) code: 'ECONNRESET' }
【问题讨论】:
-
能否将堆栈跟踪记录到 cloudwatch 并在此处提供?
-
是的,我已经更新了日志错误。
标签: node.js express aws-lambda