【发布时间】:2019-01-31 17:15:47
【问题描述】:
我已经开始在一个小型网站上使用AWS Lambda。我将有大约 10-15 个 lambdas 连接到不同的触发器(API、SQS 等)
我们将使用AWS SAM 来创建我们的堆栈,并使用NodeJS 来创建大多数 lambda 方法。
我进行了很多搜索以找到 node_modules 的最佳实践,但无法真正得出结论。大多数提议的解决方案都包含层,我无法真正理解我应该如何构建这些层以及它们如何与本地测试一起工作。
问题:
“按原样”使用 node_modules 和将 node_modules 目录转换为层之间有什么区别?它会有益于性能吗?只有在加载冷 lambda 时才会受益吗?
如果层是解决方案,我是否应该为所有 lambda 使用一层(例如,某种 CI 脚本会在部署前“合并”它们)?或者使用所有 lambdas 中所有相同的 node_module 版本创建一个单一存储库解决方案?这似乎有点不干净,但我在寻找最佳解决方案时看到了类似的建议。
我正在寻找一种不会损害性能的体面解决方案,以及在部署之前在本地工作和测试我们的代码的选项。..
【问题讨论】:
-
如果您将节点模块与代码捆绑在一起,您将无法直接从 aws-cli 读取/编辑代码,因为它很大。如果您可以不使用该选项,请继续将所有内容捆绑在一起。 AS 即使您为模块创建了一个层,您以后仍然可能会遇到较大的项目。
标签: node.js amazon-web-services aws-lambda aws-sam