seb*_*deu 4 aws-lambda aws-lambda-layers
我们在 Node.js (v10.x) 中有几个 AWS Lambdas,其中一些有一些“特定的大”依赖项,这些依赖项并未在所有这些依赖项之间共享。例如,我们有一个依赖firebase-adminNPM 包的“Authorizer”函数,这是唯一使用它的 Lambda。
为了简化维护,目前我们有一个包含所有依赖项的层。将依赖项拆分为多个层有什么好处吗?我的假设是更大的层会增加“冷启动”时间。但是,与层的大小相关的惩罚有多大?我在 AWS 文档中找不到关于此的任何参考。
类似的问题,但跨越不同的语言。如果我们的 Lambda 使用多种语言(例如 Node 和 Python),我是否可以有一个包含两种语言依赖项的 Lambda 层?我想这是一个更简单的选择,因为 Python 依赖项实际上永远不会被 Node.js 代码使用。但是,我想阅读一些 AWS 推荐的管理层的最佳实践。
一个 Lambda 及其所有层都解压缩应该小于 250 MB,如果您接近这个大小,请考虑拆分层并仅使用您需要的层。
您可以在一层中混合不同语言的依赖项,因为它只是您可以在 Lambda 运行时中重用的文件。正如你所说,它会增加冷启动,每个使用公共层的功能都会独立下载该层。因此,如果您更容易在一层中维护所有内容,请保持原样,但是,一般而言,加载您不打算使用的代码并不是一个好习惯。
另一方面,每个函数最多只能有 5 层,因此将公共代码和依赖项拆分为小层,您可能很快就会达到这个限制。
| 归档时间: |
|
| 查看次数: |
832 次 |
| 最近记录: |