我试图通过将代码保留在处理程序之外来利用Lambda中的数据库连接重用。
例如-类似于:
import dbconnection from './connection'
const handler(event, context, callback){
//use dbconnection
}
问题在于,在进行查找以查看它们应连接的位置之前,我不决定要连接到哪个数据库。在我的特定情况下,我在查询参数中有'customer = foo',然后可以看到foo应该连接到 database1 。
所以我需要做的是这样的:
const dbconnection = require('./connection)('database1')
现在,我需要在每个处理程序方法中都这样做,这很昂贵。
是否可以通过某种方式拉出查询参数,查找数据库并进行设置/在Lambda执行上下文中全局进行切换?
我已经尝试过:
import dbconnection from './connection'
const handler(event, context, callback){
const client = dbconnection.setDatabase('database1')
}
....
./connection.js
setDatabase(database) {
if(this.currentDatabase !== database) {
// connect to different database
this.currentDatabase = database;
}
}
一切都在sls offline
本地工作,但不适用于AWS Lambda执行上下文。有什么想法吗?
答案 0 :(得分:0)
您可以对它进行硬编码(或通过环境变量提供)。如果可以,则将其从处理程序中拉出,并且不会每次都执行。如前所述,如果您做不到,那么您想要做的就是使Lambda成为有状态的。 Lambda被设计为无状态的,AWS有意不公开有关基础容器的特定信息,因此您不会像现在尝试做的那样开始做某事-向它引入状态。