Это поздно, но в случае, если кто-то ищет:
Архивирование папку проекта вместо содержание в папке проекта может вызвать это. Зашифрованная папка при извлечении не должна содержать папку с файлами лямбда в ней, но должна иметь файл index.js и папку node_modules на корневом уровне.
Рабочий пример функции лямбда (используя последние блестящие firebase материал * Вздох *):
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": "[email protected]",
"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, т.е. функция набора, похоже, создает слушатель, который удерживает лямбда-функцию открытой, несмотря на возвращение правильных данных.
Обновление: вызов firebase.database(). GoOffline() исправляет ошибку тайм-аута функции лямбда, которую я испытывал.
Обычные предостережения о безопасности, которые не проверяются или не подходят, а также возможности остановки пространства и времени с помощью этого применения.
Я работаю на моей локальной машине в данный момент (в Java Script), но моя функция также застряла в конце. goOffline() не работает в моем случае. Как вы это исправили? –
Я работаю на своей локальной машине в данный момент (в скрипте java), но моя функция также застряла в конце. goOffline() не работает в моем случае. Как вы это исправили? –
@ Ответ josiah-choi ниже решил проблему для меня - см. 'Context.callbackWaitsForEmptyEventLoop = false' – dsl101