1

我已经开始AWS Lambda用于一个小型网站。我将有大约 10-15 个 lambdas 连接到不同的触发器(API、SQS 等)

我们将AWS SAM用于创建我们的堆栈和NodeJS大多数 lambda 方法。

我进行了很多搜索以找到 node_modules 的最佳实践,但无法真正得出结论。大多数提议的解决方案都包括层,我无法真正理解我应该如何构建这些层以及它们如何与本地测试一起工作。

问题:

  1. “按原样”使用 node_modules 和将 node_modules 目录转换为层之间有什么区别?它会有益于性能吗?只有在加载冷 lambda 时才会受益吗?

  2. 如果层是解决方案,我是否应该为所有 lambda 使用一层(例如,某种 CI 脚本会在部署前“合并”它们)?或者使用所有 lambdas 中所有相同的 node_module 版本创建一个单一存储库解决方案?这似乎有点不干净,但我在寻找最佳解决方案时看到了这样的建议。

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

4

1 回答 1

2

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

于 2019-01-31T09:15:47.660 回答