我有包含多个 Lambda 函数的微服务。
如何在这些函数之间共享相同的代码?
让我们假设我有以下结构:
handler
|
|______ a-handler.js
|
|______ b-handler.js
|
repository
|
|______ users-repository.js
我知道 AWS 建议使用 Lambda Layers,但我可以简单地将相关代码导入到 Lambda 函数吗?
像这样:
用户存储库.js:
export getUser(...){...};
export createUser(...){...};
a-handler.js:
import {getUser} from '../repository/users-repository.js';
/.../
b-handler.js:
import {createUser} from '../repository/users-repository.js';
/.../
构建过程无论如何都会进行 Tree Shaking 并从 Lambda 函数中删除未使用的代码,因此基本上它只会使用和构建相关代码。
那么 Lambda Layers 有什么好处?
谢谢!
最佳答案
没有强制要求使用层来共享代码。我最终会在包含之上添加一层的原因是:
- 运营团队应该能够独立于构建流程来更新单独版本化的项目
- 共享项目太大,包含它会导致 bundle 大小过大
- 无需部署系统的共享代码(Pulumi、Terraform 等)
包括或多或少具有相反的一组使用场景:
- 不会更改或独立于 lambda 进行版本控制的依赖项
- 小的依赖关系不值得增加层的复杂性
关于amazon-web-services - 如何在多个Lambda函数之间共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74709271/