AWS LAMBDA动态DB交换Singelton(节点)
我试图利用数据库连接复用的LAMBDA,通过保持代码的处理程序之外。
例如 - 是这样的:
import dbconnection from './connection'
const handler(event, context, callback){
//use dbconnection
}
问题是,我不决定什么连接到数据库,直到我做了查找,看看它们应该被连接。在我的我有“客户=富”的查询参数的具体情况,然后我可以看看地看到,FOO应该连接到数据库1。
因此,我需要做的是这样的:
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执行上下文工作。思考?
您可以硬编码(或通过环境变量提供的话)与否。如果可以的话,然后将其拉出的再处理每一次都不会被执行。如果你不能,因为你所提到的,那么你正在尝试做的是使拉姆达状态。 LAMBDA被设计为无状态和AWS故意不公开有关基础容器的具体信息,这样你就不会开始做这样的事情你正在尝试现在要做的 - 引入状态吧。