【问题标题】:How to prevent code duplication in lambda?如何防止 lambda 中的代码重复?
【发布时间】:2019-05-15 10:04:14
【问题描述】:

我有一些包含重复代码块的 Nodejs 函数。 我知道我们可以将 lambda 层用于共享库,但我想知道,是否也可以共享代码? 例如,其中一个重复的代码如下所示

const connection = mysql.createPool({
  host: process.env.DB_HOST,
  database: process.env.DB_NAME,
  user: process.env.DB_USER,
  port: process.env.DB_PORT,
  password: process.env.DB_PASSWORD
});

我想把这个块导入多个函数而不是一遍又一遍地写

【问题讨论】:

    标签: node.js aws-lambda aws-lambda-layers


    【解决方案1】:

    除了使用层(这可能只是共享代码的过度杀伤力),您还可以使用另外两个路由器:

    • 您可以将共享代码放在一个单独的文件中(这样您的项目中就会有 3 个文件 - lambda1.jslambda2,jsshared.js)。然后,您需要将您的 lambda1 打包为一个包含 lambda1.jsshared.js 的 zip 文件。
    • 您可以将所有代码保存在一个文件中(例如alllambda.js)并配置不同的处理程序函数(exports.handler1exports.handler2) - 当您配置 AWS Lambda 函数时,Lambda1 具有 Handler配置为handler1Lambda2 具有handler2。这显然不能很好地扩展(并且有共享初始化代码的额外缺点)。

    【讨论】:

    • 如果我将 lambda 层与库和代码一起使用会怎样?
    • Shared.js 将与案例 1 中的所有 lambda 函数一起复制。因此代码重复仍然存在。
    【解决方案2】:

    一种选择是使用所有共享代码创建一个单独的 Lambda。然后,您可以从所有其他 lambda 中调用共享 Lambda,或使用“主”lambda 来处理来回。

    【讨论】:

      猜你喜欢
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 2012-10-03
      相关资源
      最近更新 更多