1

我正在使用一个简单的函数来保持同步我的 RDS 用户表和 Cognito

export async function main (event, context, callback) {

    try {
      let user, User

      User    = models.User

      console.log('before insert',new Date())  
      user = await User.create({
        name:           event.request.userAttributes.name,
        lastName:       event.request.userAttributes.family_name,
        email:          event.request.userAttributes.email,
        organizationId: event.request.userAttributes['custom:organizationId'],
        roleId:         event.request.userAttributes['custom:roleId']
      })

      console.log('after insert', new Date())
      callback(null, event)
      console.log('after callback',new Date())

    } catch (e) {
      console.error(e)
      callback(e, event)
    }
}

日志

根据日志,您可以看到此函数尊重 5 秒的执行时间,那么为什么永远不会结束呢?为什么 cognito 进行 3 次尝试?

4

1 回答 1

1

所以最后我发现context.callbackWaitsForEmptyEventLoop (--default true) 必须将它设置为 false 对于那些你希望 Lambda 函数在你调用回调后立即返回的情况,不管事件循环中发生了什么,就像我有我的数据库连接对象在一个全局变量中,所以这就是这种行为的原因

于 2019-11-18T23:57:00.687 回答