amazon-web-services - 如何在多个Lambda函数之间共享代码?

标签 amazon-web-services aws-lambda serverless aws-lambda-layers

我有包含多个 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 有什么好处?

谢谢!

最佳答案

没有强制要求使用层来共享代码。我最终会在包含之上添加一层的原因是:

  1. 运营团队应该能够独立于构建流程来更新单独版本化的项目
  2. 共享项目太大,包含它会导致 bundle 大小过大
  3. 无需部署系统的共享代码(Pulumi、Terraform 等)

包括或多或少具有相反的一组使用场景:

  1. 不会更改或独立于 lambda 进行版本控制的依赖项
  2. 小的依赖关系不值得增加层的复杂性

关于amazon-web-services - 如何在多个Lambda函数之间共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74709271/

相关文章:

amazon-web-services - 如何在 AWS CDK 中引用现有的 VPC 终端节点?

amazon-web-services - 使用 Lambda 函数运行 AWS Athena 的查询

node.js - 如何让 Lambda 函数使用 ANY 方法从 ApiGateway 获取 httpmethod?

python - 如何使用 Python 从 cloudwatch 获取指标?

go - 如何使用备用 go.mod 文件进行本地开发?

node.js - 如何在Azure中使用Node JS功能上传文件

python - AWS CloudFormation - 如何上传一些 python/flask 代码

Amazon RDS 中的 MySQL 表锁定问题

amazon-web-services - 找不到 Golang 的 API 网关映射模板

amazon-web-services - AWS SAM - 如何处理大量端点