【问题标题】:AWS Lambda Dynamic DB Switching Singelton (Node)AWS Lambda 动态数据库切换 Singelton(节点)
【发布时间】:2019-02-07 06:25:43
【问题描述】:

我试图通过将代码保留在处理程序之外来利用 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 执行上下文工作。想法?

【问题讨论】:

    标签: node.js amazon-web-services aws-lambda singleton


    【解决方案1】:

    您可以对其进行硬编码(或通过环境变量提供),也可以不进行。如果可以,则将其从 then 处理程序中拉出,并且不会每次都执行。如果您不能,正如您所提到的,那么您要做的就是使 lambda 有状态。 Lambda 被设计为无状态的,AWS 有意不公开有关底层容器的特定信息,这样您就不会开始做您现在尝试做的事情——向它引入状态。

    【讨论】:

      猜你喜欢
      • 2019-04-02
      • 2012-04-12
      • 2016-12-17
      • 2019-12-20
      • 2015-11-25
      • 2015-03-17
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多