代码之家  ›  专栏  ›  技术社区  ›  Amir Popovich

我应该如何使用NodeJS处理AWS Lambda上的node\u模块?

  •  0
  • Amir Popovich  · 技术社区  · 5 年前

    AWS Lambda 对于一个小网站。我将有大约10-15个lambda连接到不同的触发器(API,SQS等)

    AWS SAM 创造我们的堆栈和 NodeJS 对于大多数lambda方法。

    为了找到node\u模块的最佳实践,我搜索了很多,但都没有得出结论。大多数建议的解决方案都包含层,我无法真正理解应该如何构建这些层,以及它们如何与本地测试并行工作。

    1. 使用node\u modules“原样”和将node\u modules目录转换为层有什么区别?从性能角度看,它是否有好处?只有在装载冷lambda时它才会受益吗?

    2. 如果层是解决方案,我是否应该为所有lambda使用一个层(例如,某种将它们“合并”到预部署中的CI脚本)?或者在所有lambda中使用相同的node\u模块版本创建mono repo解决方案?这似乎有点不干净,但我看到了这样的建议,同时寻找最好的解决方案。

    我正在寻找一个体面的解决方案,不会损害性能明智的选择,并在本地工作和测试我们的代码之前部署它。。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Julio Faerman    5 年前

    在一个层中分离库将在您的函数中共享它们,从而减少包的大小和冷启动时间。这在多大程度上取决于您的应用程序,但我要说的是,对于一些函数,除非您使用很多库,否则只需将它们捆绑到部署包中就更简单了。如果它扩展到更多的函数和库配置,它可以帮助创建lambda层,但我不会从一开始就这么做。