这已经晚了,但万一有人在看:
压缩您的项目文件夹而不是项目文件夹的 contents 可能会导致此问题。解压后的压缩文件夹不应包含包含 lambda 文件的文件夹,而应在根级别包含 index.js 文件和 node_modules 文件夹。
一个 lambda 函数的工作示例是(使用最新闪亮的 firebase 东西 *sigh*):
var firebase = require('firebase');
// Your service account details
var credentials = {
"type": "service_account",
"project_id": "project-123451234512345123",
"private_key_id": "my1private2key3id",
"private_key": "-----BEGIN PRIVATE KEY-----InsertKeyHere-----END PRIVATE KEY-----\n",
"client_email": "projectname@project-123451234512345123.iam.gserviceaccount.com",
"client_id": "1111222223333344444",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/projectname%40project-123451234512345123.iam.gserviceaccount.com"
};
firebase.initializeApp({
serviceAccount: credentials,
databaseURL: "https://project-123451234512345123.firebaseio.com"
});
exports.handler = function (event, context, callback) {
// I use some data passed in from AWS API Gateway:
if (!event.firebaseUid) {
callback('Missing param for id');
}
firebase.database().ref().child('users').child(firebaseUid).child('at').set(newTokens.access_token).then(function (data) {
console.log('Firebase data: ', data);
firebase.database().goOffline();
callback(null, 'Firebase data: ', data);
}).catch(function (error) {
callback('Database set error ' + error);
});
};
现在要注意了。我经历过这种情况,即使在 firebase 回调发生后,lambda 函数也会超时,即。 set 函数似乎创建了一个侦听器,该侦听器使 lambda 函数保持打开状态,尽管返回了正确的数据。
更新:调用 firebase.database().goOffline() 修复了我遇到的 Lambda 函数超时问题。
关于未验证或不适当的安全性的常见警告,以及使用此方法暂停空间和时间的可能性。