【问题标题】:How to share database connection between different lambda functions如何在不同的 lambda 函数之间共享数据库连接
【发布时间】:2017-12-11 21:58:00
【问题描述】:

我通过some articles 了解如何利用 lambda 的容器并在多个实例之间共享诸如数据库连接之类的东西,但是,如果我有多个 lambda 函数访问数据库并且我想让它们共享同一个连接,我知道这些函数相互调用,例如API网关调用authenticator lambda函数,然后调用insert user函数,这两个函数都调用数据库,它们可以共享同一个连接吗?

我正在使用 NodeJS,但如果它支持的话,我可以使用其他语言。

【问题讨论】:

  • 不可能。即使使用容器重用(您链接到的文章),您也不能指望后续调用共享相同的连接,并发调用肯定不会共享连接。
  • 感谢@MarkB 确认我的怀疑,所以我认为最好的做法是将所有数据库查询放在同一个 lambda 函数中以最小化连接,对吗?

标签: node.js lambda aws-lambda


【解决方案1】:

您不能在实例之间共享连接。并发调用不使用相同的实例。 但是,您可以在调用之间共享连接(可能在同一容器/实例上执行)。但是,您必须检查您的连接是否(仍然)打开,在这种情况下您可以重复使用它。否则打开一个新的。

如果您担心与数据库的连接过多,只需在退出 lambda 时关闭连接并每次实例化新连接即可。如果这是一个问题,您可能还需要考虑并发性。几周前,AWS 增加了在每个函数的基础上控制并发的可能性,这很简洁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2015-04-22
    • 1970-01-01
    • 2023-03-04
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多