【发布时间】:2018-01-16 17:37:28
【问题描述】:
我一直在做一些研究,但找不到关于在 Lambda 函数中使用 Knex JS 的好答案:
How do I use Knex with AWS Lambda? #1875
Serverless URL Shortener with Apex and AWS Lambda
Use Promise.all() in AWS lambda
这是我的 index.js 中的内容:
const knex = require('knex')({
client: 'pg',
connection: {...},
});
exports.handler = (event, context, callback) => {
console.log('event received: ', event);
console.log('knex connection: ', knex);
knex('goals')
.then((goals) => {
console.log('received goals: ', goals);
knex.client.destroy();
return callback(null, goals);
})
.catch((err) => {
console.log('error occurred: ', err);
knex.client.destroy();
return callback(err);
});
};
我能够在本地很好地连接和执行我的代码,但是在将其部署到 AWS 时遇到了一个有趣的错误——第一次调用总是成功的,但之后的任何事情都失败了。我认为这与 knex 客户端被破坏有关,但随后又试图在下一次调用时再次使用。如果我重新上传我的 index.js,它会恢复为一个呼叫工作,然后失败。
我相信这可以使用 Promise 以某种方式解决,但这是我第一次使用 Lambda,所以我不熟悉它如何在后续调用中管理与 RDS 的连接。提前感谢您的任何建议!
【问题讨论】:
标签: postgresql aws-lambda knex.js