我正在使用一个简单的函数来保持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次尝试?
所以最后我发现context.callbackWaitsForEmptyEventLoop(--default true(必须设置为false,对于那些希望Lambda函数在调用回调后立即返回的情况,无论事件循环中发生了什么,因为我的db连接对象在全局变量中,所以这就是行为的原因