如何使用NodeJS在AWS Lambda上处理node_modules?

时间:2019-01-31 08:51:05

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

我已经开始在小型网站上使用AWS Lambda。我将有大约10-15个lambda连接到不同的触发器(API,SQS等)

我们将使用AWS SAM创建堆栈,并使用NodeJS用于大多数lambda方法。

我已经进行了很多搜索,以找到关于node_modules的最佳实践,但无法真正得出结论。提出的大多数解决方案都包含层,而我真的不明白如何构建这些层以及它们如何与本地测试并行工作。

问题:

  1. “按原样”使用node_modules与将node_modules目录转换为图层有什么区别?它会明智义演?将仅当装入冷拉姆达受益?

  2. 如果解决方案是多层,我应该为所有lambda使用一层吗(例如,某种CI脚本,可以在部署前“合并”它们)?或创建使用所有所有lambda表达式相同node_module版本单回购的解决方案?这似乎有点不干净,但在寻找最佳解决方案时我看到了类似的建议。

我正在寻找一种不会损害性能的解决方案,并希望在部署它之前可以在本地工作并测试我们的代码。

1 个答案:

答案 0 :(得分:1)

将库分隔为一层将在所有功能中共享它们,从而减小了程序包的大小并缩短了启动时间。多少取决于您的应用程序,但是我要说的是,对于少数几个功能,除非您使用大量的库,否则将它们捆绑在部署包中会更简单。如果它具有更多的功能和库配置,则可以帮助创建lambda层,但我从一开始就不会这样做。