【问题标题】:Using Firebase from AWS Lambda results in Task timed out从 AWS Lambda 使用 Firebase 导致任务超时
【发布时间】:2019-01-08 07:58:34
【问题描述】:

我正在使用 Lambda 函数创建具有 Firebase 身份验证的用户,然后将它们保存在我自己的数据库中。

var firebase = require('firebase-admin')
const serviceAccount = require('./firebase.json')
firebase.initializeApp({
    credential: firebase.credential.cert(serviceAccount),
    databaseURL: 'https://*****.firebaseio.com'
})

exports.handler = function(event, context, callback) {

    const {email, password, name, ...} = event

    firebase.auth().createUser({
        email,
        emailVerified: false,
        password,
        displayName: name,
        disabled: false
    })
    .then(firebaseResult => {
        const {uid} = firebaseResult
        return saveUserAtDatabase({email, name, ...})
    })
    .then(result => {
        callback(null, result)
    })
}

用户是在 Firebase 和我的数据库中创建的,但是当我在 AWS Lambda 上运行它时,它会抛出这个错误:

{"errorMessage":"2019-01-07T21:25:49.095Z c...e9 Task timed out after 6.01 seconds"}

无论我从函数中增加多少时间或设置更高的内存,它仍然会抛出相同的错误。

【问题讨论】:

    标签: node.js firebase aws-lambda firebase-authentication


    【解决方案1】:

    我解决了设置context.callbackWaitsForEmptyEventLoop=false的问题。

    这是因为callback 等待事件循环为空,而使用 firebase.auth().createUser() 不会发生这种情况。这里记录了context.callbackWaitsForEmptyEventLoop 选项http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html

    当此属性设置为 false 时,Lambda 会冻结容器,但不会在您调用 callback 时清除事件循环。

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 2019-11-06
      • 2021-10-17
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 2018-08-08
      • 2020-10-02
      相关资源
      最近更新 更多