Node.js AWS Lambda在返回调用或超时之前完成

Node.js AWS Lambda在返回调用或超时之前完成,node.js,amazon-web-services,aws-lambda,async-await,amazon-neptune,Node.js,Amazon Web Services,Aws Lambda,Async Await,Amazon Neptune,我只见过一次,但我想了解它背后的原因 我有一个用nodeJS编写的AWS lambda函数,它只是将顶点添加到AWS neptune 这是相关代码 module.exports.userSignedUp = (event, context, callback) => { console.log('Event: ', JSON.stringify(event)) console.log('context: ', context) context.callbackWaitsForE

我只见过一次,但我想了解它背后的原因

我有一个用nodeJS编写的AWS lambda函数,它只是将顶点添加到AWS neptune

这是相关代码

module.exports.userSignedUp = (event, context, callback) => {
  console.log('Event: ', JSON.stringify(event))
  console.log('context: ', context)
  context.callbackWaitsForEmptyEventLoop = false
  var dataTmp = JSON.parse(event.Records[0].Sns.Message)
  var errorData = {}
  var logData = {}
  var id

  var now = moment()  

  if (!dataTmp) {
    id = shortid.getShortId()
    
  } else {
    console.log('dataTmp: ', dataTmp)
    id = dataTmp.dupId    
    updateDoc(dataTmp, callback, logData, errorData)
  }
}

async function updateDoc (dataTmp, callback, logData, errorData) {
  try {
    console.log('inside updateDoc function')
    console.log('dc', dc)
    console.log('g', g)
    var userAdded = await g.addV('user').property('userId', dataTmp.userId).property('firstName', dataTmp.firstName).next()
    console.log('userAdded', userAdded)
    return callback(null)
  } catch (e) {
    console.log('error', e)        
    return callback(null)
  }
}
此功能的超时设置为20秒。 大多数情况下,该功能工作正常,并在11到50毫秒内返回

这一次,我看到函数在打印第三条console.log语句后停止执行。起初,我认为,lambda可能在等待海王星返回(wait语句),但在这种情况下,lambda应该超时并再次重试

这是cloudwatch的输出

请注意,在最后一个console.log之后,执行结束

INFO    g GraphTraversalSource { [+5ms]
  graph: Graph {},
  traversalStrategies: TraversalStrategies { strategies: [ [RemoteStrategy] ] },
  bytecode: Bytecode { sourceInstructions: [], stepInstructions: [] },
  graphTraversalSourceClass: [Function: GraphTraversalSource],
  graphTraversalClass: [Function: GraphTraversal]
}
REPORT  Duration: 42.51 ms  Billed Duration: 100 ms Memory Size: 1024 MB    Max Memory Used: 103 MB  [+46ms]
lambda的通常输出如下所示

g GraphTraversalSource { [+4ms]
  graph: Graph {},
  traversalStrategies: TraversalStrategies { strategies: [ [RemoteStrategy] ] },
  bytecode: Bytecode { sourceInstructions: [], stepInstructions: [] },
  graphTraversalSourceClass: [Function: GraphTraversalSource],
  graphTraversalClass: [Function: GraphTraversal]
}
2 hours ago INFO    userAdded { [+46ms]
  value: Vertex {
    id: '9cb979cb-427e-97d2-f265-fee7b8b94780',
    label: 'user',
    properties: undefined
  },
  done: false
}
REPORT  Duration: 43.74 ms  Billed Duration: 100 ms Memory Size: 1024 MB    Max Memory Used: 103 MB  [+47ms]
关于这里可能发生的事情以及为什么lambda会在超时之前返回的任何想法


感谢

可能是由于Lambda未能将日志发送到CloudWatch造成的。还要检查指标,看看当时是否出现了函数错误?它再次发生,我看不出有错误。您能否尝试添加X射线跟踪以了解不同请求的情况?这可能会提供一些线索。可能是由于Lambda未能将日志交付给CloudWatch造成的。还要检查指标,看看当时是否出现了函数错误?它再次发生,我看不出有错误。您能否尝试添加X射线跟踪以了解不同请求的情况?它可以提供一些线索。